📙 Fundamentals/ML&DL

교차 검증 : K-폴드 교차 검증

Lento_ 2025. 3. 30. 18:24

교차 검증(Cross Validation)

: 데이터를 여러 부분으로 나누고, 각 부분을 훈련과 테스트 용도로 번갈아 사용하여 모델을 평가하는 방법

 

: 훈련 데이터가 많지 않을 때 사용한다.

  • 모든 데이터셋을 평가에 활용하기 때문에 데이터셋이 부족할 때 적용하는 방법이다.

: 일반화된 모델 성능 평가 가능

  • K개의 성능 결과를 통합하여 하나의 결과를 도출하기 때문에 보다 일반화된 모델 성능 평가가 가능하다.

K-Fold 교차 검증

: 데이터셋을 K개의 부분(폴드)로 나누는 방법

  • K번의 다른 실험을 수행하며, 서로 다른 폴드를 테스트 데이터로 사용하고 나머지 (K-1)개의 폴드를 학습 데이터로 사용한다. K번의 실험을 통해 얻은 성능 지표들의 평균을 내어 최종 성능을 산출한다. 

: K값이 크면 연산 비용이 증가한다.(단점)


(K-Fold 교차 검증 종류)

일반적인 경우

👉 순서대로 나열된 레이블에 적용한 교차검증이 있음

 

데이터가 불균형한 경우

👉 클래스의 분포 비율에 맞게 폴드를 만드는 교차검증이 있음


(K-Fold 교차 검증 방법)

1. 데이터를 K등분한다.(그림 : K=5)

2. 1/5를 검증 데이터로, 나머지 4/5를 학습 데이터로 나눈다.

3. 1/5를 검증 데이터로 바꾸면서 성능을 평가한다.

4. 총 5개의 성능 결과의 평균 = 학습 모델의 성능


(K 값을 선택할 때, 고려할 점)

 모델의 복잡도 \ 학습 시간 \ 연산 시간 \ 데이터 크기

위의 4개를 종합적으로 고려하여 K값을 선택해야한다.

 

K값이 너무 작은 경우

: 훈련 데이터가 많아지지만 평가 데이터가 적어 신뢰도가 낮아질 수 있다.

: 분산이 커져 모델 평가가 불안정해질 가능성 존재

 

K값이 너무 큰 경우

: 훈련 데이터와 평가 데이터 크기의 차이가 작아 일반화 성능 평가가 정확해진다.

: 그러나 연산 비용이 증가하고 훈련 시간이 길어지게 된다.

 

→ 데이터가 적거나 모델이 복잡하면 K 값을 작게, 데이터가 많고 단순한 모델이면 K 값을 크게 설정하는 것이 일반적

 

 

 

 

(출처)

팀원분들의 정리

https://day-to-day.tistory.com/32

https://huidea.tistory.com/30