본문 바로가기
Research/Machine Learning

ROC curve, ROC_AUC, PR_AUC, 민감도, 특이도

by IMCOMKING 2014. 6. 11.

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로 잘못 예측한 비율.(암환자가 아닌데 암이라고 진단 함)

 

민감도(Sensitivity) : True를 True로 잘 예측할 확률

특이도(Specificity) : False를 False로 잘 예측할 확률

참고 사이트

 

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

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

 

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

 

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

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

 

 


AUC: Area Under the Curve

Scikit-learng의 정의에 따르면 AUC라는 단어의 의미 자체는 임의의 curve에 대해 그 아래의 면적을 계산한 것을 의미한다.

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.auc.html

 

ROC AUC(ROC Area Under the Curve) == AUROC (the Area Under a ROC Curve)

앞에서 설명한 ROC 커브의 밑면적을 구한 값이 바로 AUC. 이 값이 1에 가까울수록 성능이 좋다. ROC 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는 말그대로 Precision과 Recall curve에 대한 면적이고, ROC_AUC는 TPR과 FPR curve에 대한 면적이다. 둘중 비교했을 때 ROC_AUC가 상대적으로 좀 더 robust한 성능평가가 가능한 것으로 알려져있다. 데이터 imbalance가 심한 경우, PR_AUC를 쓰는 것이 좋다.(댓글 참조)

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

 

Micro/Macro ROCAUC

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html

 

Micro F1 score, Macro F1 score

Multi-class상황에서는 f1 score를 바로 정의할 수 없고 여러 class에 대해 어떻게 평균을 취할지를 정해야한다.

각각의 class 별로 f1 score를 구하고 이를 단순히 산술 평균을 낸 것을 macro f1이라 하고(이 경우 class imbalance가 무시된다.)

전체 class에서의 precision과 recall을 구해서 한번에 f1 score를 구하면 micro f1이 된다.(이 경우 class imbalance가 반영된다)

https://datascience.stackexchange.com/a/16001/68526

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html

 

Micro F1 scoreAccuracy와 동치이다.

아래는 binary classification 상황에서의 증명이다. 이 상황에서는 TP2가 TN1가 같기 때문에 쉽게 동치이다.
 

 

 

댓글14

  • 안녕하세요 2017.07.25 13:38

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

  • 안녕하세용 2018.10.05 22:15

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

  • 프로도 2019.01.11 19:49

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

  • Jin-Hwa Kim 2020.06.09 10:15

    혹시 PRO-curve는 뭔지 아시나요? 찾아도 잘 안나오네요.
    답글

  • 안녕하세욜 2020.06.22 10:46

    안녕하세요 좋은 정리감사드립니다.

    imbalance 데이터에서 auroc가 좀 더 robust한 지표를 나타낸다고 쓰셨는데, 그렇기 때문에 imbalance 데이터에서는 더더욱 auprc를 지표로활용해야합니다. (auroc는 불균등 비율을 그대로 반영하기때문에)

    robust하다 라고만 적어두셔서 한줄적고갑니다 총총
    답글

  • ㅇㅇ 2021.03.05 13:25

    PRO curve는 per-region-overlap curve를 말씀하시는것 같습니다.
    답글

  • ㅎㅎ 2022.07.19 14:08

    잘 설명해주셔서 도움이 되었습니다. 감사합니
    답글