티스토리 뷰

728x90

데이터가 선형이라면 선형 모델을 사용하면 된다.

하지만 만약 아래와 같이 데이터가 비선형이면 어떻게 해야 할까?

신기하게도 비선형 데이터를 학습하는데 선형 모델을 사용할 수 있다.

바로 기존의 데이터에 각 특성의 거듭제곱을 새로운 특성으로하여 추가된 데이터에 선형 모델을 훈련시키는 것이다. 이것을 다항 회귀라 한다.

특성의 거듭제곱을 구하고 이를 새로운 특성으로 하여 기존 데이터에 추가하는 것은 어려운 일이 아니다. 하지만 매번 이렇게 똑같은 작업을 반복하는 것은 지양해야한다. 따라서 우리가 직접 함수를 구현할 수도 있겠지만 다행히 사이킷런에서는 PolynomialFeature라는 메서드가 구현되어 있다.

이를 이용하여 위의 비선형 데이터에 선형 모델을 훈련시켜보자.

 

먼저 거듭제곱 항을 추가하고 변형된 데이터 셋을 만든다.

이후 선형 모델을 해당 데이터를 통해 학습시킨다.

이후 plot을 찍어보면 아래와 같은 결과를 볼 수 있다.

육안으로 확인해도 잘 학습된 것을 볼 수 있다.

또한 실제 함수가 y = 0.5x^2 + 1.0x_1 + 2.0 + 잡음이고 훈련된 모델은 y^ = 0.46x^2 + 0.9x_1 + 1.97이다. 큰 차이가 없이 잘 학습되었다.

 

 

댓글