ROC curve (Receiver Operating Characteristic curve) : FPR과 TPR을 각각 x,y축으로 놓은 그래프

TPR : True Positive Rate (=민감도, true accept rate)
1인 케이스에 대해 1로 예측한 비율.(암환자를 진찰해서 암이라고 진단 함)

FPR :  False Positive Rate (=1-특이도, false accept rate)
0인 케이스에 대해 1로 잘못 예측한 비율.(암환자가 아닌데 암이라고 진단 함)


민감도 : 1인 케이스에 대해 1이라고 예측한 것.
특이도 : 0인 케이스에 대해 0이라고 예측한 것.


TPR과 FPR은 서로 반비례적인 관계에 있다. 암환자를 진단할 때, 성급한 의사는 아주 조금의 징후만 보여도 암인 것 같다고 할 것이다. 이 경우 TPR은 1에 가까워질 것이다. 그러나 FPR은 반대로 매우 낮아져버린다. (정상인 사람도 다 암이라고 하니까)

반대로 돌팔이 의사라서 암환자를 알아내지 못한다면, 모든 환자에 대해 암이 아니라고 할 것이다. 이 경우 TPR은 매우 낮아져 0에 가까워 질 것이다. 그러나 반대로 FPR은 급격히 높아져 1에 가까워질 것이다.(암환자라는 진단 자체를 안하므로, 암환자라고 잘못 진단 하는 경우가 없음)


이처럼 TPR과 FPR은 둘다, 어떤 기준(언제 1이라고 예측 할 지)을 연속적으로 바꾸면서 측정 해야한다. 그러면 결국 TPR과 FPR의 여러가지 상황을 고려해서 성능을 판단해야 하는데, 이것을 한눈에 볼 수 있게 한 것이 바로 ROC 커브이다.


그래서 ROC커브는 이것들을 그래프로 표현하여, 어떤 지점을 기준으로 잡을 지 결정하기 쉽게 시각화 한 것이다.

(단순히 (TPR + (1-FPR))가 최대가 되는 지점을 잡아도 되지 않을까 생각했지만, 그러나 어느쪽에 좀 더 강조를 둘것인가가가 중요할 수 있다. 예를 들어 걸릴 확률은 매우 낮지만, 치사율이 극히 높은 병은 민감도가 높아야하고, 걸릴 확률은 높지만, 위험성이 거의 없는 경우는 민감도가 낮아도 괜찮을 것이다.)


그래서 ROC curve는 X,Y가 둘다 [0,1]의 범위이고, (0,0) 에서 (1,1)을 잇는 곡선임.

이때 ROC 커브의 면적이 1에 가까울수록 (즉 왼쪽위 꼭지점에 다가갈수록) 좋은 성능이다.
그리고 면적은 즉, AUC 는 0.5~1의 범위를 갖는다.(0.5면 성능이 전혀 없음. 1이면 최고의 성능)


AUC = AUROC (the Area Under a ROC Curve) : ROC 커브의 밑면적을 구한 값이 바로 AUC. 이 값이 1에 가까울수록 성능이 좋다.


AUC 해석 : 1로 예측하는 기준을 쉽게 잡으면 민감도는 높아진다. 그대신 모든 경우를 1이라고 하므로 따라서 특이도가 낮아진다. 그러므로 이 두 값이 둘다 1에 가까워야 의미가 있다. 그래서 ROC커브를 그릴때 특이도를 1-특이도를 X축에 놓고, Y축에 민감도를 놓는다. 그러면 x=0일때 y가 1이면 가장 최고의 성능이고, 점점 우측 아래로 갈수록, 즉 특이도가 감소하는 속도에비해 얼마나 빠르게 민감도가 증가하는지를 나타냄.
만약 AUC = 0.5라면, 특이도가 감소하는 딱 그만큼 민감도가 증가하는 것으로, 즉 어떤 기준으로 잡아도 민감도와 특이도를 동시에 높일 수 있는 지점이 없다는 것이다.

AUC가 0.5라면, 특이도가 1일때 민감도는 0, 특이도가 0일때 민감도는 1이되는 비율이 정확하게 trade off관계로, 두값의 합이 항상 1이다.

그러므로 AUC값은 전체적인 민감도와 특이도의 상관 관계를 보여줄 수 있어 매우 편리한 성능 척도에 기준이다.



http://synapse.koreamed.org/Synapse/Data/PDFData/0001KJFM/kjfm-30-841.pdf

http://digndig.net/blog/2013/06/01/312/

http://adnoctum.tistory.com/121





# PR_AUC vs ROC_AUC
PR_AUC는 말그대로 threshold를 바꾸었을 때 precision과 recall에 대한 graph의 면적이고, ROC_AUC는 recall과 FPR에 대한 graph의 면적이다.

ROC_AUC가 상대적으로 좀 더 robust한 것으로 알려져있다.

https://www.kaggle.com/general/7517


# Micro F1 score, Macro F1 score
Multi-class상황에서는 f1 score를 바로 정의할 수 없는데, 이 때 개별적인 class마다의 f1 score를 구하고 이를 모든 class에 대해서 평균을 내면 macro f1, class imbalance를 고려해서 weighted average를 하면 micro f1이 된다.

https://datascience.stackexchange.com/questions/15989/micro-average-vs-macro-average-performance-in-a-multiclass-classification-settin

by 곽동현 이스텔리앙 2014.06.11 16:31