Lazy vs. Eager Learning
모델 학습 방법에는 두 가지 접근 방식이 있다.
- Eager learning: Training data와 test data를 나누어 학습을 하는 방식이다. Training data를 통해 모델을 학습시킨 후, test data에 대해 모델을 적용시킨다. 대부분의 머신러닝 방법은 eager learning에 속한다.
- Lazy learning: Training data를 저장한 상태로 추가적인 학습은 진행하지 않고 (또는 최소한의 학습만 하거나), test data가 주어질 때까지 대기한다. Test data가 주어지면 정해진 알고리즘에 따라 분류를 진행한다.
- Training에 훨씬 적은 시간을 사용하지만 predicting에는 더 많은 시간을 사용한다.
- K-Nearest Neighbor (KNN) algorithm과 같은 클러스터링 방법들이 여기 속한다.
Evaluation of a Classification Model
- 모델의 성능을 평가하기 위해 사용되는 지표에 대한 설명이다. 다음과 같은 confusion matrix가 있다고 하자.
* True/False는 모델이 옳게 분류했는지 여부, Positive/Negative는 모델이 데이터를 분류한 것으로 생각하면 편하다.
→ True negative: 모델이 negative로 분류했는데 옳게 분류하였다.
→ False positive: 모델이 positive로 분류했는데 잘못 분류하였다.
Classes | (Classified) C = yes | (Classified) C = no |
(Ground truth) C = yes | True positive | False negative |
(Ground truth) C = no | False positive | True negative |
Classes | (Classified) C = yes | (Classified) C = no | Total | Recognition (%) |
(Ground truth) C = yes | 2,588 | 412 | 3,000 | 86.27 |
(Ground truth) C = no | 46 | 6,954 | 7,000 | 99.34 |
Total | 2,634 | 7,366 | 10,000 | 95.52 |
- Accuracy: 모델이 분류한 데이터 중 올바르게 분류한 데이터의 비율을 나타낸다.
Accuracy = 올바르게 분류한 데이터의 수 / 전체 데이터의 수
위의 예시에서 accuracy는 (2588+6954)/10000 = 0.9552이다. - Error rate: 모델이 분류한 데이터 중 잘못 분류한 데이터의 비율을 나타낸다.
Error rate (misclassification rate) = 1.00 - accuracy = 잘못 분류한 데이터의 수 / 전체 데이터의 수
위의 예시에서 error rate는 1.00 - 0.9552 = 0.0448이다. - Sensitivity (recall): 실제 positive (예시에서는 ground truth = yes) 중 positive로 올바르게 분류된 데이터의 비율을 나타낸다.
Sensitivity = True positive / (True positive + False negative)
위의 예시에서 sensitivity는 2588/(2558+412) = 0.8627이다. - Specificity: 실제 negative (예시에서는 ground truth = no) 중 negative로 올바르게 분류된 데이터의 비율을 나타낸다.
Specificity = True negative / (False positive + True negative)
위의 예시에서 specificity는 6954/(46+6954) = 0.9934이다. - Precision: 모델이 positive로 분류한 것 중 옳게 분류한 데이터의 비율
Precision = True positive / (True positive + False positive)
위의 예시에서 precision은 2588/(2588+46) = 0.9825이다. - F1-score: precision, recall의 조화평균이다. 서로 dependency가 존재하기 때문에 데이터 label이 불균형한 경우 보완하는 용도로 사용할 수 있다.
F1-score = 2*precision*recall/(recall+precision)
Evaluation Protocols
모델의 robustness와 reliability를 높이기 위한 여러가지 방법이 있다.
- Holdout method: 데이터를 무작위로 두 개의 independent set(training/test)으로 나눈다. Training과 test를 k번 반복해서 정확도(accuracy)를 측정한다. 이때, 정확도는 k번 반복해서 나온 정확도의 평균이다.
- Cross-validation: 전체 데이터를 동일한 크기의 k개의 subset으로 나눈다. k번 반복하며, i번째 반복에서는 i번 subset을 test set으로 나머지를 training set으로 설정하여 모델을 학습/평가한다. (k=10이라고 하였을 때, 1번째 반복에서는 1번 subset을 test set으로 2~10 subset을 training set으로 설정. 10번째 반복에서는 10번 subset을 test set으로 1~9 subset을 training set으로 설정) 정확도는 k번 반복해서 나온 정확도의 평균이다.
- Leave-one-out: k-fold cross validation를 극한으로 사용하는 버전이다. 100개의 데이터가 있으면 1개의 데이터를 제외한 99개의 데이터를 training set으로 설정하여 모델을 학습시킨다.
- Stratified cross-validation: k-fold cross validation의 특수 케이스 버전이다. 위의 경우는 데이터의 분포와 관계없이 무작위나 매뉴얼하게 데이터를 나누어 모델을 학습/평가 하였지만, 이 경우 subset의 분포(distribution)가 전체 데이터셋의 분포와 유사하게 subset을 나누어 cross validation을 진행하는 방식이다.
Ensemble Methods
모델의 정확도를 높이기 위해 여러 모델을 조합해서 사용하는 방식이다. Random forest가 ensemble 방법을 활용한 예시에 해당한다. 가장 유명한 방식으로 아래 3개 방식이 있다.
- Bagging: 단순히 여러 모델의 분류 결과를 평균내는 방식이다.
- Boosting: 이전 모델의 분류 결과에 따라 가중치를 주어 예측하는 방식이다.
- Model ensemble: 다양한 모델을 같이 사용하여 분류하는 방식이다. (즉, SVM + Descision Tree + Neural Network를 사용하여 각 모델의 결과를 가지고 판단한다.)
Bagging: Bootstrap Aggregation
앞의 random forest의 작동 방식과 동일하다.
- Training:
Bootstrap을 활용하여 original data D를 약간 변형한 데이터를 만든다. 각 모델은 변형된 데이터를 가지고 학습을 진행한다. - Classification:
Unknown sample X가 입력되었을 때, 각 모델이 예측을 진행하고 투표를 진행하여 가장 많은 투표를 받은 데이터로 분류 결과를 낸다. (majority voting)
Boosting
모델의 정확도를 높이기 위해 가중치를 사용하는 방식이다.
Process
- 각 데이터 포인트에 weight(1/d)를 할당한다.
- 1부터 k까지의 반복에서 classifier M_i가 학습되면 i번째 test set을 통해 테스트한다.
- M_i가 잘못 분류한 데이터 포인트에 대해 더 잘 학습할 수 있도록 classifier M_i+1의 가중치를 업데이트한다.
- 최종적으로 분류를 진행할 때, 각 classifier의 정확도에 따라 가중치를 주어 weighted majority voting에 따라 분류 결과를 낸다.