반응형


안녕하세요, 츄르 사려고 코딩하는 집사 !

코집사입니다.


이번 글에서는 저번에 Overfitting 에 대한 글을 썼었는데, 그 글에서 Validation data set에 대한 교차검증(Cross Validation)이라는 용어를 썼었죠. 그  Cross Validation에 대해 글을 써보려고 합니다.


Overfitting에 관한 URL은 아래와 같습니다.


https://yongku.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D%EA%B3%BC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B3%BC%EC%A0%81%ED%95%A9Overfitting-%EA%B3%BC%EC%A0%81%ED%95%A9Overfitting-%ED%99%95%EC%9D%B8%ED%95%B4%EB%B3%B4%EA%B8%B0



그러면 Cross Validation에 대한 글을 시작하겠습니다.


교차검증(Cross Validation)이란??


교차검증(Cross Validation)을 알기 전에, Validation data set을 알아야 합니다.

검증 데이터 셋(Validation Data Set)은 모델에 대해 Training data set으로 모델링을 할 때, 모델이 학습을 잘하고 있는지 중간에 확인을 하거나, 확인을 해서 하이퍼 파라미터(Hyper Parameter, 사용자가 임의로 값을 줄 수 있는 Parameter)를 조절할 수 있게 해주는 데이터 셋입니다. 이 Validation data set은 Training data Set에서 7:3 또는 8:2 비율로 나눠서 Validation Data Set을 만들어 줍니다. 


Validation Set에서 Cross Validation이 나왔는데, 교차검증은 대체적으로, Training data set에 대한 크기가 작은경우 사용을 합니다. Training data set의 크기가 작다면, Test Set에 대한 모델의 성능 평가를 할 때 정확하지 않는 결과가 나올 수 있습니다. 그래서, 교차검증은 이러한 문제를 해결하기 위해 많이 사용하곤 합니다.

그래서, 모든 data가 꼭 한 번은 validation set으로 이용되어 문제점을 해결합니다. 즉, 모델을 Training data로 모델링을 하는데 이 Training data에서 여러 부분으로 나눠 한 부분은 Validation data로 이용한다는 말입니다. 이 여러 부분을 나누는 기준은 대부분 5개나 10개로 나눠 사용을 합니다. 이해를 좀 더 쉽게 하기 위해 아래의 그림을 보겠습니다.



아래의 그림을 보겠습니다.


Training data를 5개로 나눠 1-iteration 당 1개의 부분씩 Test를 이용하여 Cross Validation을 수행합니다.

1-iteration은 횟수로 생각하면 쉽게 이해가 될 것입니다.

그래서 위의 그림처럼 Cross Validation은 수행을 하게 됩니다.


Cross Validation의 목적은 크게 2가지입니다.

첫 번째로, 위에서 말했던 데이터가 작을 때의 문제점을 해결하기 위해 사용하는 목적이 있습니다.

두 번째로, 모델링의 선택입니다. 

모델링을 하면서 더 좋은 Parameter들로 구성된 모델을 선택하는 것입니다.

또한, Hyper Parameter를 수정을 하여 더 좋은 모델을 선택할 수도 있죠.


데이터를 다룰 때 Cross Validation 같은 것은 거의 필수적이라고 볼 수 있죠. 다른 검증 방법도 있으니 이것만 하라는 것은 아닙니다.


위의 설명은 K-Fold Cross Validation 입니다. K는 Training data set을 몇 개로 나누느냐에 따라 K 값이 다릅니다.

위의 그림에서는 K는 5입니다.



이상으로, 츄르 사려고 코딩하는 집사!

코집사였습니다.


반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기