Skip to content
Go back

교차검증이란

Updated:
Edit page

Table of contents

Open Table of contents

1. 교차검증(Cross Validation)

데이터를 나누는 이유에 대해

모델의 학습과정에서 학습/검증 데이터를 나눌 때 단순히 1번 나누는게 아니라 K번 나누고 각각의 학습모델의 성능을 비교하여 평균 값으로 도출해내는 방법이다.
DL_9
여기서 Validation set은 학습에 영향을 미치는가.
답은 학습에 참조되기는 하나, 학습 가중치 업데이트에는 영향을 미치지 못한다.
학습 모델은 가중치를 업데이트 하면서 학습을 한다.
Training set 배치 마다 학습을 하며, 해당 가중치에 대해서 업데이트가 되는데
validation set 은 한 epoch를 돈 뒤에 학습이 잘되었는지 체크만 해주는 역할이기 때문에, 가중치 업데이트에는 영향을 미치지 않는다.

교차 검증이란

Training set과 Validation 을 여러번 나눈 뒤 모델의 학습을 검증하는 방식이다.
DL_9

  1. 데이터를 K 등분한다. (이미지의 경우 K=5)
  2. 1/5 를 검증데이터로, 나머지 4/5 를 학습 데이터로
  3. 1/5 를 검증데이터를 바꾸며 성능 평가
    —> 총 5개의 성능 결과가 나올 것이다. 이 5개의 평균을 해당 학습 모델의 성능이라 한다.

2. 교차 검증의 효과 및 사용이유

  1. 모든 데이터 셋을 평가에 활용하기 때문에 데이터셋이 부족할 때 적용하는 방법
    별도로 Validation set으로 빼두었던 데이터도 다시 학습에 재활용되기 때문에, 전체 데이터가 학습/검증으로 한번에 나누기 작은 경우 위와 같이 여러번 데이터를 나누고 각 교차검증마다의 모델 성능을 비교하는 방식으로 학습을 진행하면 된다.
  2. K개의 성능 결과를 통합하여 하나의 결과를 도출하기 때문에 보다 일반화된 모델 성능 평가 가능
    하나의 학습/ 검증 데이터로 이루어진 모델은 해당 학습데이터에만 과적합되었을 가능성이 높다.
    하지만 여러차례 나누는 교차검증 방식을 통해 전체 데이터 전 범위를 학습하고, 검증 데이터로 성능을 평가함으로써
    보다 일반화된 모델을 생성할 수 있다.

3. 예외적인 상황

데이터 클래스가 불균형한 경우 계층별 k-겹 교차 검증(Stratified k-fold cross validation)를 사용한다.
가령 금융거래 사기 분류 모델에서 전체 데이터중 정상 거래 건수는 95% 사기인 거래건수는 5% 라면,
앞서 설명한 일반적인 교차 검증으로 데이터를 분할했을 때, 사기 거래 건수가 고루 분할 되지 못하고 한 분할에 몰릴 수 있다.
이때 데이터 클래스 별 분포를 고려해서 데이터 폴드 세트를 만드는 방법이 계층별 k-겹 교차 검증 이다.

DL_9
각 데이터 폴드마다 정상 거래건수, 사기 거래 건수가 고루 들어갈 수 있도록 데이터 클래스별 분포를 고려한 분할 방식.
데이터 클래스 별 데이터가 아주 불균형한 상황에서는 이 방법을 써야한다.


Edit page
Share this post on:

Previous Post
딥러닝 면접 질문과 답변
Next Post
fastapi를 이용한 ai 서버 구축