ROC curve (Receiver Operating Characteristic curve) : FPR과 TPR을 각각 x,y축으로 놓은 그래프. ROC curve는 X,Y가 둘다 [0,1]의 범위이고, (0,0) 에서 (1,1)을 잇는 곡선이다.

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

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도 1에 가까워진다. (정상인 사람도 전부 암이라고 하니까)

반대로 실력이 없는 의사라서 암환자를 알아내지 못한다면, 모든 환자에 대해 암이 아니라고 할 것이다. 이 경우 TPR은 매우 낮아져 0에 가까워 질 것이고, 마찬가지로 FPR 또한 0에 가까워질 것이다.(암환자라고 판단 자체를 안하므로, 암환자라고 잘못 진단 하는 경우가 없어짐)


그런데 좋은 성능에 대한 지표인 TPR을 높이려다보면, 나쁜 성능에 대한 지표인 FPR도 같이 높아져버린다. 따라서 어떤 의사의 실력을 판단하기 위해서는 특정 기준(언제 암이라고 예측 할 지)을 연속적으로 바꾸어 가면서 TPR과 FPR을 측정을 해야한다. 그리고 이것을 한눈에 볼 수 있게 시각화 한 것이 바로 ROC 커브이다.

이 ROC커브는 두가지 장점이 있다. 먼저 그 커브의 면적을 재어 다양한 기준에서의 TRP과 FPR을 복합적으로 평가할 수 있다는 점이고, 또 한가지는 실제로 암을 판단할 때, 어디를 기준으로 잡을 지 결정하는 데 도움이 될 수 있다.

단순히 TPR + (1-FPR)이 최대가 되는 지점을 잡아도 되지 않을까 생각할 수 있지만, 실제로는 병에 따라서 어느 쪽에 좀 더 강조를 둘 것인가가가 매우 중요할 수 있다. 예를 들어 걸릴 확률은 매우 낮지만 치사율이 극히 높은 병은 일단 환자라고 의심을 할 수록 좋기 때문에 FPR이 높더라도 괜찮을 수 있다. 반대로 걸릴 확률은 높지만 위험성이 매우 낮은 병은 FPR이 좀 낮은 기준을 선택하는 것이 괜찮을 것이다.


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


AUC 해석 : 1로 예측하는 기준을 쉽게 잡으면 민감도는 높아진다. 그대신 너무나 쉽게 1이라고 판단하므로 따라서 특이도가 낮아진다. 그런데 이 두 값이 모두 1에 가까워 질 수록 좋은 성능을 의미한다. 만약 AUC = 0.5라면, 특이도가 감소하는 딱 그만큼만 민감도가 증가하는 것으로, 즉 어떤 기준으로 잡아도 민감도와 특이도를 동시에 높일 수 있는 지점이 없다는 것이다.

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

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


https://en.wikipedia.org/wiki/Sensitivity_and_specificity

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. 6. 11. 16:31
  • 안녕하세요 2017.07.25 13:38 ADDR EDIT/DEL REPLY

    혹시 성급한 의사는 ~ 설명부분에서 FPR이 아니고 특이도 아닌가요?

  • 안녕하세용 2018.10.05 22:15 ADDR EDIT/DEL REPLY

    혹시 TPR과 FPR이 반비례라고 하셨는데,
    모든 사건을 1이라고 판단하면 오히려 False positive인 경우가 증가하여 FPR과 TPR이 동시에 증가하는, 비례관계가 아닌가 궁금해서 질문드려요~~

  • 프로도 2019.01.11 19:49 ADDR EDIT/DEL REPLY

    @안녕하세용 False positive는 1인 경우를 0으로 판단하는 경우를 말하지요. 따라서 모든 경우(1 또는 0)를 1로 판단하면 False negative rate가 증가합니다. False positive rate와는 관련없다 할 수 있습니다.