Week 01: Prediction study design, Types of errors


  • Prediction motivation
  • What is prediction?
  • Relative importance of steps
  • In sample and out of sample errors
  • Prediction study design
  • Types of errors
  • Receiver Operating Characteristic
  • Cross validation
  • What data should you use ?


Prediction study design


만약 validation set이 없다면 반드시 test set으로는 단 한번만 평가해라.

그렇지 않고 여러번 test해서 그중 최적의 model을 선택하게 된다면 training set이랑 다르지 않게 된다.


■ Avoid small sample sizes

왜 test data set이 커야하는지에 대한 이야기 이다.


만약 Diseased 와 healthy를 구분하는 문제가 있다고 하자.

이것의 알고리즘이 

$$\left( \frac { 1 }{ 2 }  \right) ^{ sampleSize }$$

를 따른다고 하자.


그냥 랜덤으로 돌아가는 알고리즘이다.


1번의 수행으로 100%의 정확도를 달성할 확률은 50%이다.

하지만 10번의 test 셋에대해서 100%를 달성할 확률은 0.10% 이다.


이러한 사실을 통해서 왜 test 사이즈가 커야하는지를 알 수 있다.


■ Rule of thumb for prediction study design


large sample size가 주어졌다면

60%를 training 

20%를 test

20%를 validation


Medium sample size가 주어졌다면

60% training

40% testing


If you have a small sample size

Do cross validation

Report caveat of small sample size




Types of errors



■ Basic terms

prediction하는 것이 무엇이냐에 따라 Positive와 Negative의 정의는 달라진다.

여기서는 아픈 사람을 찾아내는 것을 목표로 한다고 가정 한다.


Positive = identified 

Negative = rejected


TP = correctly identified 

FP = incorrectly identified 

TN = correctly rejected

FN = incorrectly rejected


Medical testing example:

TP = Sick people correctly diagnosed as sick

FP = Healthy people correctly identified as healthy

TN = Healthy people correctly identified as healthy

FN = Sick people incorrectly identified as healthy




■ Key quantities




Sensitivity (recall) -> Pr ( positive test | disease ) 

-> 예측되어지는 확률인데, 주어진 진짜 Disease인 것들에 대해서 예측되어진 Disease를 나타내는 확률이다.

recall만 무조건 높다고 좋을 수 없는 이유는, 비록 재현율은 100%가 나올지 모르지만, 정확도가 매우 낮을 수도 있다.

무작정 많은 환자들을 검출하겠다고 막무가내로 모두다 아픈 환자로 취급 할 수는 없다.

Specificity -> Pr ( negative test | no disease )

Positive Predictive Value (precision) -> Pr ( disease | positive test )

-> 환자라고 예측한것들 중에서 실제로 환자인 것을 의미한다.

precision만 높으면 안되는 이유는 다음과 같다.

무작정 정확도만 높이자고 정말 아픈사람만 환자로 취급한다면 그래서 대다수의 잠재적인 환자들은 무시한다면 당장 정확도는 높일 수 있지만, 많은 FN를 발생 시키므로 전체 실제 환자를 재현하는것에는 실패했다고 할 수 있다.

Negative Predictive Value -> Pr ( no disease | negative test )

Accuracy -> Pr ( correct outcome )

-> Positive와 Negative가 모두 동등하게 중요할 때 사용 되는 measure 이다.


Sensitivity (recall) -> TP / (TP + FN)

Specificity -> TN / (FP + TN)

Positive Predictive Value (precision) -> TP / (TP + FP)

Negative Predictive Value -> TN / (FN + TN)

Accuracy -> (TP + TN) / (TP + FP + NF + TN)



좀더 실제적인 예를 보면 아래와 같다.


  • 유병률 0.1%인 일반적인 환자 분포와

  • 유병률 10%인 high risk sub-population 분포가 있다고 하자.


두 분포에 대해서 모두 sensitivity와 specificity가 99%인 좋은 모델이 있다고 하자.

즉, 환자에 대해서도 99%로 prediction하며

일반 사람들에 대해서도 99%로 prediction하는 알고리즘 인것이다.

Accuracy (정확도)는 당연히 99% 이다. 하지만 한쪽 Class가 유난히 작은 분포를 가지고, 이것의 발견이 중요한 상황에서는 Accuracy는 의미가 없다. 즉 유병률이 0.1%인 집단에서는 대부분 환자가 아니므로 정확도가 해당 모델의 유용성을 평가할 수 있는 지표로 올바르지 않다.


아래의 질문을 통해서 각각의 Evaluation Measure 특성을 파악해 보자.


- Sensitivity와 Specificity만 보면 안되는 이유?

유병률 0,1%인 집단 (General population as fractions)



유병률 10%인 집단 (At risk sub-population as fraction)


위와 같이 precision (positive predictive rate)이 0.1% 유병률인 집단에 대해서는 9%로 급격히 안좋아 지는것을 알 수 있다.

따라서 샘플의 특성에 대해서 다른 고려를 해야한다.

그리고 이렇기 때문에 recall과 precision을 동시에 고려해서 evaluation 해야 한다.


하지만 그래도 10만명 검사할것을 1098명으로 줄였기 때문에 의미 있다고 할 수 있다. 비록 precision이 매우 낮자다고 할 지라도 말이다.


- Accuracy만 보면 안되는 이유?

Accuracy의 정의 (TP + TN) / (TP + FP + NF + TN)에 의해서

만약 아래와 같이 유병률이 0.1%라고 하면 대부분에 대해서 TN이므로 Accuracy가 의미가 없다.


- Precision만 보면 안되는 이유?

실제 예측한것들 중에서 TP의 비율을 보는 P(TP)이므로 고의적으로 TP를 축소 할 수도 있다.

적게 예측하여 정확도를 올림.


- Recall (Sensitivity) 만 보면 안되는 이유?

Recall의 정의는$\frac {TP}{(TP+FN)}$ 이다.


아래와 같은 결과를 얻었다고 하면,

 

Actual

Prediction

 

         +

-

+

10000

50000

-

100

39900


Recall 10000 / 10100 *100 = 99%

이지만 precision16%이다.

, 일부러 많이 Positive로 예측해서 최대한 Recall을 올릴 수도 있다.




■ 연속 데이터를 위한 방법


간단하게 얼마만큼 참값과 유사한지를 알아내기위해서 두가지 간단한 기법을 사용할 수 있다.

연속 데이터 일 때 사용 한다.


Mean Squared Error (MSE)

$$\frac { 1 }{ n } \sum _{ i=1 }^{ n }{{(Prediction_i-Truth_i)}^{2}} $$

예측값과 참값간의 차이를 구한다음 제곱해서 모두 더한다음 전체 샘플 숫자로 나눈다.

샘플 데이터의 스케일을 모른다면 해당 수치의 해석이 난해하다.

그냥 단수히 값만으로는 어느정도 수준으로 모델이 정확한지 알아내기 어렵다.


Root Mean Squared Error (RMSE)

좀더 연속데이터를 위한 일반적인 수치값은 아래와 같다.

$$\sqrt { \frac { 1 }{ n } \sum _{ i=1 }^{ n }{ { (Prediction_{ i }-Truth_{ i }) }^{ 2 } } }$$



■ Common error measures


Mean squared error (or root mean squared error)

연속형 데이터 일때 사용 한다.

outlier에 민감하다는 특성을 가지고 있다.


Median absolute deviation

연속형 데이터 일때 사용 한다.

outlier에 대해서 다소 MSE보다는 덜 민감하다는 특성이 있다. 


Sensitivity (recall)

실제 positive들 중에서 얼마만큼 놓쳤는지를 알고 싶을 때 사용 한다. 


Specificity

실제 negative를 얼마만큼 놓쳤는지를 알고 싶을 때 사용 한다.


Accuracy

False Positive들과 False Negative들의 가중치가 같을때 사용 된다.


Concordance

One example is kappa





+ Recent posts