[Machine Learning] 다항 회귀

다항 회귀

입력 변수와 목표 변수의 관계를 여태 직선으로 나타냈는데,
사실 그 관계를 가장 잘 나타내는 게 직선이 아닐 수도 있습니다.

단일 속성 다항 회귀

다항 회귀도 두 가지로 나뉘는데,
속성이 하나인 경우랑 속성이 많은 경우입니다.

속성이 많으면 다중 다항 회귀라고 하는데,
우선 간단하게 속성이 하나인 경우부터 보겠습니다.

가설 함수가 이차 함수라면 아래와 같이 쓸 수 있습니다.

\[ h_{\theta}(x) = \theta_{0} + \theta_{1}x + \theta_{2}x^{2} \]

선형 회귀를 할 때랑 마찬가지로 할 일은
학습 데이터에 잘 맞는 \(\theta\)를 찾는 것입니다.

그런데 위 식은 \( h_{\theta}(x) = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2} \) 비슷하게 다룰 수 있습니다.
아래 식은 입력 변수가 두 개인 다중 선형 회귀 가설 함수이고,
위 식은 2차항 회귀 가설 함수인데,
\(x\)와 \(x_{1}\), \(x^{2}\)과 \(x_{2}\)를 똑같이 취급할 수 있다면 사실상 같은 형태라고 볼 수 있습니다.

예를 들어, 아래와 같은 데이터가 있다면,

집 크기 집 가격
10 1
20 3
30 5
25 3.5
15 1

가상의 열을 추가해서 입력 변수가 두 개인 것처럼 바꿔보겠습니다.

집 크기 집 크기2 집 가격
10 100 1
20 400 3
30 900 5
25 625 3.5
15 225 1

이렇게 바꿔준다면 이 데이터를 입력 변수가 두 개인 것처럼 다룰 수 있습니다.

다중 다항 회귀

입력 변수가 여러 개일 때 다항 회귀를 하면 다중 다항 회귀라고 합니다.

아래와 같은 데이터가 있을 때,

x1 x2 x3 y
10 1 1 1
20 2 0.5 3
30 3 0.3 5
25 3 1 3.5
15 2 3 1

다중 다항 회귀를 2차항 회귀 가설 함수를 이용해서 한다면,
나올 수 있는 모든 2차항 컬럼을 새로 추가해주면 됩니다.

위의 데이터에서는 나올 수 있는 2차항이
x1x2, x2x3, x3x1, x12, x22, x32이므로 총 6개의 컬럼이 추가되므로
입력 변수가 9개인 다중 선형 회귀라고 생각해주면 됩니다.

다항 회귀의 힘

선형 회귀에서는 각 입력 변수들을 고려하긴 했지만 입력 변수들간의 관계는 고려하지 않았습니다.
그러나 다항 회귀에서는 입력 변수들간의 관계까지 고려하기 때문에 더 정확한 결과를 얻을 수 있습니다.

scikit-learn을 이용한 간단한 다항 회귀

Updated:

Leave a comment