머신러닝/기본

K-fold Cross Validation 기법과 활용

monapanda 2023. 1. 4. 17:27

기존의 방식에서는 Train set 및 Test set을 고정하여 훈련 및 검증을 진행했는데,

이와 같은 방식에서는

  • 해당 Test Set에만 잘 fit하는 모델이 된다  >>>  Overfitting 되기 쉽다

라는 단점이 존재한다.

 

이러한 단점을 해결하고자 나온 것이 교차 검증(Cross Validation)이며 그 중 가장 널리 쓰이는 K-fold Cross Validation에 대해 알아볼 것이다.

 

※ K-fold Cross Validation이란?

총 train set을 K개의 fold로 나누어 K-1개의 fold를 train set, 1개의 fold를 validation set으로 설정해 모델의 성능을 검증하는 방식.

K-fold Cross Validation 구조도

K-fold cross validation은 다음과 같은 과정을 거친다.

 

  1. 먼저 전체 data set을 Train Set과 Test Set으로 나눈다.
  2. 그 중 Train Set을 K개의 Fold로 나눈다.
  3. 첫 번째 Fold를 Validation Set으로, 나머지 폴드들을 Train Set으로 사용해서 훈련 및 평가를 한다.
    A. Train Set(나머지 폴드)로 학습하고, Validation Set(첫 폴드)로 평가한다.
  4. 차례대로 다음 폴드를 Validation Set으로 사용해서, 3-A와 같은 과정을 반복한다.
  5. 총 k개의 테스트 결과나 나오며, 이 k개의 평균이 해당 모델의 성능으로 판단한다.

 

 K-fold Cross Validation의 활용

K-fold Cross Validation은 기본적으로 모델의 성능을 검증하는 목적을 가지고 활용된다.

좀 더 세부적으로 따지자면 이는 상황에 따라 모델 선택, 혹은 모델 튜닝(파라미터)에 사용 가능하다.

 

1. 모델 선택

Regression 모델 A와 B가 있다고 가정하자

각각의 Regression은 동일 데이터를 사용하지만 사용하는 Feature은 다르다고 한다면

  1. 전체 데이터셋을 k개의 fold로 분리
  2. 모델 A, B에 대해 k-fold cross validation 진행  →  이 경우 각 iteration에서 측정된 정확도(AUC라 가정)의 mean 값을 이용해 각 모델 정확도 비교
  3. 더 높은 정확도가 나온 모델을 선택, 해당 모델에 대해서 전체 데이터셋을 이용해 재적합 진행

위 과정을 통해 성능이 좋은 모델을 선택해주면 된다.

 

2. 모델 튜닝(파라미터)

이번엔 어느 한 고정된 머신러닝 / 딥러닝 모델이 있다 가정하자.

  1. 전체 데이터셋을 train, test set으로 분리
  2. Train set을 k개의 fold로 분리
  3. k-fold cross validation 진행  →  사용자가 설정한 파라미터의 조합에 대해 iteration 진행, 정확도(역시 AUC로 가정)의 평균을 산정
  4. 더 높은 정확도가 나온 모델 파라미터를 선택하여 해당 파라미터로 train set에 대해 재적합 진행
  5. 기존 split해 놓은 test set에 대해 performance 측정

3번 과정에서는 예를 들어 5개의 fold로 나눈다고 가정해보자.

기존 모델의 2가지 parameter을 조정하며 모델을 튜닝한다 하고 각 parameter이 5가지, 10가지 후보군이 있다고 가정했을 시

  • 총 iteration 수 : 5 * 5 * 10 = 250번의 iteration 필요

이러한 점만 놓고 봐서는 모델 튜닝의 경우 굉장히 많은 시간과 비용이 소모될 것이라 예상한다.

 

※ 참고한 사이트들

https://velog.io/@recoder/Cross-Validation

 

[Recommend] K-Fold Cross Validation(CV, 교차 검증)의 개념

인공지능 모델의 평향 학습을 방지하기 위한, 교차 검증 기법의 개념

velog.io

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=hsj2864&logNo=222215638480&categoryNo=53&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=search 

 

[ K-fold Cross Validation] 모델 선택 or 모델 튜닝.

요즘은 Cross validation (교차검증)에 대한 개념들이 정리가 잘 되어 있지만, train / validation / test...

blog.naver.com