두 변수 같의 관계를 직선보다는 곡선으로 설명하는 것이 적합할 때가 있다. 다항 함수를 사용하면 보다 복잡한 곡선 형태의 회귀선을 표현할 수 있다.
다항회귀분석(polynomial regression)은 2차 함수 이사으이 다항 함수를 이용하여 두 변수 같의 선형관계를 설명하는 알고리즘이다. 예를 들면, 2차함수는 종속 변수 Y와 독립 변수 X 사이의 관계를 Y = aX^2 + bX + c 로 펴시하여 설명한다. 다항회귀분석 모형은 학습을 통해 3개의 계수 a, b, c 를 찾아서 모형을 완성한다.
모형 학습 및 검증
sklearn 라이브러리에서 선형회귀분석을 위한 LinearRegression() 함수와 다항식 변환을 위한 PolynomialFeatures() 함수를 불러온다. 그리고 polynomialFeatures(degree=2) 명령으로 2차항 객체인 poly를 생성한다. 독립 변수로 사용할 X_train 데이터를 fit_transform() 메소드에 전달하면 2차항 회귀분석에 맞게 변환된다. X_train의 1개 열이 X_train_poly에서는 3개의 열로 늘어난다.
LinearRegression() 함수로 회귀분석 모형 객체를 생성하여 변수(pr)에 저장한다. 2차항으로 변환된 훈련 데이터를 fit() 메소드에 전달하여 pr 모형을 학습시킨다. 모형 학습이 완료되면 검증 데이터를 사용하여 모형의 예측 능력을 편가한다. 검증 데이터 또한 poly 객체를 사용하여 2차항으로 변환해주어야 한다. score() 메소드로 모형의 결정계수를 구한다.
훈련 데이터의 분포와 학습된 모형의 회귀선을 그래프로 출력했다. 2차항으로 변환된 검증 데이터(X_test_poly)를 predict() 메소드에 입력하여 예측한 결과인 Y_hat_test 를 'r+'로 표시하면 회귀선이 된다.
모형이 예측한 결과와 실제 값을 비교한다. 데이터셋의 전체 X 데이터를 2차항으로 변환하여 predict() 메소드에 전달한다. 여기서 모형이 예측한 값을 Y_hat에 저장한다. Seaborn 라이브러리의 distplot()함수를 사용하여 실제 값 Y와 예측값
Y_hat의 분포 차이를 비교한다.
앞에서 공부한 단순회귀분석의 결과와 비교할 때 데이터가 어느 한쪽으로 편향되는 경향이 상당히 감소한 것을 알 수 있다. 따라서 더 적합한 모형이라고 볼 수 있다.