Cross-validation is a model validation technique for assessing how the model will generalize to an independent (test) data set.
Cross-validation이 왜 필요할까?
만약 데이터셋을 training data와 test data 두 개로 나눈다면, 모델을 학습하고 이 모델의 성능이 어떤지 측정하기 위해서는 training data의 일부를 사용하는 방법과 test data를 사용하는 방법이 있다. 전자의 경우 이미 모델이 training data를 학습했기 때문에 당연히 cheating이 되기 때문에 적절한 성능 측정 지표가 될 수 없다. 후자의 경우 모델 훈련과정에서 완전히 독립적으로 존재해야 하는 test data를 건드리는 것이기 때문에 test data로 성능 측정을 한다면 parameter가 test data의 영향을 조금이라도 받게 된다. 훈련을 시키지 않는데 왜 영향을 받을까라고 생각할 수도 있지만, test data를 사용해서 도출된 정확도를 기준으로 hyperparameter를 조절하기 때문에 간접적으로 영향을 준다고 할 수 있다.
1. Exhuastive cross-validation
데이터셋을 training 및 test set로 나누는 모든 가능한 방법을 학습하고 테스트하는 교차 검증 방법.
아래 그림은 Leave-p-out cross-validation 기법 중 p = 1 일 경우이다.
2. Non-exhaustive cross-validation
이 방법은 원래 샘플을 분할하는 모든 방법을 계산하지 않는다. Non-exhaustive 방법들은 leave-p-out cross-validation 방법들의 근사치이다.
reference: Wikipedia