콘텐츠로 이동

P4-6.4 보충학습: 평가 지표 질문 지도

Section ID: P4-6.4 Version: v2026.07.24

보조제목: ROC, PR, log loss, calibration, silhouette는 각각 어떤 평가 질문에 답하는가

P4-6.1과 P4-6.2에서는 평가 지표의 역할과 문제 유형별 차이를 잡았습니다. 그런데 실제 문서나 라이브러리 문서를 읽다 보면 곧 더 낯선 이름이 나옵니다.

  • ROC curve
  • PR curve
  • log loss
  • calibration
  • silhouette score

이 보충학습의 목적은 수식을 길게 계산하는 것이 아닙니다. 이 지표들이 무슨 질문에 답하려고 등장했는가를 연결하는 것입니다.

보충학습: ROC, PR, 로그 손실(log loss), 캘리브레이션(calibration), 실루엣(silhouette)을 처음 읽는 법에서 구분할 경계

이 절은 분류와 군집화에서 자주 등장하는 ROC, PR, log loss, calibration, silhouette를 처음 읽는 보충학습입니다. 세부 증명보다 언제 왜 보게 되는가에 집중합니다.

  • ROC와 PR 곡선은 왜 점수(score)와 임계값(threshold) 문제로 이어지는가?
  • log loss는 왜 맞고 틀림보다 확률 출력까지 함께 보게 하는가?
  • calibration은 왜 확률처럼 보이는 점수를 다시 의심하게 하는가?
  • silhouette는 왜 군집화에서 정답 라벨 없이도 구조를 읽게 하는가?

이 절은 먼저 평가 지표를 읽다가 ROC, PR, log loss, calibration, silhouette 같은 이름이 왜 따로 등장하는가를 닫습니다. ROC/PR과 calibration의 재등장은 P4-15.3에서, 군집 구조 읽기와 silhouette 연결은 P4-17.1, P4-17.2에서 이어집니다.

보충학습: ROC, PR, 로그 손실(log loss), 캘리브레이션(calibration), 실루엣(silhouette)을 처음 읽는 법에서 복구할 연결

  • ROC와 PR 곡선이 임계값을 바꾸며 분류 성능을 읽는 도구라는 점을 설명할 수 있습니다.
  • log loss가 확률 출력의 자신감까지 함께 읽는 지표라는 점을 설명할 수 있습니다.
  • calibration을 점수와 실제 빈도의 맞음 정도로 설명할 수 있습니다.
  • silhouette score를 군집 안 조밀함과 군집 사이 분리를 함께 보는 내부 기준으로 설명할 수 있습니다.

먼저 큰 지도부터 잡는다

이 다섯 이름은 사실 서로 다른 질문에 답합니다.

항목 먼저 읽을 질문
ROC curve 양성과 음성을 가르는 기준을 바꾸면 무엇이 달라지는가?
PR curve 양성이 드문 상황에서 정밀도와 재현율 균형이 어떻게 달라지는가?
log loss 정답만 맞혔는지가 아니라, 얼마나 과하게 확신했는가?
calibration 0.8 같은 점수가 실제로도 80% 정도의 빈도를 뜻하는가?
silhouette 정답 라벨 없이도 묶음이 조밀하고 분리되어 있는가?

즉, 이 지표들은 정확도 하나로 부족할 때 등장합니다.

이 절의 역할을 더 짧게 잡으면, 본편 평가 질문을 읽다가 더 세밀한 점수 읽기 기준이 필요할 때 잠깐 들르는 곳입니다.

지금 막힌 질문 이 보충학습에서 먼저 볼 것 다시 돌아갈 본편 위치
분류 점수는 알겠는데 threshold를 바꾸면 뭐가 달라지는가? ROC, PR P4-6.2, P4-15.3
정확도는 괜찮은데 확률 점수를 그대로 믿어도 되는가? log loss, calibration P4-6.2, P4-15.3
군집을 만들었는데 정답 라벨 없이도 구조를 읽을 수 있는가? silhouette P4-17.1, P4-17.2

보충 지표는 지금 질문이 본편 지표만으로 충분한가, 더 세부적인 읽기 틀이 필요한가를 기준으로 꺼냅니다.

현재 질문 이 절에서 먼저 볼 것 이유
threshold를 바꾸면 FP/FN 균형이 어떻게 달라지는가 ROC, PR 분류 점수와 임계값 변화가 함께 움직이기 때문입니다.
확률 점수의 자신감까지 믿어도 되는가 log loss, calibration 맞고 틀림만으로는 확률 해석을 다 못 보기 때문입니다.
정답 없이 군집 구조가 그럴듯한가 silhouette 내부 구조를 읽는 기준이 따로 필요하기 때문입니다.

즉, 이 절은 본편을 대신하는 새로운 평가 장이 아니라, 본편에서 이미 세운 문제 유형별 질문을 더 세밀하게 읽기 위한 우회 절입니다. 여기서 이름과 질문을 연결한 뒤에는 다시 본편의 분류, 군집화, threshold 조정 장면으로 돌아가 읽는 흐름이 가장 자연스럽습니다.

처음 읽을 때는 이 지표가 무엇을 알려 주는가만 보지 말고, 무엇은 알려 주지 못하는가도 함께 잡아 두는 편이 좋습니다.

이름 주로 알려 주는 것 혼자서는 충분히 말해 주지 못하는 것
ROC 분리 능력의 전체 그림 실제 운영에서 어느 threshold를 택할지
PR 양성 의사결정의 품질 변화 점수 자체를 확률처럼 믿어도 되는지
log loss 확률 출력의 과신 여부 높은 점수가 실제 빈도와 맞는지
calibration 점수 해석의 신뢰성 모델이 양성과 음성을 잘 가르는지
silhouette 군집 구조의 내부 품질 그 군집이 실제 업무 해석에 쓸모 있는지

이 표를 먼저 붙잡아 두면, 뒤에서 비슷해 보이는 이름들이 왜 따로 남아 있는지 덜 헷갈립니다.

ROC와 PR 곡선은 임계값 문제를 드러낸다

P4-6.2에서 분류는 단순히 범주를 맞히는 일이 아니라, 점수를 어떤 결정으로 바꿀지도 중요하다고 봤습니다. ROC와 PR 곡선은 바로 그 지점을 읽게 해 줍니다.

ROC와 PR 곡선은 모델이 낸 점수를 어느 값부터 양성으로 볼지 바꿀 때, 오탐과 놓침의 균형도 함께 달라진다는 사실을 보여 줍니다.

ROC curve는 이 균형을 거짓 양성률(false positive rate)과 진짜 양성률(true positive rate) 관점에서 보여 줍니다. PR curve는 정밀도(precision)와 재현율(recall) 관점에서 보여 줍니다.

둘을 굳이 나눠 읽는 이유는 다음과 같습니다.

도구 특히 유용한 장면
ROC curve 전체적으로 분리 능력을 보고 싶을 때
PR curve 양성이 드물고 precision-recall 균형이 중요한 장면

예를 들어 사기 탐지, 질병 선별, 이상 거래 탐지처럼 양성 비율이 낮은 문제에서는 PR curve가 더 직관적으로 읽히는 경우가 많습니다.

여기서 초심자가 자주 놓치는 점은 곡선이 좋아 보인다는 말이 아직 결정 규칙을 끝내 주지 않는다는 사실입니다. ROC와 PR은 모델이 점수를 어느 정도 분리해 내는가를 보여 주지만, 실제 서비스에서는 결국 어느 threshold에서 차단, 검토, 통과를 나눌지 정해야 합니다. 즉, 곡선은 결정을 대신하는 답이 아니라 결정을 어디서 자를지 토론하게 만드는 지도에 가깝습니다.

두 곡선을 읽을 때는 다음처럼 질문 순서를 잡으면 덜 헷갈립니다.

먼저 볼 질문 ROC 쪽에서 읽는 감각 PR 쪽에서 읽는 감각
모델이 양성과 음성을 전반적으로 가를 힘이 있는가? TPR과 FPR의 전체 균형을 본다 바로 답하지는 않지만 recall 변화는 볼 수 있다
양성이 드문 현실에서 경보 품질이 유지되는가? 클래스 불균형 장면에서는 직관이 약해질 수 있다 precision이 함께 보여 더 직접적이다
threshold를 조금 내리면 무엇이 먼저 흔들리는가? FPR이 얼마나 빨리 늘어나는지 본다 recall을 늘릴 때 precision이 얼마나 떨어지는지 본다

즉, ROC는 분리 능력 전체 그림, PR은 양성 의사결정의 비용 구조를 더 직접적으로 보여 주는 경우가 많습니다.

ROC와 PR을 실제 판단으로 연결하기

같은 모델이라도 threshold를 어디에 두느냐에 따라 운영 결과는 크게 달라집니다.

  1. threshold를 높이면 보통 양성 판정을 더 조심하게 하므로 FP가 줄 수 있습니다.
  2. 하지만 그만큼 실제 양성을 놓치는 FN이 늘 수 있습니다.
  3. threshold를 낮추면 recall은 좋아질 수 있지만, precision이 급격히 나빠질 수 있습니다.

이 흐름 때문에 ROC와 PR은 모델 점수가 괜찮은가만이 아니라 업무가 어떤 실수를 더 감당하기 어려운가와 함께 읽어야 합니다. 스팸 차단이라면 정상 메일 오차가 너무 커지지 않는 threshold가 중요하고, 질병 선별이라면 위험 사례를 덜 놓치는 threshold가 더 중요할 수 있습니다.

작은 수치 장면으로 보면 더 직관적입니다.

threshold 변화 precision recall 읽는 감각
0.80 0.94 0.41 경보는 매우 신중하지만 놓침이 많다
0.50 0.82 0.73 비교적 균형 잡힌 지점일 수 있다
0.20 0.48 0.93 거의 다 잡지만 오탐 부담이 커진다

이 표는 ROC와 PR이 단순히 좋다/나쁘다를 말하는 도구가 아니라, 어떤 비용 구조에서 어느 threshold가 더 맞는가를 읽게 해 주는 도구라는 점을 보여 줍니다.

ROC와 PR이 답하지 않는 질문

ROC와 PR이 유용해도, 다음 질문은 혼자 해결하지 못합니다.

  • 0.82라는 점수를 정말 82% 위험으로 읽어도 되는가
  • 지금 높은 점수 사례 묶음이 실제로도 같은 빈도로 위험한가
  • threshold를 바꾼 뒤 사람 검토 인력, 고객 불만, 운영 비용이 얼마나 늘어나는가

즉, ROC와 PR은 결정 경계 논의를 시작하게 해 주지만, 점수 해석의 신뢰성까지 끝내 주지는 않습니다.

log loss는 확률 출력의 자신감까지 본다

정확도는 맞았는지 틀렸는지를 먼저 봅니다. 하지만 어떤 모델은 정답을 맞혔지만 확신이 너무 약할 수 있고, 반대로 틀렸는데도 너무 자신만만할 수 있습니다.

log loss는 이 차이를 읽기 위해 등장합니다.

log loss는 정답을 틀린 것도 문제로 보지만, 틀린 답을 아주 높은 확률로 말한 경우를 더 크게 벌줍니다.

즉, log loss는 분류 결과를 확률 출력까지 포함한 평가로 읽게 합니다.

그래서 log loss는 다음 질문과 잘 연결됩니다.

  • 이 모델은 맞고 틀림만 보면 괜찮은가?
  • 아니면 점수의 자신감까지 함께 봐야 하는가?

이 지표가 필요한 이유는 같이 맞은 답도 질이 다를 수 있기 때문입니다. 예를 들어 두 모델이 모두 정답을 맞혔다고 해도, 하나는 정답 클래스에 0.51을 줬고 다른 하나는 0.95를 줬다면 다음 threshold 조정, 순위화, 후속 의사결정에서 쓸모가 달라질 수 있습니다.

반대로 더 위험한 장면도 있습니다.

상황 accuracy만 보면 log loss가 더 민감하게 보는 점
정답을 0.51로 간신히 맞힘 맞은 예측으로 계산된다 확신이 약하므로 높은 점수를 주지 않는다
오답을 0.55로 냄 틀린 예측으로 계산된다 틀렸지만 과신 정도는 크지 않다고 본다
오답을 0.99로 냄 역시 틀린 예측으로 계산된다 매우 위험한 과신으로 크게 벌준다

즉, log loss는 틀렸는가뿐 아니라 얼마나 위험하게 틀렸는가를 함께 묻는 지표입니다.

log loss를 언제 더 먼저 떠올려야 하는가

  • 예측 확률을 그대로 정렬, 우선순위, 자동 승인 기준에 쓰려 할 때
  • threshold를 나중에 조정할 가능성이 커서 점수의 질 자체가 중요할 때
  • 같은 accuracy인데 어떤 모델이 더 믿을 만한 점수를 내는지 가려야 할 때

이런 장면에서는 accuracy와 F1만으로는 부족하고, 확률 출력의 모양을 더 섬세하게 읽어야 합니다.

간단한 대조를 한 번 더 보면 의도가 선명해집니다.

모델 accuracy 정답 클래스 확률 예 읽는 감각
모델 A 0.90 0.51, 0.54, 0.58처럼 아슬아슬하게 맞힘 맞히긴 하지만 점수 자신감이 약하다
모델 B 0.90 0.88, 0.91, 0.95처럼 또렷하게 맞힘 같은 정확도라도 후속 의사결정에 더 쓰기 쉽다

즉, log loss는 같은 정답률 안에서도 어떤 모델의 점수가 더 믿을 만한가를 가려내는 데 도움이 됩니다.

하지만 log loss도 혼자서는 충분하지 않습니다. log loss가 낮다고 해서 0.8이면 실제로도 80%쯤 맞다고 바로 말할 수는 없습니다. 그 질문은 calibration으로 다시 확인해야 합니다.

calibration은 점수와 실제 빈도가 맞는지 본다

모델이 0.82라고 말했다고 해서, 현실 세계에서 그 점수가 실제 82% 빈도와 정확히 맞는다는 뜻은 아닙니다. calibration은 바로 이 차이를 보는 관점입니다.

calibration은 비슷한 점수를 받은 사례들을 모아 봤을 때, 그 점수가 실제 발생 빈도와 비슷한지를 묻는 관점입니다.

예를 들어 0.8 근처 점수를 받은 사례 100개 중 실제 양성이 80개쯤 나온다면, calibration이 꽤 잘 맞는다고 읽을 수 있습니다. 하지만 40개만 맞는다면 점수 해석을 더 조심해야 합니다.

이 관점은 특히 다음 장면에서 중요합니다.

  • 위험 점수를 우선순위로 쓰는 서비스
  • 확률 해석이 직접 의사결정에 연결되는 장면
  • threshold를 정할 때 점수 크기 자체를 믿어야 하는 장면

P4-15.3에서 threshold 조정과 calibration 이야기가 다시 나오므로, 이 절은 확률처럼 보이는 점수도 다시 검토해야 한다는 관점을 먼저 연결해 둡니다.

초심자가 특히 헷갈리는 부분은 분류를 잘하는 것확률을 잘 말하는 것이 같은 능력이 아니라는 점입니다. 어떤 모델은 양성과 음성을 잘 순서대로 세울 수는 있지만, 점수 값 자체는 실제 빈도와 어긋날 수 있습니다. 즉, ranking은 괜찮아도 probability interpretation은 나쁠 수 있습니다.

다음처럼 구분하면 더 명확합니다.

질문 더 가까운 도구
누가 더 위험한가를 순서대로 세울 수 있는가? ROC, PR 같은 분리 관점
0.8라는 숫자를 정말 80%처럼 읽어도 되는가? calibration 관점

예를 들어 위험 점수 0.8 이상인 건만 사람이 검토한다면, 운영자는 단순히 위험한 순서가 대체로 맞는가만이 아니라 0.8 이상 묶음이 실제로도 정말 높은 위험 집단인가를 알고 싶어합니다. 이때 calibration은 threshold 정책, 인력 배치, 고객 설명 가능성과 직접 연결됩니다.

calibration을 가볍게 오해하지 않기

calibration이 좋다고 해서 분류 성능이 자동으로 좋은 것은 아닙니다. 반대로 분류 성능이 좋다고 해서 calibration도 좋다는 보장도 없습니다.

  1. 잘 구분하지만 확률 해석이 과장된 모델이 있을 수 있습니다.
  2. 확률은 그럴듯하지만 정작 구분 능력이 약한 모델도 있을 수 있습니다.
  3. 그래서 실제로는 잘 가르는가점수 해석이 맞는가를 분리해 봐야 합니다.

짧은 대조 장면으로 보면 다음처럼 읽을 수 있습니다.

점수 구간 모델이 말한 양성 확률 실제 양성 비율 calibration 읽기
0.8 근처 사례 묶음 약 80% 약 78% 비교적 잘 맞는다
0.8 근처 사례 묶음 약 80% 약 43% 점수를 과신하고 있다

이 차이는 단순한 수치 오차가 아니라, 사람이 검토할 대상을 얼마나 뽑을지, 고객에게 위험 점수를 어떻게 설명할지, threshold를 어디에 둘지까지 흔들 수 있습니다.

반대로 calibration이 좋아 보여도 끝이 아닙니다. 점수 해석은 잘 맞는데, 정작 양성과 음성을 분리하는 힘이 약할 수 있기 때문입니다. 그래서 calibration은 확률 말투의 신뢰성을 보는 도구이지, 분류 문제 전체를 대표하는 만능 점수는 아닙니다.

silhouette는 정답 없이 군집 구조를 읽는 내부 기준이다

군집화에서는 정답 라벨이 없을 수 있다고 P4-6.2에서 봤습니다. silhouette score는 이런 장면에서 자주 등장하는 내부 평가 기준입니다.

silhouette score는 같은 군집 안에서는 가깝고, 다른 군집과는 멀수록 더 좋은 묶음처럼 읽는 기준입니다.

silhouette는 내 군집과의 가까움가장 가까운 다른 군집과의 거리를 함께 비교하는 감각으로 읽을 수 있습니다.

즉, silhouette는 다음 질문을 돕습니다.

  • 지금 묶음이 너무 뒤섞여 있지는 않은가?
  • 군집 수를 바꿨을 때 구조가 더 나아지는가?

P4-17.1과 P4-17.2에서 군집화 결과 해석과 군집 품질 지표가 다시 등장하므로, 이 절은 정답 없이도 구조를 읽는 내부 기준이라는 점을 먼저 고정합니다.

silhouette를 읽을 때는 분류 지표를 읽던 습관을 잠시 내려놓는 편이 좋습니다. 여기서는 정답을 얼마나 맞혔는가보다 묶음 자체가 얼마나 자연스러워 보이는가를 먼저 보기 때문입니다.

다음 질문 순서가 도움이 됩니다.

질문 silhouette가 도와주는 이유
같은 군집 안 샘플이 서로 너무 멀지 않은가? 군집 안 조밀함을 반영한다
가장 가까운 다른 군집과 충분히 떨어져 있는가? 군집 사이 분리를 반영한다
군집 수를 늘리거나 줄였을 때 구조가 더 나아지는가? 내부 구조 비교 기준으로 쓸 수 있다

하지만 silhouette도 만능은 아닙니다. 값이 높아도 그 군집이 실제 업무 해석에 유용하다는 보장은 없습니다. 예를 들어 구매 패턴으로 세 집단이 깔끔히 나뉘어도, 그 묶음이 마케팅 전략이나 운영 정책으로 이어지지 않으면 좋은 군집이라고 단정하기 어렵습니다.

즉, silhouette는 수학적으로 보기 좋은 묶음인가를 먼저 도와주지만, 업무적으로 쓸모 있는 묶음인가까지 혼자 답해 주지는 않습니다.

짧은 비교 장면도 함께 기억해 두면 좋습니다.

군집 결과 silhouette 읽기 바로 붙는 다음 질문
군집 안이 조밀하고 서로 잘 떨어짐 구조는 그럴듯해 보인다 이 묶음에 이름을 붙일 수 있는가?
군집이 서로 많이 겹침 구조가 불안정해 보인다 군집 수나 특징 구성이 잘못된 것은 아닌가?
값은 높지만 해석이 애매함 수학적 분리는 괜찮다 실무에서 쓸 기준 묶음인가?

이 점 때문에 silhouette는 보통 첫 내부 점검 도구로는 좋지만, 마지막 해석 책임자까지 되지는 못합니다. 결국 군집화는 값이 아니라 이 묶음을 사람이 어떤 이름으로 읽을 수 있는가까지 가야 실제 활용으로 이어집니다.

같은 문제 안에서도 질문은 갈라진다

사기 탐지처럼 하나의 분류 문제만 보더라도 질문은 이렇게 여러 갈래로 갈라집니다.

같은 문제 안의 세부 질문 더 먼저 꺼낼 이름 이유
차단 기준을 0.7에서 0.5로 내리면 무엇이 바뀌는가 ROC, PR FP/FN과 precision/recall 균형이 움직이기 때문입니다.
같은 정확도라면 어느 모델이 더 위험하게 틀리는가 log loss 과신한 오답을 더 크게 보고 싶기 때문입니다.
위험 점수 0.8을 정책상 그대로 써도 되는가 calibration 점수와 실제 빈도의 맞음을 확인해야 하기 때문입니다.
고객 유형 묶음이 정말 구조를 이루는가 silhouette 정답 라벨 없는 내부 구조를 먼저 봐야 하기 때문입니다.

즉, 한 문제에 지표가 많다는 말은 불필요하게 복잡하다는 뜻이 아니라, 한 문제 안에도 서로 다른 판단 층위가 들어 있다는 뜻입니다.

다섯 지표를 서로 다른 층위로 다시 묶어 본다

지금까지의 내용을 한 번 더 압축하면, 다섯 이름은 같은 종류의 지표가 아닙니다.

지표 더 가까운 층위 핵심 질문
ROC, PR 분류 점수와 threshold 조정 점수를 어디서 결정으로 자를 것인가?
log loss 확률 출력의 품질 틀렸을 때 얼마나 위험하게 확신했는가?
calibration 점수 해석의 신뢰성 0.8 같은 숫자를 얼마나 믿어도 되는가?
silhouette 군집 구조의 내부 품질 정답 없이도 묶음이 그럴듯한가?

즉, ROC와 PR은 결정 경계가 움직일 때, log loss는 확률 자신감을 따질 때, calibration은 확률 해석을 믿어야 할 때, silhouette는 정답 없는 구조를 읽을 때 등장합니다.

이 층위를 헷갈리지 않으면 같은 분류 문제 안에서도 질문을 분리해서 읽을 수 있습니다.

같은 사기 탐지 문제 안의 질문 먼저 꺼낼 도구
점수를 어디서 차단 기준으로 자를까 ROC, PR
틀릴 때 너무 자신만만한 모델은 아닌가 log loss
위험 점수 0.8을 실제 80%처럼 읽어도 되는가 calibration
위험 고객 묶음이 실제로 구조를 이루는가 silhouette

이 다섯 이름을 한 번에 외우지 않아도 된다

중요한 것은 지표 이름 암기보다 질문 연결입니다.

질문 연결되는 이름
임계값을 바꾸면 무엇이 달라지는가? ROC, PR
확률 출력이 너무 자신만만한가? log loss
점수가 실제 빈도와 맞는가? calibration
정답 없이도 묶음 구조가 그럴듯한가? silhouette

즉, 이 지표들은 모두 정확도 하나로 충분하지 않을 때 꺼내 보는 도구입니다.

사례 및 예시

사례 1. 사기 탐지 점수는 높은데 실제 운영 판단이 흔들릴 때

결제 시스템이 각 거래에 사기 위험 점수를 주고 있습니다. 사람이 먼저 보던 기준은 해외 결제인가, 평소와 다른 시간대인가, 짧은 시간에 여러 번 시도했는가 같은 신호였습니다.

정확도와 재현율만으로 모델을 비교하던 단계에서 운영으로 가면 더 복잡한 문제가 생깁니다. 어떤 모델은 양성과 음성을 잘 가르는 것처럼 보여도 threshold를 조금만 바꾸면 오탐이 급격히 늘고, 어떤 모델은 확률 점수 0.8을 많이 내놓지만 실제로는 그 정도로 위험하지 않을 수 있습니다. 또 고객 유형을 군집으로 나눠 보면 위험 거래가 특정 묶음에 모이는지 따로 보고 싶어집니다.

이때 ROC와 PR은 임계값 변화에 따라 무엇이 달라지는지 보게 하고, log loss는 틀린 답을 얼마나 과하게 확신했는지 읽게 하며, calibration은 점수 자체를 얼마나 믿어도 되는지 점검하게 합니다. silhouette는 정답 라벨 없이 고객 묶음 구조를 볼 때 등장합니다.

flowchart TD
  A["사기 위험 점수"]
  B["임곗값 변경"]
  C["정밀도-재현율 변화 확인"]
  D["점수 자신감 확인"]
  E["점수-빈도 일치 확인"]
  F["라벨 없는 고객 집단 점검"]

  A --> B --> C
  A --> D
  A --> E
  A --> F

같은 판단을 작은 코드 출력으로도 확인할 수 있습니다. 아래 예제는 같은 이진 분류 확률 출력에서 ROC-AUC, PR-AUC, log loss, calibration bin을 계산하고, 별도의 작은 군집 좌표에서 silhouette를 계산합니다.

import numpy as np
from sklearn.calibration import calibration_curve
from sklearn.metrics import (
    average_precision_score,
    log_loss,
    roc_auc_score,
    silhouette_score,
)

actual = np.array([0, 0, 0, 0, 1, 1, 1, 1])
probability = np.array([0.05, 0.25, 0.35, 0.80, 0.45, 0.65, 0.72, 0.95])

print("roc_auc=", round(roc_auc_score(actual, probability), 3))
print("pr_auc=", round(average_precision_score(actual, probability), 3))
print("log_loss=", round(log_loss(actual, probability), 3))

prob_true, prob_pred = calibration_curve(actual, probability, n_bins=3, strategy="uniform")
print(
    "calibration_bins=",
    [(round(float(p), 3), round(float(t), 3)) for p, t in zip(prob_pred, prob_true)],
)

points = np.array([[0.0, 0.1], [0.2, -0.1], [3.0, 3.1], [3.2, 2.9], [0.1, 0.3], [3.1, 3.3]])
cluster_labels = np.array([0, 0, 1, 1, 0, 1])
print("silhouette=", round(silhouette_score(points, cluster_labels), 3))

실행 결과 예시는 다음과 같습니다.

1
2
3
4
5
roc_auc= 0.812
pr_auc= 0.804
log_loss= 0.499
calibration_bins= [(0.15, 0.0), (0.483, 0.667), (0.823, 0.667)]
silhouette= 0.928

이 출력은 지표 이름이 늘어나는 이유를 보여 줍니다. ROC-AUC와 PR-AUC는 같은 확률 순위를 다른 관점에서 읽고, log loss는 확률의 자신감을 벌점으로 읽습니다. calibration bin은 0.483처럼 보이는 점수 묶음에서 실제 양성 비율이 0.667이었다처럼 점수와 실제 빈도의 관계를 보게 합니다. silhouette는 정답 라벨을 맞혔는지가 아니라, 주어진 군집이 내부적으로 조밀하고 서로 떨어져 있는지를 봅니다.

확인 가능한 결과도 질문마다 다릅니다. threshold를 바꿨을 때 precision과 recall이 어떻게 흔들리는지, 높은 위험 점수 묶음이 실제 사기 비율과 얼마나 맞는지, 군집 안 거래들이 실제로 비슷한지 각각 따로 확인해야 합니다. 그래서 이 지표들은 새 이름이 아니라 더 구체적인 질문에 대응하는 도구로 읽어야 합니다.

체크리스트

  • ROC와 PR을 언제 본편의 accuracy/precision/recall 뒤에 꺼내야 하는지 설명할 수 있는가
  • 왜 log loss와 calibration은 확률처럼 보이는 점수를 다시 의심하게 만드는지 말할 수 있는가
  • silhouette가 군집화에서 어떤 질문에 답하는 내부 기준인지 설명할 수 있는가
  • 평가 지표가 늘어나는 이유는 모델이 복잡해져서가 아니라, 우리가 던지는 질문이 더 구체해지기 때문이라는 점을 설명할 수 있는가
  • ROC와 PR은 임계값을 바꿀 때의 분류 균형을, log loss는 확률 출력의 자신감을, calibration은 점수와 실제 빈도의 맞음을 읽는다는 점을 설명할 수 있는가
  • 지표가 많다는 것이 좋은 결과의 뜻이 하나가 아니다라는 말과 연결된다는 점을 설명할 수 있는가

출처와 참고 자료