오답노트

[ML] 복잡도와 과적합 본문

Python/ML

[ML] 복잡도와 과적합

권멋져 2022. 8. 25. 20:52

복잡도

모델의 복잡도는 train 데이터의 패턴을 반영하는 정도이다.

알고리즘 마다 복잡도를 조절하는 방법은 다르다.

 

모델의 복잡도가 높다고 무조건 성능이 좋은 모델이라고 할 수 없다.

 

과적합

복잡도가 높아질 수록 과적합이 나타나기 쉽다. 그렇다고 복잡도가 너무 낮으면 접합도가 너무 낮아 예측을 제대로 못 할 가능성이 크다. 즉 적절한 적합도를 찾아야 성능이 좋은 모델을 만든다고 볼 수 있다.

그렇다면 어떻게 해야 적절한 적합도를 찾을 수 있을까?

2.1 Fitting Graph

위 그래프는 복잡도가 증가함에 따라 train과 validation 데이터에 대한 Accuracy 변화량을 표현한 그래프이다.

복잡도가 커짐에 따라 train 데이터의 Accuracy는 1에 가까워져 더 정확한 예측을 하지만, validation 데이터의 Accuracy 는 계속 낮아진다.

 

모델링 단계에서 복잡도가 클 수록 train에만 맞는 모델이 된다는 의미가 된다.

 

적절한 모델링을 하기 위해선 적절한 복잡도가 필요하다.

그 기준은 대체로

1. train 데이터와 validation 데이터가 급격하게 차이가 나는 구간

2. validation 데이터의 Accuracy 의 고점

3. 그 중에서 가장 단순한 모델

 

에서 선택한다. 위 그래프에서는 3에서 5사이의 복잡도가 가장 알맞아보인다.

'Python > ML' 카테고리의 다른 글

[ML] Bagging - Random Forest  (0) 2022.08.25
[ML] 앙상블 - Bagging  (0) 2022.08.25
[ML] Learning Curve (데이터 늘리기, Bias 줄이기)  (0) 2022.08.25
[ML] k-fold Cross Validation  (0) 2022.08.25
[ML] HyperParameter Tuning  (0) 2022.08.24