교차 검증

교차 검증이란?

Cross-validation은 아직 훈련하지 않은 새로운 데이터셋에 대한 머신러닝 알고리즘의 예측 성능을 평가하는 데 사용되는 모델 평가 기법입니다.   기존의   데이터셋을 분할하여, 이중 일부를 사용하여 알고리즘을 훈련시키고 나머지 데이터를 테스트에 사용합니다.

각각의 cross-validation 라운드에서 기존의 데이터셋을 훈련 세트테스트 세트로 임의 분할하게 됩니다. 이어서 훈련 세트를 사용하여 지도 학습 알고리즘을 훈련시키고 테스트 세트를 사용하여 성능을 평가합니다. 이 과정을 몇 차례 반복하고, 평균 cross-validation 오차가 성능 지표로 사용됩니다.

왜 Cross-Validation이 중요할까요?

모델을 훈련시킬 때, 너무 복잡하거나 너무 단순한 알고리즘으로 과적합하거나 과소적합하지 않는 것이 중요합니다. 훈련 세트와 테스트 세트를 적절히 선택해야 이러한 위험을 줄일 수 있습니다. 그러나 학습 결과와 테스트 유효성 결과를 모두 극대화하도록 데이터셋을 분할하기는 어렵습니다. 그래서 cross-validation을 활용하는 것입니다. Cross-Validation은 모델에 맞는 최적의 알고리즘을 찾을 수 있도록 데이터를 다양하게 분할하는 여러 가지 기법을 제공합니다.

또한 cross-validation은 아직 훈련에 사용하지 않은 테스트 데이터셋을 사용하여 오차를 계산함으로써 가장 성능이 우수한 모델을 선택하도록 해줍니다. 테스트 데이터셋은 모델의 정확도를 계산하고, 모델이 앞으로 데이터를 어떻게 일반화할지 계산하는 데 도움을 줍니다.

널리 쓰이는 Cross-Validation 기법

Cross-validation에 사용할 수 있는 기법은 많습니다. 그중 다음과 같은 기법들이 가장 널리 쓰이고 있습니다.

  • k-겹: 데이터를 대략 같은 크기로 임의 선정된 k개의 등분(또는 겹으로도 불림)으로 분할합니다. 이중 한 등분을 제외한 나머지 등분으로 모델을 훈련시키고, 훈련에 사용되지 않은 남은 한 등분을 사용하여 모델을 검증합니다. 각각의 등분이 정확히 한 번씩 검증에 사용되도록 이 과정을 k회 반복합니다. 전체 k개의 분할에 대한 평균 오차는 ε로 나타냅니다. 이는 Cross-Validation에 가장 널리 활용되는 기법이지만, 모델을 반복적으로 훈련시켜야 되므로 실행 시간이 오래 걸릴 수 있습니다. 아래 이미지에서 이 과정을 보여줍니다.
Cross-Validation 이미지 예제
  • 홀드아웃: 지정된 훈련 비율과 검증 비율을 사용해 데이터를 정확히 2개로 임의 분할합니다. 이 방법은 훈련과 테스트를 단 한 번만 하여, 큰 데이터셋에 대한 실행 시간을 줄여주지만, 작은 데이터셋에 대해 보고된 오차를 해석할 때에는 주의해야 합니다.
  • 리브아웃: k-겹 접근 방법으로 데이터를 분할하되, 이때 k는 데이터 내 전체 관측값의 개수와 같게 하고 모든 데이터는 테스트 세트로 한 번 사용되게 합니다. LOOCV(leave-one-out cross validation)라고도 부릅니다.
  • 반복 임의 부표본추출: 몬테카를로 방법을 사용하여 다수의 임의 데이터 분할을 생성하여 훈련 세트와 테스트 세트로 사용하고 모든 실행 결과를 집계합니다. 이 기법은 k-겹과 유사한 방식이지만 각각의 테스트 세트는 독립적으로 선택됩니다. 그래서 일부 데이터 포인트는 한 번 이상 테스트에 사용될 수 있습니다.
  • 층화: 훈련 및 테스트 세트가 응답 변수와 목표 변수에 대략적으로 동일한 클래스 비율을 갖도록 데이터를 분할합니다.
  • 재대입: 데이터를 분할하지 않고 모든 데이터를 모델 훈련에 사용합니다. 결과와 실제 값을 비교함으로써 오차를 평가합니다. 이 접근 방식은 성능에 대한 지나치게 낙관적인 추정을 낳는 경우가 많기 때문에 데이터가 충분하다면 사용하지 않는 게 좋습니다.

Cross-Validation은 훈련과 검증이 수 차례 이루어지기 때문에 계산 집약적인 작업이 될 수 있습니다. 그러나 모델을 과적합하거나 과소적합할 위험을 감소시키기 위해 모델 개발에서 아주 중요한 단계입니다. 모든 분할 세트가 독립적이기 때문에 이 분석을 병렬로 수행하여 과정의 속도를 높일 수 있습니다. 데이터셋이 클 경우, 홀드아웃 또는 재대입 기법을 사용하는 것이 좋고, k-겹 및 반복 임의 부표본추출과 같은 기법은 작은 데이터셋에 더 적합합니다.

MATLAB을 사용한 Cross-Validation

MATLAB®은 cross-validation과 머신러닝을 지원합니다. 분류 학습기 앱 과 회귀 학습기 앱 으로 이런 cross-validation 기법 중 일부를 사용할 수 있습니다.

훈련에 사용되는 분류 학습기 앱

분류 모델을 훈련, 검증 및 조정하는 분류 학습기 앱. 내역 목록을 보면 다양한 분류기 유형이 있습니다.

훈련에 사용되는 회귀 학습기 앱

회귀 모델을 훈련, 검증 및 조정하는 회귀 학습기 앱. 내역 목록을 보면 다양한 회귀 모델 유형이 있습니다.

계산 집약적인 작업의 속도를 높이기 위해 Parallel Computing Toolbox™로 멀티코어 컴퓨터, GPU, 클러스터에서 병렬 연산을 수행할 수 있습니다.

머신러닝 문제에 cross-validation을 사용하는 방법에 관한 더 자세한 내용은 MATLAB과 함께 사용하는 Statistics and Machine Learning Toolbox™Deep Learning Toolbox™를 참조하십시오.

참조: Statistics and Machine Learning Toolbox, 머신러닝, 지도 학습, 특징 선택, 정규화, 선형 모델, 과적합