과적합

과적합이란?

과적합은 모델이 훈련 데이터에 너무 가깝게 맞춰져 새 데이터에 어떻게 대응해야 할지 모를 때 발생하는 머신러닝 행동입니다. 과적합은 다음과 같은 이유로 발생할 수 있습니다.

  • 머신러닝 모델이 너무 복잡해서, 좀처럼 일반화되지 않는 훈련 데이터의 매우 미세한 패턴까지 기억합니다.
  • 훈련 데이터의 크기가 모델 복잡도에 견주어 너무 작거나, 관련성 없는 정보가 많이 포함되어 있습니다.

모델 복잡도를 관리하고 훈련 데이터셋을 개선함으로써 과적합을 방지할 수 있습니다.

과적합 및 과소적합

과소적합은 과적합의 반대 개념인데, 모델이 훈련 데이터와 잘 맞지 않거나 새 데이터로 일반화되지 않는 경우입니다. 과적합과 과소적합은 분류 모델과 회귀 모델에 모두 나타날 수 있습니다. 다음 그림에서는 과적합 모델의 경우 분류 결정 경계 및 회귀선이 훈련 데이터를 지나치게 근접해 따라가고 과소적합 모델의 경우 꽤 멀게 따라가는 것을 볼 수 있습니다.

분류 및 회귀 모델의 과적합, 적합, 과소적합을 보여주는 데이터 플롯.

과적합된 분류 및 회귀 모델은 적합 모델에 비해 훈련 데이터를 지나치게 명확히 기억합니다.

훈련 데이터에 대한 머신러닝 모델의 계산된 오차만 보면 과소적합보다 과적합 검출이 더 어렵습니다. 따라서 과적합을 방지하려면 머신러닝 모델을 테스트 데이터에 사용하기 전에 검증하는 것이 중요합니다.

오차

과적합

적합

과소적합

훈련

낮음

낮음

높음

테스트

높음

낮음

높음

과적합 모델의 계산된 오차는 훈련 데이터에 대해서는 낮고 테스트 데이터에 대해서는 높습니다.

MATLAB®Statistics and Machine Learning Toolbox™Deep Learning Toolbox™와 함께 사용하면 머신러닝 및 딥러닝 모델의 과적합을 방지할 수 있습니다. MATLAB은 모델의 과적합을 방지하도록 특별히 설계된 함수와 방법을 제공합니다. 모델을 훈련 또는 조정할 때 이러한 툴을 사용하여 과적합이 생기지 않도록 할 수 있습니다.

모델 복잡도를 줄여 과적합을 방지하는 방법

MATLAB을 사용하면 머신러닝 모델 및 딥러닝 모델(예: CNN)을 처음부터 새로 훈련시키거나 사전 훈련된 딥러닝 모델을 활용할 수 있습니다. 과적합 방지를 위해서는 여러분의 데이터에 적합한 복잡도 수준을 갖는 모델을 선택할 수 있도록 모델 검증을 수행하거나 정규화를 사용하여 모델의 복잡도를 낮출 수 있습니다.

모델 검증

훈련 데이터에 대해 계산된 과적합 모델의 오차는 낮습니다. 새 데이터를 들여오기 전에 별도의 데이터셋(예: 검증 데이터셋)으로 모델을 검증하는 것이 좋습니다. MATLAB 머신러닝 모델의 경우 cvpartition 함수를 사용하여 데이터셋을 훈련 및 검증 세트로 임의 분할할 수 있습니다. 딥러닝 모델의 경우에는 훈련 중에 검증 정확도를 모니터링할 수 있습니다. 모델 선택과 하이퍼파라미터 조정을 통해 모델에 대해 적절히 검증된 정확도 측정치를 개선하면 모델에 새 데이터에 대한 모델의 정확도 역시 개선될 것입니다.

교차 검증은 훈련에 사용되지 않은 데이터셋에 대한 머신러닝 알고리즘의 예측 성능을 평가하는 데 쓰이는 모델 평가 기법입니다. 교차 검증은 과적합을 유발할 정도로 복잡하지 않은 알고리즘을 선택할 수 있도록 도움을 줍니다. crossval 함수를 사용하여 k-겹(데이터를 거의 같은 크기를 갖는 임의의 k개 서브셋으로 분할) 및 홀드아웃(데이터를 특정 비율을 갖는 임의의 2개 서브셋으로 분할) 같은 일반적인 교차 검증 기법으로 머신러닝 모델의 교차 검증 오차 추정치를 계산할 수 있습니다.

정규화

정규화는 머신러닝 모델의 통계적 과적합을 방지하는 데 쓰이는 기법입니다. 일반적으로 정규화 알고리즘은 복잡도나 거칠기에 벌점을 적용하는 방식으로 작동합니다. 정규화 알고리즘은 모델에 추가 정보를 도입함으로써 모델을 보다 간결하고 정확하게 만들어서 다중공선성 및 중복된 예측 변수 문제를 처리할 수 있습니다.

머신러닝의 경우, 여러 유형의 선형 머신러닝 모델에 대해 다음과 같은 널리 쓰이는 세 가지 정규화 기법을 사용할 수 있습니다. Lasso(L1 노름), 능형(L2 노름), 신축망. 딥러닝의 경우에는 지정된 훈련 옵션의 L2 정규화 인자를 늘리거나 신경망의 드롭아웃 계층을 사용하여 과적합을 방지할 수 있습니다.

훈련 데이터셋을 개선하여 과적합을 방지하는 방법

교차 검증과 정규화는 모델 복잡도를 관리하여 과적합을 방지합니다. 또 다른 방법은 데이터셋을 개선하는 것입니다. 특히 딥러닝 모델은 과적합 방지를 위해 대량의 데이터가 필요합니다.

데이터 증대

데이터 가용성이 제한된 경우에는 데이터 증대라는 방법을 통해 기존 데이터를 무작위 방식으로 변형하고 이를 데이터셋에 추가하여 훈련 데이터셋의 데이터 점을 인공적으로 확장할 수 있습니다. MATLAB을 사용하면 영상, 오디오 및 기타 유형의 데이터를 증대할 수 있습니다. 예를 들어 기존 영상의 크기와 회전을 무작위화하여 영상 데이터를 증대할 수 있습니다.

데이터 생성

합성 데이터 생성은 데이터셋을 확장하는 또 다른 방법입니다. MATLAB을 사용하면 GAN(생성적 적대 신경망) 또는 디지털 트윈(시뮬레이션을 통한 데이터 생성)으로 합성 데이터를 생성할 수 있습니다.

데이터 정리

데이터 잡음은 과적합을 야기합니다. 원치 않는 데이터 점을 줄이는 일반적인 접근법 한 가지는 rmoutliers 함수를 사용하여 데이터에서 이상값을 제거하는 것입니다.

패널 내비게이션