[머신러닝 - 이론] Polynomial Regression (다항 회귀)
앞의 글을 읽으시면 이해에 도움이 됩니다.
2022.10.18 - [Computer Science/머신러닝] - [머신러닝 - 이론] Linear Regression (선형 회귀)
1. 다항 회귀란?
만약 가지고 있는 데이터가 직선보다 복잡하다면 어떨까요?
여전히 linear model이 nonlinear한 data에 적합할까요?
다항 회귀는 항이 제곱, 세제곱 형태일 때를 의미하며, 선형적으로 분리하는 것이 어렵습니다.
하지만 신기하게도 비선형 데이터를 학습하는 데 선형 모델을 사용할 수 있습니다.
간단한 방법은 각 특성의 거듭제곱을 새로운 특성으로 추가하고, 이 확장된 특성을 포함한 데이터셋에 선형 모델을 훈련시키는 것입니다.
예를 들어서 어떤 데이터의 분포가 \(x^2 + x\)를 따른다고 가정해봅시다.
특성은 x 단 하나 입니다.
하지만 그 특성을 제곱하는 연산이 있기 때문에 해당하는 \(x^2\)을 \(x_1\)라고 생각해봅시다.
따라서 해당 특성 \(x_1\)을 데이터에 추가해주면 됩니다.
그렇게 된다면 선형 회귀는 결국엔 \(x_1 + x\)를 학습하게 될 것이고, 이것이 바로 다항 회귀라고 합니다.
2차 방정식 형태를 가지고 있는 비선형 데이터가 있다고 가정합시다.
확실히 직선은 이 데이터에 잘 맞지 않을 것입니다.
사이킷런의 PolynomialFeatures를 사용하면 훈련 데이터를 변환할 수 있습니다.
결론적으로 훈련 데이타를 변환한다면, \(x\) 특성만 있던 데이터에 \(x^2(x_1)\)의 특성이 추가되고,
이를 통해 학습을 하면 앞선 선형 회귀처럼 각 특성에 맞게 파라미터가 나오게 됩니다.
아마 경사 하강법을 사용한다면 \(0.99 * x_1 + 0.99 * x\)라고 예측할 수 있겠네요.
(코드는 나중에, 본 예시에서는 degree = 2로 설정하였음)
선형 회귀처럼 보이지 않겠지만, 선형 회귀입니다.
다만 차원이 휜 것 이라고 생각하시면 편할 것 같습니다....(정확한 건 아님)
이때 degree가 2가 아니라 더 높은 차원 혹은 낮은 차원에 맞추면 어떻게 될까요?
다음 글에서는 다른 차원에 모델을 맞췄을 때의 현상에 대해서 작성하도록 하겠습니다.
감사합니다.
지적 환영합니다.