[머신러닝] 지도학습 검증방법 (Accuracy, Sensitivity, Specificity, Precision, ROC, AUC)
류명운
·2016. 11. 12. 03:31
[머신러닝] 지도학습 검증방법 (Accuracy, Sensitivity, Specificity, Precision, ROC, AUC)
지도 학습(Supervised Learning)
- 훈련 데이터(Training Data)로부터 하나의 함수를 유추함
- 훈련 데이터는 일반적으로 입력 객체에 대해 속성을 벡터 형태로 포함하고 있으며, 각각 벡터(독립변수)에 대해 원하는 결과(종속 변수)가 포함
교차 검증(Cross-Validation)
- 교차 검증(Cross-Validation) : Training Set, Test Set의 7:3 또는 8:2 샘플링
- 유추된 함수에 대해 Test Set을 입력 시 추론된 결과(종속 변수)와 실제 결과의 비교를 통해 정확도 측정 가능
혼동 행렬(Confusion Matrix)
- True Positive - 유추된 함수에 의해 추론된 결과(참)와 실제 결과가 같음. 관심 범주를 정확하게 분류
- False Positive - 실제 결과가 거짓인데 참으로 추론한 경우. 관심 범주로 잘못 분류
- False Negative - 실제 결과가 참인데 거짓으로 추론한 경우. 관심 범주가 아닌 것으로 잘못 분류
- True Negative - 유추된 함수에 의해 추론된 결과(거짓)와 실제 결과가 같음. 관심 범주가 아닌 것을 정확하게 분류
실제 결과(분류) |
|||
참 |
거짓 |
||
추론된 결과(분류) |
참 |
TP (true positive) |
FP (false positive) |
거짓 |
FN (false negative) |
TN (true negative) |
지도학습 검증방법 (Accuracy, Sensitivity, Specificity, Precision, ROC, AUC)
1. 정확도(Accuracy)
* 오차비율(Errorrate)
|
2. 민감도(Sensitivity)
|
3. 특이도(Specificity)
|
4. 정밀도(Precision)
|
5. 수신자 조작 특성(ROC, Receiver Operating Characteristics)
민감도(Sensitivity) / 특이도(Specificity) 도표로써 기계 학습 모델의 시각화에 유용하게 사용 됨
완벽한 분류기(Perfect Classifier)는 민감도=1 / 특이도=0인 직선이며, 이에 가까울수록 성능이 좋음
* ROC cut off 개념
ROC 커브를 구성하는 각각의 점들이 하나의 cut off가 되며, 어느 특별한 cut off에서 그 지점에서의 민감도 / 특이도를 구할 수 있음
cut off 값을 구하는 것은 모델의 성능을 비교하는데 있어서 AUC(Area Under Curve) 즉, 면적을 통한 비교와 얼마나 이상치(민감도=1, 특이도=0)와 가까운 점이 있는지 비교함
* ROC cut off 값을 구하는 방법
Euclidean method - 이상치로부터 ROC 커브의 각 점들까지의 거리를 계산해 가장 작은 값
|
Youden Index - ROC 커브의 각 점에서 기울기가 1인 직선을 그렸을 때 y절편이 가장 큰 값
|
Efficiency - 유병률(prevalence)를 고려한 계산
|
6. AUC(Area Under Curve)
ROC 커브의 면적 통계에 의해 측정
1에 가까워야 기계 학습 모델의 성능이 좋음
|
지도 학습을 이용한 알고리즘 예
- 서포트 벡터 머신(support vector machine)
- 은닉 마르코프 모델(Hidden Markov model)
- 회귀 분석(Regression)
- 신경망(Neural network)
- 나이브 베이즈 분류(Naive Bayes Classification)
참고
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[Git] Git + SourceTree 환경구축 (0) | 2016.11.16 |
---|---|
[jNetPcap] 자바에서 패킷 캡쳐를 위한 jNetPcap 개발 환경 구축하기 (0) | 2016.11.15 |
[nodejs] Node.js 개발에 필요한 기본 소양 (0) | 2016.10.14 |
[로또 결과 예측] 기계학습 기반 로또 결과예측 프로그램 개발하기(미완) (4) | 2016.10.01 |
[머신러닝] 아파치 스파크를 위한 스칼라 프로그래밍 기본 소양 익히기 (2) | 2016.09.24 |