과적합과 과소적합에 대해 알아보도록 하겠습니다.
과적합(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으로 만들기 때문에, 변수 선택과 관련이 있음을 알 수 있습니다.
정규화를 얘기하자면, 정말 많은 이야기가 있기 때문에, 추후에 포스팅을 하겠습니다.
2. Early stopping
학습을 일찍 끝내버리는 방법입니다. 딥러닝의 경우, iteration을 많이 줄수록 학습의 시간이 오래걸리고 그만큼 더 training data에 과적합 할 수 있습니다. 그래서 어느 정도 학습이 되었다고 판단했을 시, 학습 중간에 학습을 멈춰버리는 방법입니다. 그만큼 학습속도를 줄일 수 있는 장점이 있지만, 학습이 덜 되었기 때문에 단점도 존재 합니다.
"과소적합 정의 및 해결방법"
과소적합(Underfitting)은 과적합의 반대말로, 데이터에 과소하게 적합되었다는 뜻입니다.
이때에는 선정한 모델을 바꾸거나, 모델의 하이퍼파라메터를 조정함으로써
정확성을 더 높여주면 됩니다.
'통계' 카테고리의 다른 글
[머신러닝]앙상블/배깅/랜덤포레스트/부스팅 차이 (0) | 2019.06.17 |
---|---|
[머신러닝] 지도학습 vs 비지도학습 (0) | 2019.06.16 |
[빅데이터] 차원의 저주(The curse of dimensionality) (0) | 2019.06.12 |
비모수적 통계 (0) | 2019.05.19 |