Week 01: Receiver Operating Characteristic, Cross validation


  • 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 ?



ROC curves


Receiver Operating Characteristic Curves (ROC curves)


prediction algorithm의 좋은 정도를 측정하는 좋은 measure 이다.


Why a curve ?


In binary classification you are predicting one of two categories

Alive / Dead

Click on add / don't click


But your prediction are often quantitative

Probability of being alive

Prediction on a scale from 1 to 10


The cutoff you choose gives different results

   

같은 모델이라도 0.7 부터 alive로 설정한지 그 이하로 설정 할지에 따라서 결과가 달라지게 된다.



ROC curves


상세한내용 Wekipedia


사람들은 ROC curve를 이용하는데


X축은 1 - specificity 

다른 말로, P(FP)와 같다.

정리하면 아래와 같다.

$$1\quad -\quad specificity\quad =\quad 1\quad -\quad \frac { TN }{ (FP+TN) } \\ =>\quad \frac { FP }{ FP+TN } \quad =\quad Probability\quad of\quad FP\quad =\quad P(FP)$$



Y축은 sensitivity

다른말로 P(TP)와 같다.

정리하면 아래와 같다.

$$Sensitivity\quad =\quad \frac { TP }{ TP+FN } \quad =\quad P(TP)$$



이제 해당 그래프로 무엇을 하냐면

어떠한 curve를 하나 생성하고 curve를 구성하는 각각의 점들은 모두 하나의 cut off가 된다.

어떤 특별한 cut off에서 그 지점에서의 P(FP)와 P(TP)를 구할 수 있게 된다.


이러한 curve를 통해서 해당 Algorithm이 좋은 안 좋은지를 평가 할 수 있다.

즉 각각의 cutoff로 구성된 어떠한 curve를 생성해서 해당 알고리즘의 goodness를 평가 할 수 있다.

X축은 1 - Specificity 이므로 값이 커질 수록 specificity가 작아지는 것이다.

Y축은 Sensitivity 이므로 값이 클 수록 좋다.


x축 0.2는 specificity가 0.8이므로 매우 좋은것이다. 하지만 그것을 따라 위로 가보면 빨간색 알고리즘 (NetChop)에 대해서 0.4가 약간 넘는 Sensitivity를 가지는 것을 알 수 있다. 이것은 그다지 높은 수치가 아니다.


따라서 이 X와 Y축 둘 사이에는 trade-off 관계가 존재하는 것을 알 수 있다.




Area under the curve (AUC)


AUC = 0.5 라는 것은 random guessing과 다를바 없으므로 매우 안좋은 성능을 나타낸다.

0.5 보다 낮다는 것은 동전 던지기 (flip a coin) 보다 더 안좋다는 것이기 때문에 심각하다고 할 수 있다.


AUC = 1 라는 것은 perfect classifier


일반적으로 AUC가 0.8 이상이라면 좋다고 생각한다.





Cross validation


아래와 같은 목적으로 자주 사용되는 도구이다.

detecting relevant features for building model

estimating their parameters when doing machine Learning



Key idea

트레이닝 데이터 셋에대한 Accuracy에 대해서는 언제나 낙관적이다. 그다지 유효하지 않다.

왜냐하면 항상 best model이 선택 되어 지기 때문이다.


더 나은 평가 방법은 independent set (test set accuracy)를 이용해서 평가 하는 것이다.


하지만 test set을 언제나 사용 할 수 있는 것은 아니다. 즉 모델을 만들고 있을때나 데이터가 너무 작아서 test set을 설정하지 못할 때이다. test set은 반드시 단 한번만 적용 해야 한다.


결국 training set과 test set의 경계는 모호해지며 따라서 training set으로 independent set을 만들어서 평가하는 방법을

고안한 것이 cross validation 이다.


각각의 다른 방식의 cross validation을 알아보자.


Random sub-sampling

랜덤하게 데이터를 training과 testing으로 구분해서 수행 한다.



K-fold


K 번 나눠서 수행 한다.

그리고 각각의 결과를 평균화하여 최종적인 결과로 사용 한다.




Leave one out


하나를 빼고 하나를 넣고 이렇게 순차적으로 반복해서 수행 한다.



고려사항 (Considerations)


time series 데이터들은 "chunk"단위로 수행 해야 한다.


k-fold cross validation을 위해서는

k가 너무 크면 bias는 값이 작아진다. 하지만 variance는 커진다.

k가 너무 작다면 bias는 값이 커진다. 하지만 variance는 작아진다.


LOOCV는 좀 더 높은 variance를 K-fold CV에 비해서 가지게 된다. 

왜냐하면, Training set들이 LOOCV의 경우 좀더 overlap 되기 때문이다.

Random sampling must be done without replacement


Random sampling with replacement is the bootstrap

Underestimates of the error

Can be corrected, but it is complicated (0.632 Bootstrap)


If you cross-validate to pick predictors estimate you must estimate error on independent data.











+ Recent posts