본문 바로가기
Computer Science/Data Science

Classifier Accuracy Measure

by Gofo 2022. 4. 18.

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는 다음과 같다.

 

 

댓글