1. Cross validation(교차검증)이란?
일반적인 학습의 경우 train set으로 모델을 훈련하고 test set으로 모델의 검증을 수행한다.
하지만 고정된 Test set의 경우 일반적으로 모델을 테스트한 후 파라미터 수정하는 과정을 거치더라도
고정된 test set에 Overfitting 되어 실제 다른 데이터를 적용할 경우 예상된 정확도와 다른 결과를 얻을 수 있다.
이를 해결하기 위해 Cross validation이 등장했다.
Cross-validation은 주어진 데이터 세트를 여러 개의 서브셋으로 나누고,
각각의 서브셋을 모델 학습에 사용하고 나머지 서브셋을 테스트에 사용하는 방법이다.
2. Cross validation의 종류
Cross-validation에는 다양한 종류가 있으며, 가장 일반적으로 사용되는 Cross-validation 종류를 알아보자.
- K-fold Cross-validation: 데이터를 k개의 서브셋으로 분할한 후, k번 모델을 학습하고 평가. 각 시행에서 k번째 서브셋은 테스트 데이터로 사용되고, 나머지는 훈련 데이터로 사용된다. 일반적으로 k=5 또는 k=10으로 설정된다.
- Leave-One-Out Cross-validation (LOOCV): 데이터셋이 작을 때 사용하는 주로 사용되는 방법. 데이터를 n개의 서브셋으로 분할. 각 시행에서 하나의 데이터 샘플만 테스트 데이터로 사용하고, 나머지는 훈련 데이터로 사용한다. 하지만 데이터셋이 커지면 계산 비용이 크게 증가한다.
- Stratified Cross-validation: 클래스 불균형 문제가 발생할 경우, 각 클래스의 비율을 유지하면서 데이터를 분할하는 방법이다. 이 방법은 클래스 비율이 크게 차이 나는 경우에 사용.
- Time Series Cross-validation: 시간이 중요한 데이터에서 과거 데이터를 훈련 데이터로 사용하고, 미래 데이터를 테스트 데이터로 사용하는 방법.
- Repeated Cross-validation: k-fold cross-validation을 여러 번 반복하여 신뢰성 있는 결과를 얻는 방법
- Monte Carlo Cross-validation: 무작위로 데이터를 k개의 서브셋으로 분할하는 방법. 이 방법은 K-fold Cross-validation에서 발생하는 문제를 해결하는 데에 사용된다.
3. Cross validation의 장, 단점
- 장점:
- 일반화 성능 예측: Cross-validation을 사용하면 모델의 일반화 성능을 더욱 정확하게 예측이 가능하다.
- 데이터 불균형 해결: 데이터 세트가 불균형하게 분포되어 있을 경우, 일부 클래스의 샘플 수가 적어져서 모델의 성능이 향상되지 않는 문제를 해결할 수 있다.
- 모델의 하이퍼파라미터 튜닝: Cross-validation은 모델의 하이퍼파라미터를 튜닝하는 데 유용하다. 각각의 서브셋에서 학습한 모델들의 성능을 비교하여 하이퍼파라미터를 조정할 수 있다.
- 단점:
- 시간과 계산 비용: Cross-validation은 데이터 세트를 여러 개의 서브셋으로 분할하여 모델을 학습하고 평가하기 때문에, 시간과 계산 비용이 많이 듭니다.
- 데이터 분할 방법에 따른 성능 차이: Cross-validation에서 데이터를 분할하는 방법에 따라 모델의 성능이 달라질 수 있다.
- 데이터의 크기와 분포: 데이터의 크기가 작거나 분포가 균등하지 않을 경우, Cross-validation의 성능이 저하될 수 있다.
reference :)
반응형
'Study' 카테고리의 다른 글
#9. [CS] Context switching (0) | 2023.03.09 |
---|---|
#8. [AI] 모델의 성능 평가 지표 (0) | 2023.03.07 |
#6. RDMBS와 NOSQL (0) | 2023.03.03 |
#5. Loss surface (0) | 2023.03.02 |
#4. Machine learning / Deep learning 차이점? (0) | 2023.02.26 |