(1) K-Fold Cross Validation
머신러닝 학습을 시행하는 경우 최적의 하이퍼파라미터 이를테면 Learning Rate, Epoch 등의 값을 찾는 것이 중요한 절차이다. Cross Validation 이라는 단어에 대하여 먼저 파악해보면, 머신러닝이나 딥러닝 모두에서 학습을 시행할 경우 가장 중요한 것은 Training 과정에서의 높은 정확도가 아니다. 일반적으로 우리가 모델을 학습하여 배포할 경우 예상되는 미지의 Label(정답)이 주어지지 않는 경우에 대한 정확도를 좀 더 중점적으로 고려해야한다.
이것을 위하여 Cross Validation 이라는 과정이 필요하게 된다. 간단하게 가지고 있는 데이터셋에서 학습에 사용할 데이터와 검증에 사용할 데이터 좀 더 구체적으로는 학습, 검증, 테스트에 대한 모두를 고려해야한다.
Cross 라는 단어에 알맞게 주어진 데이터셋을 나누어 교차로 검증하겠다는 것이다.
위의 그림에서 이해하는 편이 긴 글보다는 설득력이 있을거라 생각한다.
자, 그럼 이제 K-Fold 라는 의미에 대하여 생각해보면 주어진 데이터셋에서 K 개의 폴더로 분할한다고 생각해보자.
위의 그림에서는 K=5 이다. 5개의 폴더 중 1개의 Test 셋을 남겨둔 채 나머지 데이터셋의 폴더를 Train 에 사용한다.
그렇게 5번의 반복을 거치게 되면 결국 모든 데이터셋의 폴더에 대하여 학습과 검증을 시도했기 때문에 어느정도 일반화된 성능을 보였다고 할 수 있다.
하지만! 문제점을 고려해보자 만약 저 5개의 Test set 에서 하나가 굉장한 Imbalanced Data 라고 생각해보면 좋다.
가령 100개의 공 중 빨간색 공과 파란색 공을 분류해야하는 문제라고 가정한다면 그 때, 첫번째 Test Set 이 100개의 빨간색 공과 파란색 공이 있는 데이터셋이었다고 가정하면. 분류기가 그 폴더를 지날 경우 100개 모두 빨간색이라고만 계속해서 가정을 하더라도 정확도는 100%가 될 것이다. 그렇다면 하나의 폴더는 사용의 의미가 없어지는 것이다.
(100개의 빨간색 공이 모두 모여있기 때문에 다른 데이터셋의 폴더에는 비교적 적은 빨간색 공이 있는 것을 추가 가정)
이런 문제를 해결하기 위하여 Stratified Cross Validation 이라는 방법을 도입할 수 있다.
만약 남여 성비에 대한 class 분포에 대하여 이와같이 불균형인 데이터가 주어졌다면 균일한 분포를 갖도록 K개의 폴더에 데이터셋을 나누어 담을 수 있다는 전제이다. 모든 폴더가 동일한 class 혹은 label 의 분포를 갖는다면 일반화할 수 있는 성능을 좀 더 엄밀하게 정리하고 있다고 생각할 수 있다.
'MachineLeaning' 카테고리의 다른 글
머신러닝- 관련 정리 (0) | 2022.02.03 |
---|---|
Class Imbalanced Problem (0) | 2021.09.01 |
Unsupervised Learning - Clustering ( KMeans, Hierarchical, DBSCAN) (0) | 2021.09.01 |
Ensemble - (Bagging, RandomForest, Boosting(Adaboost, lightgbm, Catboost), Stacking (0) | 2021.08.31 |
Decision Tree (0) | 2021.08.30 |