본문 바로가기

빅데이터

과소적합(Underfitting) 그리고 과적합(Overfitting)

 

                                                         Degree1 :  과소적합                      Degree4 : 적절                       Degree 15 :  과적합                                                                  출처 :  https://scikit-learn.org/0.15/auto_examples/plot_underfitting_overfitting.html

 

가장 왼쪽에 있는 Degree 1 예측 곡선을 보면 학습데이터에 비해 지나치게 단순한 선형 곡선을 보인다. 누가 봐도 예측이 잘 안될 것 같다. 반면에 가장 오른쪽에 있는 Degree 15 예측 곡선 그림을 보면 예측 모델이 샘플 데이터를 정확히 예측한 모습을 볼 수 있다. 그렇다면 Degree 15 예측 곡선이 가장 효과적인 예측 모델일까?

 

머신러닝 모델링을 할 때 보통 트레이닝 데이터를 이용하여 학습을 시키고 테스트 데이터를 이용하여 예측을 한다. Generalization된 모델을 만들기 위해 트레이닝 데이터를 이용하여 학습을 하는 과정이 매우 중요한데 이 과정에서 데이터의 패턴을 제대로 학습하지 못하거나 과도하게 학습을 한다면 문제가 발생할 수 있다. 바로 과소적합과 과적합 문제이다.

 

과소적합(Underfitting)

 

과소적합이란 예측 곡선이 학습데이터를 제대로 학습하지 못해 패턴을 반영하지 못하는 것을 말한다. 패턴을 제대로 반영하지 못하니 당연히 예측을 제대로 할 리가 없다.

 

과적합(Overfitting)

 

반면에 과적합이란 예측 모델이 너무 트레이닝 데이터에만 맞춘 학습이 이뤄져 정작 새로운 데이터, 테스트 환경에서는 예측이 잘 안되는 것을 말한다. 다항식의 차수가 높아질수록 복잡한 feature들의 관계까지 모델링이 가능한데 이럴 경우 과적합 문제가 크게 발생한다. 우리가 모델링을 통해 얻고자 하는 것은 trend를 잘 예측할 수 있는 것이다. 전체적인 trend를 따르는 모델이 좋지만 과적합 문제가 발생한 모델의 그림을 보면 개별 데이터의 trend는 따르지만 전체적인 trend를 따른다고 볼 수 없다. 결과적으로 과적합된 모델로 예측을 진행하면 신뢰 있는 결과를 얻을 수 없다.

 

과적합 문제 해결 방법

 

1. 더 많은 데이터로 학습을 한다.

2. feature의 개수를 줄인다.

3. parameter 선정을 적절히 한다.

 

 

그렇다면 어떻게 해야 generalization된 모델을 만들 수 있을까?

 

14세기 영국의 논리학자인 오컴의 저서에 쓰여있던 말에서 답을 찾을 수 있다.

"더 적은 수의 논리로 설명이 가능한 경우, 많은 수의 논리를 세우지 말라."(Frustra fit per plura quod potest fieri per pauciora.) - 오컴의 면도날(Occam's razor)

즉, 불필요한 가정은 하지 말고 필요한 요소들만 사용하여 트레이닝 데이터를 구성하고 학습을 해야 한다는 것이다.

 

 


참고자료

 

[파이썬 머신러닝 완벽 가이드] 저자 권철민

https://towardsdatascience.com/what-are-overfitting-and-underfitting-in-machine-learning-a96b30864690