콘텐츠로 건너뛰기

다항 회귀 (Polynomial Regression)

지난 글에서는 비선형 회귀 중 단조 증가라는 특별한 케이스일 때 적용하는 등회귀에 대해 알아보았다(등회귀 알아보기). 이번에는 X와 Y의 관계가 비선형이면서 X가 증가할 때 Y의 추세가 단조롭지 않은, non-monotonous 문제를 해결하는 방법에 대해 알아보자.

■ 비선형(non-linear) & 비단조(non-monotonous) 문제란?

우리가 지금 해결해야할 문제는 다음 그림과 같이 X와 Y의 관계가 비선형이고, X 값이 증감과 Y값의 증감에 어떤 패턴도 보이지 않는 경우를 말한다.

■ 다항 회귀(Polynomial Regression)로 변환

해결법 중 하나는 기존 선형 회귀에 새로운 속성(attribute)을 추가하는 것이다. 이를 통해 우리는 보다 복잡한 비선형 데이터 셋에 선형 회귀에서 사용하던 테크닉을 똑같이 사용할 수 있다. 새로 추가하는 속성은 원래 속성 X 값에 로그(log), 지수(exp), 제곱근(square root), 제곱(square) 등을 취하여 변환한 형태가 있다.

예를 들어 데이터 셋에 속성 X가 하나가 있을 때, 새로운 속성 X의 제곱(X2)을 추가하여 다항식으로 만들어준다. 이러한 속성은 파이썬 Scikit-learn의 라이브러리 중 PolynomialFeatures를 사용해서 쉽게 변환할 수 있다.

그 외에도 다음의 속성들을 새로 추가할 수 있다.
– 원래 속성 X
– 다항식 변환
y = β0 + β1x+ β2x2 + β3x3
– 교호작용(interaction) 속성으로의 변환:
x3 = x1 ㆍ x2
– 기저 확장(Basis Expansion)

다항 회귀는 속성과 계수의 관계가 선형이고, 다항식의 항은 속성이므로 종종 다중 선형 회귀(multivariate linear regression)의 특별한 케이스로 불리기도 한다.

■ 다항 회귀의 차수(degree)와 속성의 개수 관계

쉽게 생각해서 다항 회귀는 속성을 추가하여 선형 모델을 좀 더 복잡하게 표현할 수 있도록 확장한다고 볼 수 있다. 다항식의 “차수(degree)”에 따라 추가하는 속성의 개수가 달라진다.

  • 속성: 1개(a), 차수: 3 —> a2, a3 추가
  • 속성: 3개(a, b, c), 차수: 2 —> a2, b2, c2, ab, bc, ca 추가
  • 속성: 3개(a, b, c), 차수: 3 —> a3, b3, c3, a2b, a2c, b2a, b2c, c2a, c2b, abc 추가

차수가 높아지면 새로운 속성도 기하급수적으로 늘어나 계산 시간이 오래걸리고 과적합(overfitting) 문제가 생긴다. 따라서 보통 2차식 또는 3차식을 사용한다. 아래는 차수가 늘어남에 따라 다항 회귀식이 어떻게 그려지는지 시각적으로 보여준다.

Image for post
출처: https://towardsdatascience.com/polynomial-regression-bbe8b9d97491

■ 다항 회귀의 평가

다항 회귀 역시 MSE(평균 제곱 오차, Mean Squared Error) 등으로 평가한다. MSE가 낮으면서도 과적합 문제가 없는 모델을 선택하는 것이 중요하겠다.