위에서 새로운 특성을 기존의 특성을 거듭제곱해 만들었다. 왜 세제곱이나 네제곱이 아닌 거듭제곱일까? 즉 차수를 어떻게 정해야할까? 가장 간단한 방법은 반복 실험을 통해 알아보는 것이다. 즉 교차 검증을 통해 확인하면 된다. 또 다른 방법이 있다. 학습 곡선을 이용하면 된다. 학습 곡선은 train set과 valid set의 모델의 성능을 train set의 크기의 함수로 나타낸 것이다. 무슨 말인가? 그림으로 보자. 즉 점점 train set의 크기를 늘려가며(training set의 크기를 1, 2, 3, ... 점점 더 추가하면서 테스트) 모델을 훈련시키면서 동시에 valid set으로 모델의 성능을 평가하는 것이다. 코드로 구현하면 아래와 같다. 여기까지는 좋다. 하지만 이 다음에 무엇을 해야하는..
데이터가 선형이라면 선형 모델을 사용하면 된다. 하지만 만약 아래와 같이 데이터가 비선형이면 어떻게 해야 할까? 신기하게도 비선형 데이터를 학습하는데 선형 모델을 사용할 수 있다. 바로 기존의 데이터에 각 특성의 거듭제곱을 새로운 특성으로하여 추가된 데이터에 선형 모델을 훈련시키는 것이다. 이것을 다항 회귀라 한다. 특성의 거듭제곱을 구하고 이를 새로운 특성으로 하여 기존 데이터에 추가하는 것은 어려운 일이 아니다. 하지만 매번 이렇게 똑같은 작업을 반복하는 것은 지양해야한다. 따라서 우리가 직접 함수를 구현할 수도 있겠지만 다행히 사이킷런에서는 PolynomialFeature라는 메서드가 구현되어 있다. 이를 이용하여 위의 비선형 데이터에 선형 모델을 훈련시켜보자. 먼저 거듭제곱 항을 추가하고 변형된 ..