분류기는 학습과 테스트 과정을 거쳐서 만들어지고 평가된다.
학습 데이터는 분류기를 만드는 과정에서 사용하는 데이터를 의미하고, 테스트 데이터는 분류기를 만들 때 사용하지 않은 데이터를 의미한다. 일반적으로 분류기는 학습 데이터로 다시 테스트를 하게 되면 높은 성능을 보인다. 때문에 학습에 사용되지 않은(모델이 처음 보는) 데이터를 사용하여 모델의 성능을 평가하는 것이 일반적인다.
전체 데이터를 학습 데이터와 테스트 데이터로 나누는 다양한 방법에 대해서 정리해보고자 한다.
Holdout
전체 데이터의 2/3를 랜덤하게 선택하여 학습 데이터로 사용하고, 나머지 1/3을 테스트 데이터로 사용하는 방법이다.
Random Sampling
Holdout과 같은 방법으로 학습 및 테스트 데이터를 생성하는데, 이 과정을 k 번 반복한다. 그리고 학습/테스트 과정을 k 번 반복하여 나오는 성능의 평균 값으로 모델을 평가한다.
Cross-Validation
k-fold cross-validation
전체 데이터를 같은 크기의 k 개의 데이터로 나눈다. 그중에 한 개를 테스트로 사용하고, 나머지 데이터를 학습 데이터로 사용한다. 이 과정을 k 번 반복하여 성능을 측정하고 분류기의 성능을 평가한다.
Leave-one-out
k-fold cross validation의 한 종류이다. k가 전체 데이터 셋이 가지는 데이터의 수를 의미한다. 예를 들어, 데이터 셋이 100개의 데이터를 가지면 k가 100이 된다. 즉, 1개의 데이터를 테스트 셋으로 나머지 99개의 데이터를 학습 셋으로 설정하여 모델 학습 및 테스트를 100번 반복한다.
Bootstrap
632 bootstrap
부트스트랩은 반복 추출을 허용한다. 개수가 N 개인 데이터에서 N 번 랜덤하게 데이터를 뽑는다. 이때, 뽑힐 확률은 동일하며 중복을 허용한다. 이렇게 N회 반복하는 동안 뽑힌 데이터를 학습 데이터로 사용한다. 그리고 한 번도 뽑히지 않은 데이터를 테스트 데이터로 사용한다. 다른 방법들과 유사하게 k번 반복해서 학습 및 테스트 데이터를 생성하고 평균적인 수치로 분류기의 성능을 평가한다.
632 bootstrap인 이유
1회 추출 시에 데이터가 선택될 확률은 1/N이다. 반대로 선택되지 않을 확률은 1-(1/N)이다. 이 행동을 N 번 반복하므로, 데이터가 선택되지 않을 확률은 ${ ( 1-{ {1} \over {N}} ) }^N$이 된다. 그리고 N이 무한대의 값을 가지게 되면 이 값은 $e^{-1}$이 된다.
- $\lim_{n \to \infty}{ { (1+ { {1} \over {n} }) } ^n } = e$
- $\lim_{n \to \infty}{ { (1 - { {1} \over {n} }) } ^n } = e^{-1} = 0.368$
그래서 데이터가 선택될 확률은 63.2%가 되어 방법론의 이름이 632 bootstrap으로 되었다고 한다.
'당당한 기계학습' 카테고리의 다른 글
분류기 평가 방법 (ROC 커브) (0) | 2021.02.09 |
---|---|
분류기 평가 방법 (costs and benefits) (0) | 2021.02.08 |
분류기 평가 방법 (Accuracy, Error rate, Precision, Recall, F-score) (0) | 2021.02.05 |
나이브 베이즈 분류 (Naive Bayes Classification) (0) | 2021.02.02 |
의사결정나무 (Decision Tree) (3/3) (0) | 2021.01.29 |