본문 바로가기

AI/이론

[ML] K-Fold Cross Validation(교차검증)

정의

- K개의 fold를 만들어서 진행하는 교차검증

 

사용 이유

- 총 데이터 갯수가 적은 데이터 셋에 대하여 정확도를 향상시킬수 있음

- 이는 기존에 Training / Validation / Test 세 개의 집단으로 분류하는 것보다, Training과 Test로만 분류할 때 학습 데이터 셋이 더 많기 때문

- 데이터 수가 적은데 검증과 테스트에 데이터를 더 뺐기면 underfitting 등 성능이 미달되는 모델이 학습됨

 

과정 

- 기존 과정과 같이 Training Set과 Test Set을 나눈다

- Training을 K개의 fold로 나눈다 

- 위는 5개의 Fold로 나눴을때 모습이다

- 한 개의 Fold에 있는 데이터를 다시 K개로 쪼갠다음, K-1개는 Training Data, 마지막 한개는 Validation Data set으로 지정한다

- 모델을 생성하고 예측을 진행하여, 이에 대한 에러값을 추출한다

- 다음 Fold에서는 Validation셋을 바꿔서 지정하고, 이전 Fold에서 Validatoin 역할을 했던 Set은 다시 Training set으로 활용한다

- 이를 K번 반복한다

과정(이어서)

- 각각의 Fold의 시도에서 기록된 Error를 바탕(에러들의 평균)으로 최적의 모델(조건)을 찾는다

- 해당 모델(조건)을 바탕으로 전체 Training set의 학습을 진행한다

- 해당 모델을 처음에 분할하였던 Test set을 활용하여 평가한다

단점

- 그냥 Training set / Test set 을 통해 진행하는 일반적인 학습법에 비해 시간 소요가 크다

 

 

 

K-Fold Cross Validation(교차검증) 정의 및 설명

정의 - K개의 fold를 만들어서 진행하는 교차검증 사용 이유 - 총 데이터 갯수가 적은 데이터 셋에 대하여 정확도를 향상시킬수 있음 - 이는 기존에 Training / Validation / Test 세 개의 집단으로 분류하

nonmeyet.tistory.com

 

 

  • 자세한 K-Fold 교차 검증 과정은 다음과 같다.
    1. 전체 데이터셋을 Training Set과 Test Set으로 나눈다.
    2. Training Set를 Traing Set + Validation Set으로 사용하기 위해 k개의 폴드로 나눈다.
    3. 첫 번째 폴드를 Validation Set으로 사용하고 나머지 폴드들을 Training Set으로 사용한다.
    4. 모델을 Training한 뒤, 첫 번째 Validation Set으로 평가한다.
    5. 차례대로 다음 폴드를 Validation Set으로 사용하며 3번 과정을 반복한다.
    6. 총 k 개의 성능 결과가 나오며, 이 k개의 평균을 해당 학습 모델의 성능이라고 한다.

 

예제 코드

  • sklearn에서는 교차검증을 위해 cross_val_score 함수를 제공한다.


  • KFold 상세 조정
    • 위 cross_val_score 함수에서는, cv로 폴드의 수를 조정할 수 있었다.
    • 만약 검증함수의 매개변수를 디테일하게 제어하고 싶다면
    • 따로 검증함수 객체를 만들고 매개변수를 조정한 다음, 해당 객체를 cross_val_score의 cv 매개변수에 넣을 수도 있다.
    • 이를 '교차 검증 분할기' 라고도 한다.

 

 

 

[ML] 교차검증 (CV, Cross Validation) 이란?

교차 검증이란? 보통은 train set 으로 모델을 훈련, test set으로 모델을 검증한다. 여기에는 한 가지 약점이 존재한다. 고정된 test set을 통해 모델의 성능을 검증하고 수정하는 과정을 반복하면, 결

wooono.tistory.com