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
사람들은 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.
'MOOC > Practical Machine Learning (r programing)' 카테고리의 다른 글
Week 02: Training options, Plotting predictions (0) | 2015.11.13 |
---|---|
Week 02: Caret Package, dataSlicing (1) | 2015.11.13 |
Week 01: Prediction study design, Types of errors (0) | 2015.11.08 |
Week 01: Relative importance of steps, In sample and out of sample errors (0) | 2015.11.07 |
Week 01: Prediction motivation, What is prediction? (0) | 2015.11.07 |