동삼이의 노트북
선형 회귀 모델 (Linear regression model) (3) - 다항 회귀 본문
위와 같은 비선형 데이터가 있다. 우리가 이전 포스팅 까지 다뤘던 선형 회귀 모델을 통해 비선형 데이터를 훈련시키면 어떻게 될까?
아마도 위와 같이 비선형 모델의 굴곡은 따라가지 못하고 직선으로 회귀 선을 그리게 될 것이다. 하지만 각 특성의 거듭제곱을 새로운 특성으로 추가하고 이 확장된 특성을 포함한 데이터셋에 선형 모델을 훈련시키는 기법인 다항 회귀 (polynominal regression)을 통해 이와 같은 비선형 데이터를 표현할 수 있다.
우선 훈련 데이터 셋의 특성들을 제곱하여 새로운 특성으로 추가하기 위해 사이킷런의 PolynominalFeatures를 사용하였다. 기존 특성에 제곱된 새로운 특성이 추가가 된 것을 확인할 수 있었다. 이 확장된 훈련 데이터에 Linear_Regression을 적용해보겠다.
실제 함수가 y = 0.5x^2 + 1.0x + 2.0 + 가우시안 잡음이고 예측된 모델은 y = 0.45x^2 + 0.92x + 2.0으로 상당히 유사하게 예측을 한 것을 확인했다. 해당 함수식을 통해 회귀식을 그리면 다음과 같다.
회귀선이 비선형데이터를 따라 잘 그려져있는 것을 확인할 수 있다.
특성이 여러 개일 때 다항 회귀는 이 특성 사이의 관계를 찾을 수 있는데, PolynomialFeatures가 주어진 차수까지 특성 간의 모든 교차항을 추가하기 때문이다. 예를 들어 a, b 두 개의 특성이 주어졌을 때 degree=3으로 PolynomialFeatures를 적용하면 a^2, a^3, b^2, b^3 뿐만 아니라 ab, a^2b, ab^2 도 특성으로 추가한다.
학습 곡선
고차 다항 회귀를 적용하면 보통의 선형 회귀보다 훨씬 더 훈련 데이터에 잘 맞추려 할 것이다.
위 그림은 300차 다항 회귀 모델을 위 훈련 데이터에 적용한 모습이다. 단순 선형 모델이나 2차 다항 회귀 모델에 비교하면 가능한 훈련 데이터 셋에 가까이 가기 위해 엄청나게 구불거리는 것을 알 수 있다. 이 고차 다항 회귀는 심각하게 과적합된 것이다. 반면 선형 모델은 과소적합이 되어 데이터 셋을 제대로 표현하지 못한다. 2차 방정식으로 생성한 데이터이기 때문에 2차 다항 회귀 모델이 적합하다는 것은 당연하지만, 실제 데이터에서는 우리가 어떤 함수식으로 데이터가 만들어 졌는지 알 방법이 없다. 그렇다면 어떤 모델이 데이터 셋에 과적합 혹은 과소적합하지 않고 적합할지 어떻게 알 수 있을까?
단순히 교차검증을 통해 훈련 세트보다 교차 검증 세트의 점수가 나쁘다면 모델이 과대적합이 된 것이고 양쪽 모두의 점수가 낮다면 과소적합인 것을 알 수 있다.
또 다른 방법으로는 학습 곡선을 살펴 보면 알 수 있다. 학습 곡선은 훈련 세트와 검증 세트의 모델 성능을 훈련 세트 크기의 함수로 나타낸다. 이 그래프를 생성하기 위해서는 단순히 훈련 세트에서 크기가 다른 서브 세트를 만들어 모델을 여러 번 훈련시키면 된다.
먼저 단순 선형 회귀에서의 학습 곡선을 살펴보자
그래프에 대한 설명을 하자면, 먼저 훈련데이터(빨간색)의 성능을 볼 때 그래프가 0에서 시작할 때는 훈련 세트에 하나 혹은 두개의 샘플 뿐이므로 RMSE가 0에 가깝다. 하지만 훈련 샘플이 점점 추가됨에 따라 잡음도 있고 비선형 데이터셋이기 때문에 RMSE값이 어느정도 평평해질 때까지 오차가 계속 상승한다. 1.5 정도의 RMSE 값에서 부터 샘플이 추가되어도 평균 오차가 크게 나빠지거나 나아지지 않는다. 그럼 이제 검증 데이터에 대한 모델의 성능을 살펴보자. 모델이 적은 수의 샘플로 훈련될 때에는 제대로 일반화될 수 없어서 검증 오차가 초기에 매우 크다. 하지만 훈련 샘플이 점점 추가됨에 따라 학습이 되고 검증 오차가 서서히 감소한다. 하지만 선형 회귀 모델은 비선형의 데이터셋을 제대로 설명할 수없기 때문에 오차 감소가 완만해져서 훈련 세트의 그래프와 가까워 진다.
이 학습 곡선이 과소적합 모델의 전형적인 모습이다. 두 곡선이 수평한 구간을 만들고 꽤 높은 오차에서 매우 근접해있기 때문이다.
그렇다면 같은 데이터셋에서 10차 다항 회귀 모델의 학습 곡선을 그려보면 어떨까?
이 학습 곡선은 위의 선형 회귀의 학습 곡선과 유사해보이지만 매우 중요한 차이점이 있다.
- 훈련 데이터의 오차가 선형 회귀 모델 보다 훨씬 낮다.
- 두 곡선 사이에 공간이 있다. 즉 검증 데이터 보다 훈련 데이터의 모델 성능이 좋다는 뜻이며 이는 과대적합 모델의 특징이다.
이를 개선하는 방법은 검증 오차가 훈련 오차에 근접할 때 까지 더 많은 훈련데이터를 추가하는 것이다.
편향/분산 트레이드 오프
통계학과 머신러닝에서 나온 중요한 이론 중 하나는 모델의 일반화 오차는 세가지 다른 종류의 오차의 합으로 표현할 수 있다는 사실이다.
- 편향(bias)
일반화 오차 중에서 편향은 잘못된 가정으로 인한 것이다. 예를 들어 데이터가 실제로는 2차인데 선형으로 가정하는 경우가 있다. 편향이 큰 모델은 모델에 과소적합되기 쉽다. - 분산(variance)
분산은 훈련 데이터에 있는 작은 변동에 모델이 과도하게 민감하기 때문에 나타난다. 자유도가 높은 모델, 예를 들면 고차 다항 회귀 같은 모델이 높은 분산을 가지기 쉬워 훈련 데이터에 과적합되는 경향이 있다. - 줄일 수 없는 오차(irreducible error)
줄일 수 없는 오차는 데이터 자체에 있는 잡음 때문에 발생한다. 이 오차를 줄일 수 있는 유일한 방법은 데이터에서 잡음을 제거하는 것이다.
모델의 복잡도가 커지면 통상적으로 분산이 늘어나고 편향이 줄어든다. 반대로 모델의 복잡도가 줄어들면 편향이 커지고 분산이 작아진다. 따라서 둘 사이에는 트레이드 오프가 존재한다.
'Machine Learning' 카테고리의 다른 글
로지스틱 회귀 (logistic regression) (0) | 2020.12.10 |
---|---|
규제가 있는 회귀 - 릿지, 라쏘, 엘라스틱 넷 (0) | 2020.12.08 |
선형 회귀 모델 (Linear regression model) (2) - 경사 하강법 (0) | 2020.12.01 |
선형 회귀 모델 (Linear regression model) (1) (0) | 2020.11.27 |
머신 러닝의 주요 도전 과제 (0) | 2020.11.06 |