다항회귀는 선형회귀와 유사하지만 조금 차이점이 있고 비선형 회귀의 종류중 하나라고 볼 수 있다. 다항회귀에 대해서 알아보자.
다항 회귀에 대해서 자세히 알아보기 전, 비선형 회귀에 대해서 알아보자.
다항식 :
- : 종속 변수
- : 독립 변수(또는 특성)
- $ β_0, β_1, β_3, ..., β_n $ : 모델의 계수(coefficients)이며, 각각 상수항, 의 1차, 2차, ..., 차 항의 계수이다.
- : 다항식의 차수(degree)
- : 오차 항으로 모델이 설명하지 못하는 잡음을 나타냄.
이 수식은 의 다항식 형태로, 의 여러 차수를 사용하여 회귀 모델을 구성하는 것을 나타낸다. 차 다항식이므로 의 승까지의 항이 포함된다.
예를 들어, 2차 다항 회귀의 경우, 위의 수식은 다음과 같이 변형될 수 있다.
이것은 2차 다항식 모델로, 의 1차 및 2차 항만을 사용하여 회귀 모델을 표현한다.
다항회귀는 비선형회귀에 포함되는 개념이다.
다항 회귀는 비선형 회귀 중의 하나로, 비선형 관계를 모델링하는 방법 중 하나이다. 비선형 회귀는 선형 회귀와는 달리 종속 변수와 독립 변수 간의 관계가 선형적이지 않은 경우를 다루는 개념이다.
다항 회귀는 선형 회귀의 형태를 그대로 사용하면서, 독립 변수의 거듭제곱 항을 추가하여 모델을 구성한다. 이를 통해 데이터의 비선형적인 패턴을 더 잘 설명할 수 있다. 다항 회귀에서는 일반적으로 독립 변수 의 제곱항, 세제곱항과 같은 고차항을 추가하여 모델링한다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x = np.array((1,2,3,4,5))
y = np.array((4,2,1,3,7))
x = x[:, np.newaxis] # 차원 확대
# feature에 항(다항식 특징)을 추가
poly = PolynomialFeatures(degree=2, include_bias=False)
x2 = poly.fit_transform(x) # 특징행렬을 생성. x를 나타낸 값, x**2 값 (degree에 따라 달라짐)
print(x2)
model2 = LinearRegression().fit(x2, y)
ypred2 = model2.predict(x2)
print('ypred2 : ',ypred2)
plt.scatter(x, y)
plt.plot(x, ypred2, c='blue')
plt.show()
이 코드는 다항 회귀를 사용하여 주어진 데이터에 대해 회귀 모델을 학습하고 시각화하는 과정을 나타낸다.
먼저, 코드에서는 NumPy 배열을 사용하여 x와 y 데이터를 정의하고 있다. 그리고 x 배열을 2차원 배열로 변환하고 있다. 다음은 PolynomialFeatures
를 사용하여 다항식 특징을 추가한다. 이 부분에서 degree=2
로 설정하여 2차 다항식으로 변환되는 것을 확인할 수 있다.
그 후에 LinearRegression 모델을 생성하고, fit()
메서드를 사용하여 다항식 특징을 가진 x2와 y 사이의 관계를 학습한다. 학습된 모델을 사용하여 예측을 수행하고, 이를 ypred2
에 저장한다.
마지막으로 plt.scatter()
함수를 사용하여 원본 데이터를 점으로 나타내고, plt.plot()
함수를 사용하여 다항 회귀 모델의 예측값을 선으로 나타내어 시각화하고 있다.
이를 실행하면, 원본 데이터 점들과 그에 맞는 회귀 모델의 예측값인 파란색 선이 나타나는 그래프를 확인할 수 있다. 위에 첨부한 사진 중 오른쪽과 같은 결과가 나올 것이다.