1. cross-validation은 무엇이고 왜 사용할까? 

 

train과 test를 8:2 혹은 7:3으로 나누어서 train data로 학습을 시키고, test data를 이용해 얼마나 답을 잘 맞추는지 확인합니다. 

그런데, 여기서 중요한 점은 한가지 test data에 맞춰서 다른 파라메터들을 조정해주면 test data에만 맞는 모델로 점차 발전할 것입니다. 

이를 test data에 overfitting(과적합)되었다고 합니다. 

 

그래서 실제 데이터를 사용해서 모델에 넣으면 엉망인 결과가 나올수도 있습니다.

 

이를 해결하고자 하는 과정이 cross-validation (교차검증)입니다. 

 

cross-validation을 하지않고, train과 test데이터를 나누는 과정

위처럼 train과 test를 나누는 과정을 데이터 구간 k에 대해서 subset을 만들고 k구간을 평가하는 방식으로 진행합니다. 

cross-validation

k개의 test data에 대해서 모두 결과를 검증합니다. 예를 들면, k개에 대한 accuracy의 평균을 사용해서 모델의 성능을 평가해주는 방식으로 수행합니다. 

 

2. cross-validation의 장점과 단점

장점

  • 평가 데이터가 편향되는 것을 방지할 수 있다. 
  • 정확도를 향상시킨다.
  • 데이터가 부족해서 underfitting되는 것을 막을 수 있다.

단점

 

  • 학습시간이 오래걸린다.

 

3. 교차검증 방법들

 

몇가지 유명한 방법이 있지만, 가장 많이 사용하는 k-fold validation에 대해서 설명하려고 합니다. 

 

k개의 데이터 폴드를 만들어서, 한번의 iteration에 다른 test data를 사용하고 나머지 k-1개의 train data로 학습을 하여 

데이터 폴드 세트(train k-1개와 test 1개)에서 나온 검증 결과들을 평균내어 사용합니다.  

 

 

 

본인이 가진 데이터가 편향되지 않고 결과가 robustness함을 증명함으로서 한쪽 데이터에 치중되는 것을 방지해줍니다. 

 

CV는 모델을 평가하기 때문에 각 데이터별로 모델의 결과가 다르게 나온다고 데이터를 변형하는 방법은 맞지 않습니다. 

데이터셋은 우리가 갖고있는 데이터이고, 모델이 더 좋게 나올 수 있는 방향으로 하이퍼파라메터 튜닝을 한다던가, 변수선택을 잘 한다던가 이런방식으로 모델을 수정하여 정확도를 높이는 방향으로 나아가야합니다. 

 

예제가 좋은 블로그가 있어서 가져와봅니다. 

참고하시면 좋은 블로그인것 같아요.

 

daryan.tistory.com/21

 

001 교차 검증 (cross validation)의 예제 R 코드

안녕하세요 본 강의(포스팅)은 아래의 사이트 내용을 일부 번역하고 필자의 의견을 추가 구성한 글임을 미리 밝혀드립니다. https://www.analyticsvidhya.com/blog/2015/11/improve-model-performance-cross-valid..

daryan.tistory.com

 

+ Recent posts