• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

polynomial feature 엔지니어링에 대해서 질문있습니다.

21.01.07 18:38 작성 조회수 84

0

선생님 안녕하세요. 강의 잘 듣고 있습니다.

 

LinearRegression에서 fit_intercept를 False로 지정하면 절편을 0으로 지정하고,

PolynomialFeatures(degree=2)에서 include_bias를 True로 하면 ,

[1, x1, x2 , x1^2, x1x2, x2^2]을 생성하고,

False로 지정하면,

[x1, x2, x1^2, x1x2, x2^2]로 1 값이 없이 피쳐 엔지니어링 되므로 절편값이 0인 모델로 만드는 것이라고 이해했습니다.

그러면 (PolynominalFeatures(include_bias=False) ,LinearRegression(fit_intercept=False) )와 

 (PolynominalFeatures(include_bias=True) ,LinearRegression(fit_intercept=False) ) 모두 절편이 없는 회귀 모형이기 때문에 결과값이 같아야한다고 생각해야하는데 왜 결과값이 다르게 나오는건가요?

아니면 include_bias=True로 설정하고,  fit_intercept=False로 지정하는 것 자체가 모순이되기 때문에 R2 값이 절대적으로 낮게 나오는건가요?

답변해주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

1

안녕하십니까,

저도 동일한 결과가 나올것이라 생각했는데, 말씀하신대로 다른 결과가 나오는 군요.

여러가지 테스트를 해봐았는데, 확실한 결론은 아니지만 사이킷런에서 Polynomial의 include_bias가 True이고 Linear Regression의 fit_intercept가 False면 회귀식의 절편은 0 이지만 Polynomial의 절편 값을 반영하기 위해서 회귀 계수값을 조금 보정하기 때문에 결과가 다른 것으로 생각됩니다. 

제 생각엔 Polynomial 에서는 include_bias는 False로 하고, 절편의 여부는 Linear Regression에서 조정하는 게 좀 더 맞는 방법인것 같습니다.

저도 생각치 못했는데, 다시 생각해볼 기회를 준 좋은 질문 감사합니다.