교차 검증(Cross-validation)은 기계 학습에서 모델의 성능을 평가하는 방법 중 하나입니다. 교차 검증은 주어진 데이터를 학습 데이터와 테스트 데이터로 나누어 학습과 평가를 수행하는 것이 일반적인 방법입니다.
교차 검증 순서
- 데이터셋을 k개의 서로 다른 부분집합으로 나눕니다. (일반적으로 k=5, 10으로 설정)
- 각 부분집합 중 하나를 테스트 데이터셋으로 선택하고 나머지를 학습 데이터셋으로 사용합니다.
- 모델을 학습 데이터셋으로 학습시킵니다.
- 학습된 모델을 테스트 데이터셋으로 평가하고 성능 지표를 계산합니다.
- 2~4번을 k번 반복하여 각 테스트 데이터셋에 대한 성능 지표의 평균을 계산합니다.
이렇게 하면 데이터셋을 훈련, 검증, 테스트 데이터셋으로 나누는 것보다 더 많은 데이터를 사용하여 모델의 성능을 평가할 수 있습니다. 또한, 모든 데이터를 학습과 평가에 사용할 수 있기 때문에 모델이 일반화 성능을 더 잘 나타낼 수 있습니다.
교차 검증을 사용하여 모델의 성능을 평가할 때는 과적합(overfitting)을 방지하고 일반화 성능을 향상시키기 위해 하이퍼파라미터 튜닝 등의 작업을 수행할 때 특히 유용합니다.
교차검증의 한계 및 세부 방법론
하지만 이렇게 단순히 데이터셋을 나누는 것으로는 모델의 성능을 정확하게 평가하기 어려운 경우가 있습니다. 이러한 문제를 해결하기 위해 다양한 교차 검증 방법이 제안되었습니다.
- K-Fold 교차 검증:
데이터셋을 k개의 부분집합으로 나누고, 각각의 부분집합을 순서대로 테스트 데이터셋으로 사용하고 나머지 부분집합을 학습 데이터셋으로 사용하여 모델을 학습하고 평가하는 방법입니다. K-Fold 교차 검증을 수행할 때는 보통 데이터셋을 랜덤하게 섞어서 사용합니다. K-Fold 교차 검증은 모델의 성능을 안정적으로 추정할 수 있고, 데이터셋을 최대한 활용할 수 있어서 데이터셋이 작을 때 유용합니다.
- Stratified K-Fold 교차 검증
클래스 비율을 고려하여 데이터셋을 나누는 방법입니다. 클래스 비율을 고려하지 않고 데이터셋을 랜덤하게 나누면 클래스의 비율이 일정하지 않아서 모델의 성능을 정확하게 평가하기 어려울 수 있습니다. Stratified K-Fold 교차 검증은 각각의 부분집합에서 클래스 비율이 유지되도록 나누어 사용합니다.
- Shuffle-Split 교차 검증
데이터셋을 랜덤하게 섞은 후, 지정된 횟수만큼 랜덤하게 나누어 사용하는 방법입니다. Shuffle-Split 교차 검증은 K-Fold 교차 검증과 비슷하지만, 랜덤하게 나누기 때문에 보다 유연하게 데이터셋을 활용할 수 있습니다.
더욱 자세한 내용은 scikit-learn 공식 페이지에서 확인하실 수 있습니다.
'머신러닝' 카테고리의 다른 글
TF-IDF(Term Frequency-Inverse Document Frequency) (0) | 2023.03.28 |
---|---|
그리드 서치 (Grid Search) (0) | 2023.03.28 |
T-SNE (t-distributed stochastic neighbor embedding) (0) | 2023.03.28 |
비음수 행렬분해(Non-negative Matrix Factorization, NMF) (0) | 2023.03.28 |
서포트 벡터 머신(Support Vector Machine) (0) | 2023.03.28 |