Accuracy Measure
Accuracy의 기준은 대표적으로 4가지가 있다.
이 중 암 진단에서는 sensitivity와 precision을 중요하게 생각한다.
- sensitivity = t-pos / pos
- positive하다고 판단된 것 중 진짜 positive한 비율
- specificity = t-neg / neg
- negative하다고 판단된 것 중 진짜 negative한 비율
- precision = t-pos / (t-pos + f-pos)
- 진짜 positive 한 것 중 postivie하다고 판단된 비율
- accuracy = (t-pos + t-neg) / (pos + neg)
- 전체 데이터 중 제대로 판단된 비율
- = sensitivity * pos/(pos+neg) + specificity * neg / (pos + neg)
Confusion matrix로 나타내면 아래와 같다.
F1 Score
Precision과 recall의 조화평균을 F1 score라 한다.
Accuracy는 데이터의 분포가 고를 때 사용하기 적합하지만 그렇지 않을 때는 사용하기 부적합하다.
이런 상황에서 F1 score를 이용하면 모델의 성능을 평가하기 좋다.
F1 score는 0~1사이의 값을 가지며 값이 클수록 좋다.
$F1 \; score = \frac{2}{\frac{1}{precision} + \frac{1}{recall} }$
Predictor Error Measure
틀리되 적게 틀리는 것이 중요하다.
이를 위해 ground-truth에 대해서 predicted가 얼마나 떨어져있는가를 계산한다.
Loss Function
얼마나 틀렸는가를 계산하는 함수이다.
- absolute error = $| y_i - y_i`|$
- 절댓값을 이용해서 계산한다.
- 틀린 정도가 공정하게 매겨진다.
- squared error = $ (y_i - y_i`)^2 $
- 제곱을 이용해서 계산한다.
- 조금이라도 더 틀린 것이 훨씬 더 나쁜 경우에 사용한다.
- 즉, outlier의 존재를 강조한다.
Test Error
= Generalization error
test set에 대한 average loss를 test error라 한다.
단순히 평균을 통한 에러는 그 에러가 얼마나 나쁜지를 알기 힘들다. => Mean error
이를 알기 위해서 평균으로 예측했을 때의 error로 나눠서 상대적인 크기를 비교한다. => Relative error
Mean squared error는 outlier의 존재를 더 강조해서 나쁘게 만든다.
Mean squared error보다 root를 씌운 square-root mean squared error가 더 자주 사용된다.
Squred-root mean squared error는 error의 값을 상대적으로 같게 만든다.
Evaluating the Accuracy of a Classifier or Predictor
다음과 같은 evaluating 방법이 있다.
- holdout method
- cross-validation(k-fold)
- leave-one-out
- stratified cross-validation
- bootstrap
- ensemble
Holdout Method
training set과 test set을 randomly disjoint하게 나눠서 model construction과 accuracy estimation에 사용한다.
sampling에 의한 bias가 존재할 수 있어서 holdout을 여러 번 사용해서 그의 평균으로 accuracy를 계산한다.
Cross-Validation(k-fold)
동일한 크기의 k개의 mutually exclusive subset을 나누고 여러번 반복하여 학습한다.
i번째 iteration에서는 $D_i$를 test dataset으로 사용하고 나머지는 training dataset으로 사용한다.
holdout은 전체 데이터를 일정 비율로 나눠서 상당 부분을 test에 사용하기 때문에 데이터가 적을 때는 holdout이 부담스럽다.
따라서 데이터가 적을 때는 cross-validation을 선호한다.
Leave-One-Out
Cross-validation의 special case이다.
전체 데이터를 각 tuple에 대해서 쪼개고 각 iteration에서 하나의 tuple을 test로 사용한다.
Stratified Cross-Validation
Cross-validation의 special case이다.
각 fold에서의 class distribution이 전체 데이터의 class distribution과 동일하도록 partition한다.
예를 들어, 전체 데이터에서 pos:neg = 7:3이었다면, 각 fold에서의 pos:neg도 7:3이 유지되도록 한다.
Bootstrap
데이터셋의 개수가 많지 않을 때 사용한다.
Sampling이 되더라도 버려서 disjoint하게 만드는 것이 아니라 relacement를 해서 다시 sampling이 될 수 있도록 한다.
대표적으로 .632 bootstrap이 있다.
.632 bootstrap은 같은 sample이 중복될 수 있게 하고 K번 sampling을 통해 training set을 만들고, 한번도 선택되지 않은 것들에 대해 testset을 만든다.
Accuracy를 계산할 때 training set에 대한 accuracy도 같이 고려한다.
Testset이 만들어지는 비율은 한번도 선택되지 않을 확률이므로 $(1-\frac{1}{d})^d \rightarrow e^{-1} = 0.368$이 된다.
따라서 accuracy는 다음과 같다.
'Computer Science > Data Science' 카테고리의 다른 글
Data Set, Data Object, Attributes (0) | 2022.06.02 |
---|---|
[Classification] Ensemble - 정확도를 높이기 위한 방법 (0) | 2022.04.18 |
[Prediction] Regression (0) | 2022.04.18 |
[Classification] K-NN(K-Nearest Neighbor) Algorithm (0) | 2022.04.18 |
Eager Learning vs. Lazy Learning (0) | 2022.04.18 |
댓글