본문 바로가기

통계

[머신러닝]Overfitting & Underfitting(과적합과 과소적합)

과적합과 과소적합에 대해 알아보도록 하겠습니다.

 

과적합(Overfitting)은 말 그대로 과대하게 적합되었다는 뜻입니다.

 

얼핏 들어보면, 학습이 잘 된거 같아서 좋은거 같은데........왜 문제가 될까요?

 

"과적합의 문제점"

우리는 왜 빅데이터 분석을 할까요?

과거의 데이터로부터 적절한 모델을 만들어, 미래 데이터를 기반으로 예측 혹은 분류하기 위함입니다.

 

즉, 현재 데이터에 정확도 100% 찍는다고 해서, 미래에 들어오는 데이터를 잘 맞출 수 있다고 장담할 수 없습니다.

오히려, 현재 데이터에 너무 맞춰져있기 때문에, 미래의 데이터에 대해 더 못 맞출 수 있게됩니다.

 

그래서 과적합을 피하려고 하는 것입니다.

 

과적합을 진단하는 방법에는 무엇이 있을까요?

 

"과적합 진단법"

과적합 진단(사진출처: 위키피디아)

training data와 test data의 정확도를 보면 됩니다.

빨간 선은 test data의 오차의 정도 입니다.(러프하게 오차의 정도로 하겠습니다!)

파란선은 training data의 오차의 정도 입니다.

 

그래프를 보시면, training data는 갈 수록 오차의 정도가 낮아지는 것을 알 수 있습니다.

하지만, test data는 어느 한 기점을 기준으로 오차가 낮아졌다가 점점 증가하는 것을 볼 수 있습니다.

 

training data는 계속 오차의 정도가 낮아지는 반면, test data는 오차의 정도가 증가합니다.

이때, training data가 과적합되었다고 합니다.

 

우선, 너무 training data의 정확도가 좋다(=오차의 정도가 낮다)면 과적합을 의심해보아야 합니다.

이때 test data의 정확도를 찍어서, training과의 정확도 차이가 너무 크다면........

삐-빅 오버피팅입니다^-^

 

 

"과적합 해결"

1. 정규화

과적합이, 데이터에 너무 적합되어서 발생한다고 했습니다.

그럼, 데이터에 너무 적합하지 않도록 장치를 만들어 주면 됩니다.

그것이 정규화입니다.

정규화에는 L1 정규화(=릿지)랑 L2정규화(=라쏘)가 있습니다.

정규화의 원리는, 파라메터 B에 대해, 일종의 가중치(=패널티)를 줘서 데이터에 과적합 하는 것을 막습니다.

 

L1은 파라미터를 0으로 만드는 성격을 가지고 있고

L2는 파라미터를 거의 0으로 만드는 성격을 가지고 있습니다.

 

L1은 변수를 0으로 만들기 때문에, 변수 선택과 관련이 있음을 알 수 있습니다.

 

정규화를 얘기하자면, 정말 많은 이야기가 있기 때문에, 추후에 포스팅을 하겠습니다.

 

L1, L2 정규화(사진출처:데이터 사이언스 스쿨)

2. Early stopping

학습을 일찍 끝내버리는 방법입니다. 딥러닝의 경우, iteration을 많이 줄수록 학습의 시간이 오래걸리고 그만큼 더 training data에 과적합 할 수 있습니다. 그래서 어느 정도 학습이 되었다고 판단했을 시, 학습 중간에 학습을 멈춰버리는 방법입니다. 그만큼 학습속도를 줄일 수 있는 장점이 있지만, 학습이 덜 되었기 때문에 단점도 존재 합니다.

 

"과소적합 정의 및 해결방법"

과소적합(Underfitting)은 과적합의 반대말로, 데이터에 과소하게 적합되었다는 뜻입니다. 

이때에는 선정한 모델을 바꾸거나, 모델의 하이퍼파라메터를 조정함으로써 

정확성을 더 높여주면 됩니다.