ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [머신러닝] Training (훈련) vs. Validation (검증) vs. Test (시험) 데이터셋 비교 분석하기!
    카테고리 없음 2019. 12. 12. 23:51
    반응형

    1. Training (훈련) 데이터셋

     

    훈련 데이터셋은 아래에 보이듯이 모델을 적합하기 위해서 사용되는 데이터 샘플을 의미한다. 여기서 중요한 표현은 적합할 때 사용된다는 부분이다. 왜냐하면 다른 데이터셋들도 우리가 가진 데이터 샘플이긴 마찬가지지만, 용도가 다르기 때문이다. 

     

     

    모델을 학습하다는 것은 결국 웨이트와 바이어스 계수 값들을 추정하는 것이고, 이것을 하기 위해서 실제로 우리가 보고(see) 학습하는(learn) 데이터를 훈련 데이터셋이라고 한다. 

     


     

    2. Validation (검증) 데이터셋

     

    검증 데이터셋에서 중요한 표현은 모델의 하이퍼파라미터를 미세조정(Fine-Tuning) 할 때, 훈련 데이터셋에 적한된 모델의 바이어스가 없는 평가 지표를 제공하는 데이터 샘플이라는 것이다. 그리고 추가로 검증 데이터셋이 모델을 만들어갈 때 사용되게 되면 그만큼 바이어스가 더욱 발생하게 된다는 것도 기억하자. 

     

     

    검증 데이터셋은 주어진 모델의 평가를 위해서 사용되지만, 이것은 매번 학습 할 때 마다 자주 수행하는 평가를 위한 것이다. 보통 검증 데이터셋을 통해서는 앞에서도 설명했듯이, 모델의 하이퍼파라미터를 미세조정할 때 사용한다.

    따라서, 모델은 때때로 이 데이터를 보지만, 이것을 통해서 학습을 하진 않는다. 이로 인해서 검증 데이터셋은 모델에 영향을 어떤 측면에서 영향을 주겠지만, 이것은 간접적이라고 할 수 있겠다. 

     


     

    3. Test (시험) 데이터셋

     

    시험 데이터셋에서 중요한 표현은 Final! 최종 모델에 대한 바이어스가 없는 평가를 제공한다는 것이다.

     

     

    Test 데이터셋은 모델을 평가하는 표준을 제공한다. 이 데이터셋은 완전하게 모델이 훈련되었을 때, 딱 한번만 사용된다. 완전하게 훈련되었다는 것은 훈련 데이터셋과 검증 데이터셋을 둘 다 사용하여 최종적으로 학습된 모델을 의미한다. 시험 데이터셋은 일반적으로 경쟁하는 모델들을 평가하기 위해서 사용된다.

    예를 들어, Kaggle 대회에서, 검증셋은 초기에 훈련셋과 함께 제공되는데, 실제 시험 데이터셋은 오직 경쟁이 끝나려고 할 때, 제공되고, 시험 데이터셋에서의 성능을 바탕으로 승자가 결정된다. 많은 경우, 검증 셋이 시험 셋으로 사용되지만, 이것은 좋지 못한 것이다. 시험 데이터셋은 일반적으로 잘 큐레이터되어 있다. 

    지금까지 다루어온 세 가지 데이터셋에 대해서 도식화 하면 아래와 같다. 

     

     

     


     

    4. 데이터 쪼개는 비율은?

     

    끝으로 데이터를 위와 같이 세 가지 데이터셋(훈련 / 검증 / 시험 데이터셋)으로 쪼갤 때 어떤 비율로 해야 하는지에 대해서 잠깐 알아보자. 

    이것은 주요하게 2가지에 의존한다. 

     

    1. 보유한 데이터의 전체 샘플 개수

     

    2. 훈련을 하는 실제 모델에 사용되는 샘플 개수

     

    몇몇 모델들은 상당한 데이터를 훈련하기 위해서 필요로 한다. 따라서, 이러한 경우, 더욱 큰 훈련 셋을 위한 최적화를 해야할 것이다. 매우 적은 하이퍼파라미터를 가지는 모델은 검증하고 미세조정하기 쉬울 것이다.

    그래서, 이러한 경우에는 검증셋의 사이즈를 줄일 수 있겠다. 하지만 만약에 모델이 많은 하이퍼파라미터를 가진다면, 더욱 큰 검증셋을 가지길 원할 것이다. 비록 Cross Validation을 고려해야 할지라도 말이다. 또한, 만약에 아예 하이퍼파라미터가 없는 모델을 가졌거나, 있다고 하더라도 쉽게 미세조정이 안되는 경우에는 검증 셋도 필요가 없다. 

    훈련-시험-검증 데이터셋의 쪼개는 비율은 또한 케이스 바이 케이스인 경우가 많다. 그리고 그것은 더 많은 모델을 학습해보면서 시행착오를 통해서 결정하도록 한다. 

    Cross Validation에 대해서, 종종 사람들은 데이터셋을 2개로 쪼갠다. 즉, 훈련 데이터셋과 시험 데이터셋으로 말이다. 이런 후, 시험 데이터셋은 놔두고, 랜덤으로 X%의 비율로 훈련 데이터셋에서 실제로 훈련 데이터셋이 되는 데이터를 선택한다. 그리고 나머지 (100 - X)%는 검증 데이터셋이 된다. 여기서 X는 고정된 값으로 예를 들어 80%라고 해보자. 모델은 그러면 반복적으로 이러한 다른 셋에 대해서 훈련하고 검증하는 과정을 거친다.

    이것을 하는 여러 방법이 존재하는데, 보통은 Cross Validation이라고 알려져 있다. 기본적으로 훈련 데이터셋을 사용해서 여러 훈련과 검증 데이터셋을 생성한다. Cross Validation은 Overfitting을 피하고, K-fold Cross Validation과 함께 더욱 인기가 높아지고 있다. (K-fold CV가 가장 자주 사용되고 인기있는 Cross Validation 방법이다) CV와 K-fold CV 자체에 대한 내용은 따로 포스팅으로 더욱 자세히 다루겠다.  

     

    %출처: https://towardsdatascience.com/train-validation-and-test-sets-72cb40cba9e7

    반응형

    댓글

Designed by Tistory.