우당탕탕 개발일지

[혼공머신] 3-3 다중 회귀, 특성 공학, 사이킷런의 변환기 클래스 PolynomialFeatures 본문

인공지능

[혼공머신] 3-3 다중 회귀, 특성 공학, 사이킷런의 변환기 클래스 PolynomialFeatures

민아당긴아 2024. 7. 14. 21:51

💡 다중 회귀

여러 개의 특성을 사용한 선형 회귀를 다중 회귀라고 한다.

종속변수가 2개, 독립변수가 1개, 총 3개의 변수를 표현하다보니 3차원에 그려지게 되고,

특성이 2개면

1) 평면을 학습한다.

2) 회귀 방정식은 다음과 같다.

 

💡 다중 회귀 vs 다항 회귀

 

  • 목적:
    • 다중회귀: 여러 독립 변수가 종속 변수에 미치는 영향을 분석.
    • 다항회귀: 하나의 독립 변수와 종속 변수 간의 비선형 관계를 설명.
  • 변수 형태:
    • 다중회귀: 여러 개의 독립 변수
    • 다항회귀: 하나의 독립 변수의 여러 거듭제곱 항
  • 수식:
    • 다중회귀: 선형 조합 

    • 다항회귀: 비선형 조합

 

 

 

💡 특성 공학

기존의 특성을 사용해 새로운 특성을 뽑아내는 작업

파이썬에서는 사이킷런의 변환기 PolynomialFeatures 클래스를 이용해서 변환기를 만들고,

변환기로 특성 공학을 진행할 수 있다.

 

💡 사이킷런의 변환기 PolynomialFeatures

변환기: 특성을 만들거나 전처리하기 위해 사이킷런에서 제공하는 클래스

변환기 클래스: PolynomialFeatures(sklearn.preprocessiong 패키지에 포함)

변환기 메서드: fit(), transform()

 

PolynomialFeatures 클래스는 1) 각 특성을 제곱한 항을 추가하고 2) 특성끼리 서로 곱한 항을 추가한다.

예를 들어 이렇게 특성이 2, 3  총 2개 있다면 

1) 각 특성을 제곱한 항을 추가 ➡️ 4, 9 추가

2) 특성끼리 서로 곱한 항을 추가 ➡️ 6 추가

그리고 선형 방정식의 절편을 항상 값이 1인 특성과 곱해지는 계수라고 보고, 1이 추가된다.

절편을 위한 항(1)을 제거하려면 include_bias = False라는 매개변수를 써주면 된다.

 

💡 농어의 특성 3개에 대해 특성 공학

이 방식을 농어 데이터에 적용하면 아래와 같다.

특성의 개수가 3개에서 9개로 변했다.

1단계: 변환기 객체 만들기

2단계: 새로 만들 특성 조합 찾기

3단계: 새 특성 조합 반환

💡 다중 회귀 모델 훈련하기

이제 특성 공학을 통해 특성도 9개로 늘어났으니 다중 회귀 모델을 훈련하면 된다.

훈련시키는 방법은 이전 장에서 배운 선형 회귀 모델 훈련 방식과 동일하다.

농어의 길이 하나만, 즉 특성을 하나만 사용하였을 때 발생했던 과소적합 문제가 사라졌다.

 

특성을 추가하는 방법

특성을 더 추가하고 싶으면 PolynomialFeatures 클래스의 degree 매개변수를 사용하면 된다.

5제곱까지 특성을 만들고 싶으면 degree= 5로 매개변수를 지정하면 된다.

특성의 개수를 늘리면 

1) 모델의 훈련 세트에 대한 정확도가 늘어나지만, 너무 세부적

2) 따라서 실제 환경(테스트 세트)에서는 정확도가 떨어지는 과대적합 문제 발생

즉, 모델의 점수를 평가해볼 때, 훈련 세트에 대한 점수는 1에 가깝지만 테스트 세트는 음수가 나오는 문제가 발생한다.

따라서 특성의 개수가 너무 많아도 좋지 않다.