머신러닝

머신러닝 / ROC, AUC

삼전동해커 2023. 5. 18. 20:06

출처 : https://losskatsu.github.io/machine-learning/stat-roc-curve/#%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%84%B1%EB%8A%A5-%ED%8F%89%EA%B0%80---roc-%EC%BB%A4%EB%B8%8C-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC

 

ROC Curve(ROC 커브)란? 머신러닝 모형 평가

머신러닝 성능 평가 - ROC 커브 개념 정리

losskatsu.github.io

[ROC]

Reciever Operating Characteristics, 수신자 조작 특성 곡선

 

내가 제작한 모델의 성능이 좋은지 안좋은지를 평가하는 기준 중 하나.

 

분류에 관한 평가 기준들을 먼저 보자.

 

정확도(Accuracy)

전체 샘플의 개수들 중에서 내 모델이 정답을 맞췄는가에 대한 비율.

정확도가 90%라고 하면 100개 중 90개에 대해서만 정상/이상을 정확히 예측했고, 10개에 대해선 틀린 것을 의미한다.

TP +TN / TP + FN + FP + TN으로 구한다.

 

민감도(sensitivity = Recall = TPR) <-> FPR

이상을 이상이라고 탐지할 비율

민감도에 대해 얘기할 때 의사의 진단으로 예시를 든다.

1. 병에 걸린 사람을 진단했을 때, 병에 걸렸다고 진단할 경우(TP)

2. 병에 걸린 사람을 진단했을 때, 병에 걸리지 않았다고 진단할 경우(FN)

3. 병에 걸리지 않은 사람을 진단했을 때, 병에 걸렸다고 진단할 경우(FP)

4. 병에 걸리지 않은 사람을 진단했을 때, 병에 걸리지 않았다고 진단할 경우(TN)

 

Recall은 TP / TP + FN으로 구한다.

 

특이도(Specificity)

정상을 이상으로 탐지할 비율

TN / FP + TN으로 구한다.

 

정밀도(Precision)

모델이 True라고 분류한 것 중에서 실제로 True인 비율.

TP / TP + FP로 구한다.

 

재현율(Recall)

실제 True 중 모델이 True라고 예측한 것.

정밀도와 재현율이 비슷해서 헷갈릴 수 있지만 분모가 다르다.

TP / TP + FN로 구한다.

 

임계값(Threshold)

이상 탐지에 있어서 이상인지, 정상인지를 확실하게 구분할 수 있는 기준값.

 

ROC

모든 진단을 양성으로 하면 병에 걸린 환자를 모두 찾을 수 있지만 정상인도 환자로 판단된다.

TPR =1 이고 FPR = 0이 가장 이상적인 판정이다. 이상적인 판단의 기준인 모든 임계값에 대해 성능을 보여주는 그래프를 ROC curve라고 한다.

x축이 FPR이고, Y축이 TPR이다. 왼쪽 상단이 TPR=1인 부분이다. 저 지점에 가까운 임계값이 가장 이상적인 판단을 내린 임계값임을 의미한다. 즉, 커브의 면적, AUC의 면적이 넓을수록 성능이 좋음을 말한다.

 

ROC 커브는 여러 threshold에 대한 이상탐지 성능을 한번에 보여주는 것. 
x,y 축의 의미
x축은 FPR, y축은 TPR. 일단 둘다 Positive가 들어가는데, label이 어떻든간에 모델이 이상이라고 탐지한 경우에 관해 나타낸 그래프이다. 
x축이 커진다는 것은 정상을 이상이라고 탐지한 경우가 더 많아진다는 것이다. 따라서 x축은 작을수록 좋은 것이다.
y축이 커진다는 것은 이상을 이상이라고 탐지하는 경우가 더 많아진다는 것이다. 따라서 y축은 클수록 좋은 것이다.

threshold와 ROC커브의 관계는?
일단 threshold가 높으면 모든걸 정상으로 예측한다. threshold가 낮으면 모든걸 이상으로 예측한다.


내가 고민하는 threshold의 범위 중에서 가장 좋은 결과(이상은 이상으로, 정상은 정상으로 판단)를 가지는 threshold값을 알고싶어 ROC 커브를 그린다.

다음은 가장 이상적인 threshold로 구분한 그래프이다. 

 

threshold를 기준으로 왼쪽은 정상을 정상으로 탐지한 그룹, 오른쪽은 이상을 이상으로 탐지한 그룹이다. 

겹치는 부분(정상을 이상으로, 이상을 정상으로 탐지)없이 완벽하게 분류했다.

 

이 경우의 ROC 커브는 다음과 같다.

다음 상황을 생각해보자.

이번엔 이상을 정상으로(FN), 정상을 이상으로(FP) 탐지한 부분이 존재한다. 그 부분을 제외하고 0.7 정도의 면적이 AUC이다.

이 경우엔 대략 다음의 ROC 커브가 그려진다.

그럼 x축의 값과 y축의 값이 만나 그려지는 그래프는 어떤 의미인가.
한번이라도 ROC 커브를 본 사람이라면 가장 이상적인 그래프는 낫모양 그래프임을 알 것이다. (다음 그래프의 노란색)

가능한 모든 threshold별 FPR과 TPR의 비율을 알아내서 plot하겠다는 의미를 담고 있다.