들어가며
이번 글에서는 저번 글에서 나왔던 정밀도/재현율 곡선과 비슷한 개념인 ROC곡선에 대해 알아볼 것이다
ROC곡선도 이진 분류에서 자주 사용되는 도구이다
정밀도/재현율 곡선(PR)과 적절한 임계값을 찾는것이 목표라는 점은 비슷하지만
정밀도에 대한 재현율 곡선이 아닌 거짓 양성 비율에 대한 진짜 양성 비율(재현율)의 곡선을 의미한다
PR과 함께 적절한 임계값을 선택할 때 참고하는 또 다른 도구라고 생각하면된다
ROC곡선
ROC곡선은 거짓 양성 비율에 대한 진짜 양성 비율(재현율)의 곡선을 말한다
거짓 양성 비율(FPR)은 양성으로 잘못 분류된 음성 비율의 샘플을 의미한다

이 비율은 1에서 진짜 음성 비율(TNR)을 뺀 값과도 같다

TNR을 다른 말로 특이도라고도 불러서 FPR을 1-특이도라고도 한다
사이킷런에서 roc_cerve()함수를 사용하면 여러 임계값에서 FPR과 TPR(재현율)을 계산해준다
이를 바탕으로 ROC곡선 그래프를 그리면 아래와 같다

이 곡선에도 PR과 마찬가지로 트레이드오프 현상이 나타난다
TPR(재현율)이 높을수록 거짓 양성 비율이 늘어난다
둘 다 늘어나는게 트레이드오프인가? 라는 의문이 들 수 있지만
FPR은 낮을수록 좋은것이므로 높아지게되면 FPR이 희생되는 구조이므로
본질적으로 보았을 때 트레이드오프라고 볼 수 있다
또한 중간에 y=x처럼 보이는 곡선을 볼 수 있을 것이다
이 곡선은 랜덤 분류기의 ROC 곡선을 의미하고 랜덤 분류기는 말그대로 랜덤으로 분류하는 것으로
양성을 맞추는 정도와 음성을 양성이라고 맞추는 정도가 똑같다
즉 FPR=TPR이고 그러므로 ROC곡선이 y=x 형태가 나오게되는 것이다
그래프에서 알 수 있는 또 다른 정보는 곡선 아래의 면적(AUC)이다
완벽한 분류기는 ROC의 AUC가 1이다
완벽한 분류기란 FPR=0이고 TPR=1인 상태에 도달한 y=1 형태의 분류기를 의미한다
위의 ROC곡선의 면적을 사이킷런으로 계산해보면 아래와 같다
from sklearn.metrics import roc_auc_score
roc_auc_score(y_train_5, y_scores)
-> 0.9604938554008616
거의 완벽한 분류기에 근접한 AUC가 나온 것을 볼 수 있다
좋은 분류기일수록 ROC곡선에서 왼쪽 위로 붙게된다
반면 PR에서는 오른쪽 위로 붙게된다
ROC곡선 / PR곡선 선택
ROC곡선과 PR곡선이 비슷한 느낌이여서 어떤 것을 사용해야 할지 궁금할 수 있다
일반적으로 양성 클래스가 드물거나 거짓 음성보다 거짓 양성이 더 중요할 때 PR곡선을 사용하고
그렇지 않으면 ROC곡선을 사용한다
예를 들어 거짓 음성보다 거짓 양성이 중요한 경우는 스팸 필터를 분류하는 경우가 있고
거짓 음성이 거짓 양성보다 중요한 경우는 암 진단 판정을 분류하는 경우가 있다
마치며
이번 글에서는 ROC곡선에 개념과 ROC와 PR중 어떤 것을 선택해야 할지에 대하여 알아보았다
상황에 맞게 적절한 지표와 곡선을 사용하여 어떤 모델을 선택할 지 판단하는 것이 중요하다고 생각했다
ROC곡선과 PR곡선에 대해 공부해보면서 오차행렬이라는 하나의 정보에서
엄청나게 많은 지표들과 또 다른 정보들이 파생될 수 있다는 것이 복잡하지만 이해할 수록 신기하고
한편으로는 무서운 느낌도 들었다 만약 나중에 어떤 만족스럽지 못한 결과를 도출해냈는데
그게 어떤 원인으로 인한 건지 밝히려면 굉장히 오래 걸릴 것 같다는 생각이 들어서였다
공부에는 끝이 없다는 생각이 다시 한 번 들었다
'AI > Machine Learning' 카테고리의 다른 글
| [AI] 오차 행렬을 통한 오류 분석 (1) | 2026.03.02 |
|---|---|
| [AI] 다중 분류(multiclass classifier) (0) | 2026.03.02 |
| [AI] 정밀도/재현율 트레이드오프 (1) | 2026.02.28 |
| [AI] 오차 행렬(Confusion Matrix)과 정밀도(Precision), 재현율(Recall) (1) | 2026.02.28 |
| [AI] 그리드 서치(Grid Search), 랜덤 서치(Random Search) (1) | 2026.02.08 |
