데이터분석/Machine Learning

성능평가시 써먹을수 있는 함수

늘근이 2017. 8. 14. 00:10

실제 범주 값, 예측된 범주 값, 예측에 대한 추정된 확률.

TP (True Positivie) - 정확하게 관심범주를 분류

TN (True Negative) - 정확하게 관심범주가 아닌것을 분류

FP (False Positive) - 관심범주로 잘못 분류

FN (False Negative) - 관심범주가 아닌것으로 잘못 분류

이 위에 것들은 솔직히 헷갈리는데, True라는것이 항상 제대로 분류했다는 의미로 트루트루를 한번 복창하면 될듯하다.

gmodels 패키지에 속하는 CrossTable은 기본적인 table() 함수보다 제공되는 것들이 많다. 

혹은 caret 패키지 (Classification And REgression Training) 에서 confusionMatrix() 메서드가 있다. 한국말로는 혼돈 매트릭스라는 다소 혼돈스러운 단어로 번역되어있다.

민감도 (Sensitivity) = TP / (TP + FN)

실제 관심범주를 (class of interest) 분모, (TP + FN) 로 둔다는것은, 일단 관심범주로 분류된것을 분모로 두고, 그중에 참으로 분류된 비율로 측정한다는것.

즉, 진짜인놈들중 진짜를 골라내는 실력이 얼마나 민감하게 검증해낼수 있는 지에대한 지표.

특이도 (Specificity) = TN / (TN + FP)

특이도는 이와 완전히 반대인데, 관심범주가 아니라고 분류된것들 중, 실제 관심범주가 아닌 놈들에 대한 비율이다.

직접 계산기를 뚜드려봐도 금방 하지만 caret패키지에서는 sensitivity() 와 specificity() 로 구할수 있다. 

또다른 헷갈리는 지표는

정밀도 (Precision) = TP / (TP + FP)

긍정이라고 분류된것들 중 진짜 긍정이라고 판단한것들.


이게 사실은 테이블로 보면 헷갈린다. 아니 거짓긍정 참긍정, 이게 대체 무슨 애매한 번역이란 말이냐! 그냥 그래프를 보는게 훨씬 나을수도 있다.

ROC(Receiver Operating Characteristics) 커브는 ROCR 라이브러리에 위치한다.

 

뭐 위와같이 뜨는건데, 도대체 이건 무슨 인생의 굴곡이냐.. 가 아니라 제대로 100% 되었으면 ㄱ자로 걲여서 FP , 즉 진짜도 아닌데 진짜인놈들이 하나도 섞이지 않았다는것을 의미한다. 만약 ㄱ자로 제대로 알흠답게 삼각형이 하나 생길텐데, 이를 AUC(Area under the ROC curve) 라고 하며, 1이 떨어지면 참으로 완벽한 분류기다.