ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ROC Curve를 해석하는 방법
    Programming & Machine Learning/Mathematics & Statistics 2018. 6. 17. 23:42

    머신 러닝에 대한 본격적인 공부를 시작한지 꽤 오랜 시간이 되어가고 있다. 하지만 그 동안 수 없이 접했던 평가에 대한 방법론은 언제나 어렴풋이 이해하는 정도였다. 특히나 ROC curve가 그랬다. 데이터 마이닝이나 통계학 전공자가 아닌 나로서는 이 방법론에 대한 수식적 이해도 전무했으며, 인터넷 어디에서도 속을 시원하게 긁어주는 설명을 찾기 힘들었다. 단지 원인과 결과만을 나열한 문서들 뿐이었다.


    언젠가 해법을 찾아야지 하고 미뤄두던 도중, 우연히 제대로 설명된 글을 읽게 되었다. 물론 아직까지도 100% 이해했다고 장담할 순 없지만, 나와 비슷한 사람들을 위해 현재까지 이해한 내용을 정리하고 공유하고자 한다.






    분류문제를 학습한 모델을 평가할 때 빠지지 않는 단어가 바로 Confusion Matrix이다. 여기에서 파생된 용어들이 바로 정확도, 민감도, 특이도 등과 같은 용어들이다. (이곳의 참고)


    분류 문제는 정확도, 민감도, 특이도 등을 종합하여 분류가 잘 되었는지를 판단해야 한다. 물론 도메인마다 잘 되었는지 안 되었는지에 대한 기준은 다르다. 이를테면 암 환자가 100명 중 99명이 있을 때, 무조건 암 환자라고 판단하는 모델이 있다면 이 모델의 정확도는 99%에 육박하기 때문이다. 그래서 정확도를 가장 기본적인 지표로 관찰하되, 나머지 두 가지 지표의 수치와 밸런스를 추가적으로 관찰해야 한다.


    이제 여기서 두 수치의 관계를 관찰하기 위해 threshold(임계값)의 개념이 추가된다. Logistic Regression 을 이용한 분류문제에서의 threshold를 생각해보자. (Logistic Regression에 대한 자세한 내용) 로지스틱 회귀에서 0, 1 을 판단하는 최종 기준은 0.5를 기본으로 한다. 만약, 1을 1이라고 분류해내는 임계값이 0.5가 아니고 0.7임에도 불구하고 정확도, 민감도의 수치가 떨어지지 않는다면 이는 조금 더 정교하게 양성을 분류해내는 모델이라고 할 수 있다. 마찬가지로 특이도의 수치가 떨어지지 않는것이 좋은 모델이다. 즉 실제 1이라면 0.9에 가까운 sigmoid 결과값을 도출하고, 0에 가깝다면 0.1에 가까운 결과값을 도출한다는 말이다.


    자연스럽게 이 임계값에 따라 특이도와 민감도의 수치가 조정될 것이다. 임계값의 변화에 상관 없이 민감도와 1-특이도의 관계가 배반적인 관계라면, 이 분류 모델은 정확도, 민감도, 특이도를 완벽하게 충족하는 모델이라는 것이 된다. 임계값에 변화에 따른 민감도와 1-특이도의 관계를 그래프로 그리면 아래와 같은 ROC 커브가 된다.




    그렇다면 이제, 계단모양을 가지는 이러한 ROC 커브를 해석 할 수 있게 된다. 계단처럼 각지게 되어있는 영역은, 임계값을 0에서 1로 단계적으로 변화시키면서 나타나는 현상이다. 그래서 Decision Tree와 같은 Tree 계열의 알고리즘은 임계값에 따라 변하는 node가 달라지기 때문에 Logistic regression과 같은 곡선 모양의 loss function을 가지는 알고리즘과 달리 조금 더 각진 모양의 ROC 커브가 나오는 것이다.


    만약 양성을 양성이라 판단할 확률(P(X))이 높고, 음성을 음성이라 판단할 확률이 높다면 그 모델의 ROC Curve는 좌측 상단에 수렴하는 형태의 curve가 될 것이다. 이러한 모델이 민감도와 특이도 모두 좋은 수치를 보이는 모델이고, 단순히 Acc가 높은 모델보다 훌륭한 모델이라고 할 수 있다. 일반적인 성능비교는 curve의 아래 부분 영역, 즉 AUC(Area Under Curve)를 통해 비교하게 된다.






    참고 : https://tykimos.github.io/2017/05/22/Evaluation_Talk/

    댓글

분노의 분석실 Y.LAB