하나의 위험 점수를 여러 임계값으로 범주화한다
분류기가 LLM 출력마다 0–1 위험 점수를 낸다고 하자. 임계값 0.3이면 많은 출력을 위험으로 분류하고, 0.7이면 높은 점수만 차단한다. 각 임계값에서 TP·FN·FP·TN이 달라진다. ROC와 정밀도–재현율 곡선은 이 임계값을 낮은 곳부터 높은 곳까지 움직이며 두 지표의 쌍을 이어 그린다.
곡선의 점 하나는 임계값 하나에서 나온 혼동행렬이다. 선 자체가 모델 내부 사고 경로나 시간 흐름은 아니다. 같은 시험 표본, 같은 양성 정의, 같은 점수 방향을 유지해야 점들을 비교할 수 있다. 이 글의 수치는 실제 서비스 측정이 아니라 양성 50개·음성 150개로 만든 교육용 예시다.
| 임계값 | TP | FN | FP | TN | TPR/재현율 | FPR | 정밀도 |
|---|---|---|---|---|---|---|---|
| 0.3 | 47 | 3 | 36 | 114 | 94% | 24% | 56.6% |
| 0.5 | 42 | 8 | 15 | 135 | 84% | 10% | 73.7% |
| 0.7 | 34 | 16 | 6 | 144 | 68% | 4% | 85.0% |
ROC는 FPR과 TPR을 같은 임계값에서 짝짓는다
ROC의 x축은 FPR=FP/(FP+TN), y축은 TPR=TP/(TP+FN)이다. TPR은 재현율과 같다. 임계값 0.5에서 TPR은 42/50=0.84, FPR은 15/150=0.10이다. 왼쪽 위에 가까울수록 많은 양성을 잡으면서 적은 음성을 오경보하지만, 실제 운영 비용은 점마다 다를 수 있다.
scikit-learn 공식 roc_curve 문서는 실제 이진 레이블과 연속 점수로 FPR·TPR·임계값을 계산한다고 설명한다. 점수 방향을 뒤집거나 확률이 아닌 임의의 등급을 넣으면 곡선 의미가 달라진다. 대각선은 무작위 순위의 기준이며 데이터가 다르거나 표본이 작으면 불확실성 구간 없이 곡선 차이를 확정하지 않는다.
정밀도–재현율 곡선은 경보의 품질을 직접 본다
정밀도–재현율 곡선의 x축은 재현율=TP/(TP+FN), y축은 정밀도=TP/(TP+FP)다. 임계값 0.5에서 재현율은 84.0%, 정밀도는 73.7%다. 임계값을 낮추면 더 많이 잡지만 경보 목록에 안전 출력이 늘 수 있다. 사람 검토 용량이 제한된 경우 정밀도는 직접적인 업무량 질문이 된다.
scikit-learn 공식 precision_recall_curve 문서는 여러 임계값에서 정밀도와 재현율 쌍을 계산한다. 예측이 모두 양성인 시작점의 정밀도는 데이터의 양성 비율과 연결된다. 이 예시의 기저선은 50/200=25%다. 실제 양성이 드문 문제에서는 PR 곡선이 양성 경보의 품질 변화를 더 직접 드러낼 수 있다.
같은 임계값을 두 곡선에서 찾아 함께 읽는다
임계값 0.3은 ROC에서 (FPR .24, TPR .94), PR에서 (재현율 .94, 정밀도 .566)다. 0.7은 ROC에서 (.04, .68), PR에서 (.68, .85)다. 한 곡선의 점을 다른 곡선의 다른 임계값과 비교하면 교환관계를 왜곡한다. 임계값 라벨이나 연결 표를 제공해 네 셀과 두 좌표를 왕복한다.
Davis와 Goadrich는 고정된 자료에서 ROC 공간의 곡선과 PR 공간의 곡선 사이 대응 관계를 설명하고, 특히 기울어진 클래스 분포에서 PR 해석의 유용성을 논의했다. PR 공간에서는 두 점 사이 단순 직선 보간이 실제 가능한 성능을 정확히 나타내지 않을 수 있으므로 라이브러리의 계산 규칙과 계단 표현을 확인한다.
| 임계값 | ROC 좌표 (FPR,TPR) | PR 좌표 (재현율,정밀도) | 운영 변화 |
|---|---|---|---|
| 0.3 | (.24,.94) | (.94,.566) | 놓침↓ 오경보↑ |
| 0.5 | (.10,.84) | (.84,.737) | 중간 |
| 0.7 | (.04,.68) | (.68,.850) | 오경보↓ 놓침↑ |
클래스 불균형은 PR의 기저선과 정밀도를 바꾼다
ROC의 TPR과 FPR은 각각 양성·음성 내부 비율이라 동일한 조건부 성능 아래 기저율 변화에 덜 직접적으로 흔들린다. 그러나 정밀도는 TP/(TP+FP)이므로 실제 양성 비율이 낮아지면 같은 TPR·FPR에서도 떨어진다. 양성 1% 환경에서 FPR 1%는 양성 수와 비슷한 오경보를 만들 수 있다.
시험 세트를 양성과 음성 50:50으로 인위 균형화하면 ROC 비교에는 쓸 수 있어도 그 세트의 정밀도를 운영 정밀도로 바로 읽을 수 없다. 배포 기저율을 반영해 재가중하거나 대표 표본에서 측정한다. 언어·시기·사용자 집단별 기저율과 점수 분포 변화도 함께 감시한다.
| 양성 비율 | TPR | FPR | 예상 정밀도 |
|---|---|---|---|
| 25% | 84% | 10% | 73.7% |
| 10% | 84% | 10% | 48.3% |
| 1% | 84% | 1% | 45.9% |
| 1% | 84% | 10% | 7.8% |
AUC는 순위 요약이지 운영 임계값과 비용의 답이 아니다
ROC AUC는 무작위로 뽑은 양성의 점수가 음성보다 높을 가능성과 연결되는 전 범위 순위 요약이다. PR AUC나 average precision은 양성 경보의 품질을 다른 방식으로 요약한다. 두 수치는 같은 것이 아니며 구현의 보간 규칙도 확인한다. AUC가 큰 모델이 필요한 FPR 구간에서 더 좋은지는 별도다.
운영에서 FPR이 1% 이하여야 한다면 전체 ROC AUC보다 그 구간의 TPR과 불확실성을 본다. 검토 예산이 하루 100건이라면 상위 100건의 정밀도와 잡아낸 위험 수가 더 직접적이다. 모델 순위를 AUC 하나로 고정하지 않고 비용함수, 제약, 기저율과 임계값 안정성을 함께 제시한다.
임계값은 검증 자료에서 정하고 시험 자료로 잠근다
시험 곡선을 본 뒤 가장 좋아 보이는 임계값을 골라 같은 시험 결과를 보고하면 선택 편향이 생긴다. 학습 자료로 점수 모형을 만들고, 검증 자료에서 비용 또는 제약에 맞는 임계값을 정하며, 독립 시험 자료에서 그 한 점과 곡선을 평가한다. 운영 전에 처리 용량과 피해 비용을 수치 범위로 합의한다.
배포 뒤에는 기저율·점수 분포·지연된 정답 수집이 달라질 수 있다. 임계값을 자동 변경하면 변경 규칙과 안전장치를 기록하고 재검증한다. 사람 검토가 개입하면 검토자 성능과 대기 시간도 시스템 지표다. 모델 곡선만으로 전체 운영 품질을 표현하지 않는다.
잘못된 곡선은 축·기저율·선택 과정을 숨긴다
수정 전 보고서는 축 라벨 없이 두 곡선을 겹치고 ROC AUC 0.94만으로 “94% 정확”이라고 썼다. PR 기저선과 양성 정의가 없고, 시험 자료에서 가장 높은 F1 임계값을 고른 뒤 같은 결과를 최종 성능으로 발표했다. 모델마다 다른 표본을 써 곡선 차이가 모델 때문인지 자료 때문인지 알 수 없었다.
수정 후 ROC와 PR을 분리해 축·양성·기저율·표본 수를 적고 같은 시험 표본을 사용했다. AUC와 정확도를 다른 지표로 설명하고 관심 FPR 구간과 검토 용량에서 실제 TP·FP 건수를 표시했다. 임계값 선택은 검증 기록으로 분리하고 시험 결과에는 고정된 운영점만 강조했다.
실습은 임계값 하나를 두 곡선과 혼동행렬에서 찾는다
아래 실습은 0.3·0.5·0.7 세 임계값의 준비된 네 셀을 사용한다. 하나를 선택해 ROC 좌표, PR 좌표, 경보 수를 동시에 계산한다. TP+FN=50, FP+TN=150, 합계=200을 확인하고 임계값을 바꿨을 때 사람 검토량 TP+FP가 어떻게 달라지는지 비교한다.
공개 검수에서는 점수 방향, 임계값 정렬, 끝점, 중복 점수 처리와 AUC 구현을 독립 코드로 확인한다. 360·390·430px에서 두 축, 점, 기저선과 임계값 라벨이 잘리지 않는지 보고 상세 SVG는 키보드 가로 이동을 지원한다. 화면낭독기용 표에는 각 임계값의 네 셀과 모든 지표를 제공한다.
| 임계값 | TP | FN | FP | TN | TPR/재현율 | FPR | 정밀도 |
|---|---|---|---|---|---|---|---|
| 0.3 | 47 | 3 | 36 | 114 | 94% | 24% | 56.6% |
| 0.5 | 42 | 8 | 15 | 135 | 84% | 10% | 73.7% |
| 0.7 | 34 | 16 | 6 | 144 | 68% | 4% | 85.0% |
복사해서 쓸 수 있는 LLM 요청문
아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.
다음 연속 점수로 ROC와 정밀도–재현율 곡선을 검산해 줘. 1. 양성 범주, 점수 방향, 관측ID와 실제 레이블을 확인한다. 2. 고유 임계값마다 TP·FN·FP·TN을 계산하고 합계를 검산한다. 3. 같은 임계값에서 TPR·FPR·정밀도·재현율을 표로 연결한다. 4. ROC와 PR의 축, 기저선, 표본 수와 양성 비율을 명시한다. 5. AUC 계산과 보간 규칙을 적고 AUC를 정확도로 부르지 않는다. 6. 관심 오류 구간과 사람 검토 용량에서 운영점을 비교한다. 7. 임계값은 검증 자료에서 선택하고 독립 시험 자료로 평가한다. 8. 실제 점수와 레이블이 없으면 곡선이나 AUC를 만들지 않는다. [점수·레이블 표] …
직접 실습하고 결과를 읽기
이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.
자료와 출처
아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.