데이터 분석

PolynomialFeatures()객체의 'include_bias=True'

temporubato108 2024. 9. 4. 17:48

PolynomialFeatures()객에는 두 가지 인자가 사용된다.

poly = PolynomialFeatures(degree, include_bias) 라는 형태인데,

poly = PolynomialFeatures(degree = 2, include_bias = True) 주로 이런 형태로 사용되고, include_bias인자가 True로 설정될 시, 회귀모델에 편향변수()를 추가하게 된다.

해당 인자에 대해서 공부하면서 몇 가지 의문점이 들었고, 이를 해소하는 과정을 정리해보았다.

 

PolynomialFeatures란?

이 모듈은 다항 회귀를 위해 입력 데이터를 변환하는 데 사용된다. 단순한 선형 모델로는 해결할 수 없는 비선형 패턴을 잡아내기 위해 데이터를 다항식 형태로 확장하는 역할을 한다.

 

include_bias의 역할

PolynomialFeatures를 사용할 때, include_bias라는 파라미터가 있다. 이 파라미터는 다항식으로 확장된 특성 행렬에 편향(bias)을 위한 열을 추가할지 여부를 결정한다. 기본값은 True로 설정되어 있으며, 이 경우 모든 샘플에 대해 1로 채워진 특성(열)이 추가된다.

poly_feat = PolynomialFeatures(degree=2, include_bias=True)
poly_X = poly_feat.fit_transform(X)

 

예를 들어, include_bias=True로 설정하고 데이터를 변환했을 때 출력된 결과는 다음과 같다.

[[1.         2.64644051 7.00364738]
 [1.         3.1455681  9.89459867]
 [1.         2.80829013 7.88649344]]

 

여기서 첫 번째 열이 바로 1로 채워진 값이다.

 

'1'의 의미와 편향 변수

처음에 이 '1'이 무엇을 의미하는지 잘 이해가 되지 않았다.

일단 배우던 교재에서 '모든 제곱이 0이 되는 경우 편향변수를 추가한다'라는 표현이 옳지 않았던 듯 하다. 1로 채워진 편향 항은 "모든 거듭제곱이 0인 경우"를 나타내기보다는, 모든 샘플에서 동일한 값(즉, 1)을 가지는 추가적인 특성이다. 이 특성은 모델이 입력 특성과 무관하게 일정한 상수(즉, 절편 β0)를 학습할 수 있게 하기 위해 추가된다.

 

여기서 또 하나의 의문점이 들었는데, 그러면 항상 '1'이 채워지는 특성 열로 인하여 모델의 편향변수 또한 항상 '1' 또는 일정한 값으로 생성되어버리는 것 아닌가 하는 의문이 들었다. 결론은, 이 '1' 값 자체가 모델의 편향 변수가 되는 것이 아니라, 모델이 학습 과정에서 편향 변수(절편 항)를 학습할 수 있도록 하기 위한 추가적인 특성일 뿐이라는 것이다. 대신, 회귀 모델이 학습 과정에서 이 '1'로 채워진 특성 열을 바탕으로 절편 항을 학습한다. 즉, 모델의 편향 변수는 학습 과정에서 최적화된 값으로 결정된다.

 

한마디로, include_bias=True로 설정하면, 이 '1'로 채워진 특성 열이 절편(intercept) 또는 편향(bias) 항을 학습할 수 있도록 돕는 역할을 한다.

 

결론

PolynomialFeatures에서 include_bias=True로 설정하면, 다항식으로 확장된 특성 행렬에 '1'로 채워진 열이 추가된다. 이 열은 회귀 모델이 절편을 학습하는 데 사용되며, 모델이 학습한 후에는 절편이 최적화된 값으로 결정된다. 다시 말해, 이 '1'이 모델의 편향 변수가 되는 것은 아니지만, 편향 변수를 학습할 수 있게 도와주는 중요한 역할을 한다.