재현율, 정밀도, 기준선: 모델 점수를 읽는 법

지난 글에서 정확도 99.90%인 모델이 불량을 하나도 못 잡는 걸 봤어요. 이번 글은 그다음 질문을 다뤄요. 그러면 무엇으로 재야 하고, 그 숫자는 언제 믿을 수 있을까요? 처음에는 용어가 낯설어서 연습 문제를 거의 못 풀었고, 용어를 하나씩 짚은 뒤에 다시 풀었어요. 그 과정에서 놓친 부분도 같이 적었어요. 분류 지표, 회귀 오차, 기준선, 벤치마크, LLM 채점을 다루고, 지표의 수학적 유도와 라이브러리 코드는 다루지 않아요.

들어가기 전에: 용어 짚기

용어영어한 줄 뜻
놓침FN, False Negative실제 불량인데 정상이라고 통과시킨 것
오경보FP, False Positive실제 정상인데 불량이라고 경보를 울린 것
재현율Recall (민감도, Sensitivity)실제 불량 중에서 잡아낸 비율
정밀도Precision경보를 울린 것 중에서 진짜 불량인 비율
정확도Accuracy전체 중에서 맞힌 비율
임계값Threshold모델 점수가 이 값 이상이면 경보를 울리는 기준
기준선Baseline아무것도 배우지 않고 항상 같은 답만 내도 나오는 점수
F1F1 score재현율과 정밀도를 합친 점수. 둘 중 낮은 쪽에 끌려가요
MAEMean Absolute Error숫자 예측이 평균적으로 얼마나 빗나갔나
RMSERoot Mean Squared ErrorMAE와 비슷하지만 크게 빗나간 것에 더 큰 벌점을 줘요
오경보율FPR, False Positive Rate실제 정상 중에서 경보를 울린 비율
ROC 곡선, AUCROC curve, Area Under the Curve임계값을 바꿔 가며 오경보율과 재현율을 그린 곡선과 그 아래 넓이
PR 곡선Precision-Recall curve임계값을 바꿔 가며 재현율과 정밀도를 그린 곡선
벤치마크 오염Benchmark contamination시험 문제가 모델의 학습 자료에 미리 들어가 있는 상태
LLM 채점LLM-as-a-judgeLLM이 다른 LLM의 답을 채점하는 방식

1. 놓침과 오경보

불량 검사 모델이 할 수 있는 결과는 네 가지예요.

실제 불량실제 정상
불량이라고 경보TP: 맞게 잡았어요FP: 오경보
정상이라고 통과FN: 놓쳤어요TN: 맞게 통과시켰어요

틀리는 경우는 둘뿐이에요. 불량을 통과시키는 놓침(FN)과, 정상에 경보를 울리는 오경보(FP)예요.

영어 약자는 두 글자로 나눠 읽으면 헷갈리지 않아요.

  • 뒷글자 P/N은 모델이 뭐라고 했는지예요. P(Positive)는 "불량이다", N(Negative)은 "정상이다"예요.
  • 앞글자 T/F는 그 말이 맞았는지예요.
  • 그래서 FN은 "정상이라고 했는데 틀렸다", 곧 놓침이에요.

둘 중 어느 실수가 더 비싼지는 상황마다 달라요. 불량 칩이 고객사로 나가면 놓침이 더 비싸고, 경보마다 라인을 세워야 하면 오경보가 더 비싸요.

2. 재현율과 정밀도

두 지표는 무엇을 분모로 놓느냐가 달라요.

지표분모계산묻는 것
재현율실제 불량 전체TP ÷ (TP + FN)실제 불량 중 몇 개를 잡았나
정밀도울린 경보 전체TP ÷ (TP + FP)경보 중 몇 개가 진짜였나

예를 들어 실제 불량 칩 20개 중 15개를 잡았고, 경보는 모두 30번 울렸다면 이래요.

  • 재현율 = 15 ÷ 20 = 75%
  • 정밀도 = 15 ÷ 30 = 50%

외울 때는 짝으로 기억하면 돼요. 재현율은 놓침과, 정밀도는 오경보와 짝이에요. 놓침이 적을수록 재현율이 오르고, 오경보가 적을수록 정밀도가 올라요. 그래서 놓침이 더 비싼 상황에서는 재현율을, 오경보가 더 비싼 상황에서는 정밀도를 먼저 봐요. 암 검진처럼 환자를 놓치면 안 되는 경우가 재현율 쪽이에요.

재현율은 의료 분야에서 민감도(Sensitivity)라고도 불러요. 같은 지표예요.

3. 임계값

두 조건(재현율 95% 이상, 하루 오경보 50건 이하)을 어떤 임계값으로도 동시에 맞출 수 없을 때 무엇을 해야 하냐는 문제에서, 저는 "재현율을 맞출까?"라고 답했어요. 하나의 선택이긴 한데, 그걸로는 모자란 답이었어요.

모델은 보통 "불량일 점수 0.73"처럼 점수를 내고, 사람이 정한 임계값을 넘으면 경보를 울려요.

임계값경보재현율정밀도
낮추면많이 울려요올라가요떨어져요
높이면적게 울려요떨어져요올라가요

그래서 재현율과 정밀도는 하나를 올리면 다른 하나가 내려가요. 오경보가 너무 많다는 불만이 나오면 임계값을 올리고, 그 대가로 재현율이 떨어지는 걸 받아들여요.

임계값을 아무리 바꿔도 두 조건을 동시에 못 맞춘다면, 임계값으로는 해결할 수 없다는 뜻이에요. 예를 들어 칩 100,000개(불량 100개)를 보는 예시 모델에서 재현율을 95%에 맞추면 오경보가 하루 2,273건이에요. 재현율만 맞추면 오경보 조건은 여전히 깨져 있고, 현장에서는 결국 경보를 무시하게 돼요. 할 수 있는 일은 둘이에요.

  • 모델을 개선해요. 데이터나 피처를 보강해서 정상과 불량의 점수가 덜 겹치게 만들어요.
  • 조건을 다시 협의해요. "재현율 95%면 오경보가 하루 약 2,300건이고, 오경보를 50건으로 줄이면 재현율이 내려갑니다. 어느 쪽이 더 중요한가요?"처럼 숫자를 들고 현장 담당자에게 물어요.

어느 쪽을 포기할지는 비용이 걸린 결정이라 혼자 정하지 않는 게 좋아요.

4. 기준선

고객 1,000명 중 30명이 해지하는데 정확도 97%인 모델이 좋은 모델이냐는 문제에서, 저는 "아니요"라고 하고 이유로 "기준선이 애매해서"를 댔어요. 정확도 대신 볼 지표로는 정밀도를 골랐고요. 두 답 모두 조금씩 빗나갔어요.

기준선은 아무것도 배우지 않고 항상 같은 답만 내는 모델의 점수예요. 고객 정보를 하나도 보지 않고 모든 고객에게 "해지 안 해요"라고만 답하는 모델을 생각해 볼게요.

실제인원모델의 답결과
해지 안 함970명해지 안 해요맞음
해지함30명해지 안 해요틀림

1,000명 중 970명을 맞혔으니 정확도가 97%예요. 아무것도 안 보고도 97%가 나와요. 그래서 공들여 만든 모델의 정확도가 97%라면, 이 모델이 무언가를 배웠는지 정확도만으로는 알 수 없어요. "기준선이 애매해서"가 아니라 "기준선이 이미 97%라서"가 맞는 이유예요.

정확도 대신 먼저 볼 지표는 재현율이에요. 모델을 쓰는 목적이 해지할 고객을 찾아내는 거니까요. 위 모델은 해지한 30명 중 한 명도 찾지 못해서 재현율이 0%이고, 바로 드러나요. 정밀도는 이 모델이 아무도 지목하지 않아서 계산 자체가 안 돼요. 그래서 재현율부터 보고, 그다음 정밀도로 엉뚱한 고객을 얼마나 지목했는지 같이 봐요.

불량, 해지, 질병, 사기처럼 드문 쪽을 찾는 문제에서는 정확도를 믿지 않고 재현율부터 봐요. 숫자를 맞히는 문제의 기준선은 "내일 값은 오늘 값과 같다"처럼 잡고, 현장에서 이미 쓰는 규칙이나 관리 한계선(SPC)도 기준선이 돼요.

5. F1

F1은 재현율과 정밀도를 한 숫자로 합친 점수예요. 그냥 평균이 아니라 조화평균이라서 둘 중 낮은 쪽에 끌려가요.

모델재현율정밀도단순 평균F1
A. 거의 모든 칩에 경보를 울려요100%1%50.5%약 2%
B. 적당히 울려요80%70%75%약 75%

A는 경보가 거의 다 오경보라 쓸 수 없는 모델인데, 단순 평균으로는 50점이 넘어요. F1은 2%라서 쓸 수 없다는 게 드러나요. F1이 높으려면 재현율과 정밀도가 둘 다 높아야 해요.

6. MAE와 RMSE

MAE가 RMSE보다 큰 오차에 덜 민감하다면 왜 쓰는지 궁금했어요. 연습 문제에서는 오경보를 줄여야 하는 상황에 볼 지표로 MAE를 골라서 틀렸고요.

먼저 지표가 쓰이는 문제의 종류가 달라요.

문제 종류예쓰는 지표
둘 중 하나 고르기(분류)불량이다/아니다재현율, 정밀도, 정확도, F1
숫자 맞히기(회귀)박막 두께, 내일 온도MAE, RMSE

경보를 울리느냐 마느냐는 분류 문제라서 MAE를 쓸 수 없어요.

숫자를 맞히는 모델은 얼마나 빗나갔는지로 재요. 5일 동안의 예측 오차가 1, 1, 1, 1, 10이었다면 이래요.

  • MAE는 오차의 평균이에요. (1 + 1 + 1 + 1 + 10) ÷ 5 = 2.8
  • RMSE는 오차를 제곱해서 평균을 내고 제곱근을 씌워요. 제곱하면 1은 1이지만 10은 100이 돼서, 큰 오차가 훨씬 무겁게 들어가요. 결과는 약 4.56이에요.

한 번 크게 틀리면 큰일 나는 상황, 예를 들어 크게 빗나가면 웨이퍼를 폐기해야 하는 경우에는 RMSE를 봐요. MAE를 쓰는 이유는 셋이에요.

  • 설명하기 쉬워요. "평균 2.8nm 빗나가요"는 누구나 바로 알아들어요.
  • 이상한 값 하나에 덜 흔들려요. 센서 오류로 엉터리 값이 하나 섞이면 RMSE는 그 값에 크게 끌려가요.
  • 틀린 양에 비용이 그대로 비례할 때 맞아요. 재고 1개를 틀릴 때마다 비용이 똑같이 든다면 그대로 평균을 내는 MAE가 실제 비용과 맞아요.

실무에서는 둘 다 보고, 두 값의 차이가 크면 가끔 크게 빗나가는 경우가 있다는 신호로 읽어요.

7. ROC 곡선과 PR 곡선

ROC 곡선을 보려면 오경보율부터 알아야 해요. 정밀도와 헷갈리기 쉬워서 나란히 놓을게요.

지표분모묻는 것
정밀도울린 경보 전체경보가 울렸을 때 진짜 불량이었나
오경보율실제 정상 전체정상인데 괜히 경보를 울렸나

ROC 곡선은 임계값을 바꿔 가면서 가로에 오경보율, 세로에 재현율을 찍어 이은 곡선이에요. 왼쪽 위 구석(오경보 없이 불량을 다 잡는 자리)에 붙을수록 좋은 모델이고, 대각선은 무작위로 경보를 울리는 수준이에요. AUC는 이 곡선 아래 넓이예요. 1이면 완벽하고 0.5면 무작위 수준이에요.

TEXT
재현율
100% |  *-------------    <- 좋은 모델: 왼쪽 위로 붙어요
     | /            .
     |/          .
     |        .           <- 무작위 수준: 대각선
     |     .
  0% |.______________
     0%            100%  오경보율

문제는 드문 쪽을 찾을 때 생겨요. 칩 100,000개 중 불량이 100개인 예시 모델을 임계값 0.50으로 볼게요. 불량 100개 중 89개를 잡았고(재현율 89%), 정상 99,900개 중 620개에 경보를 울렸어요.

지표계산값
오경보율620 ÷ 정상 99,9000.62%
정밀도89 ÷ 경보 70912.6%

같은 오경보 620건인데, 오경보율로 보면 1%도 안 돼요. 분모인 정상이 99,900개나 되거든요. 그래서 ROC 곡선은 왼쪽 위에 붙고, 이 모델의 AUC는 0.995로 거의 완벽하게 나와요. 하지만 정밀도로 보면 경보 10번 중 9번이 오경보예요.

그래서 드문 쪽을 찾는 문제에서는 PR 곡선(가로 재현율, 세로 정밀도)을 같이 봐요. 정밀도에는 오경보 건수가 그대로 드러나니까요. 사기 거래가 0.01%인 데이터에서 ROC-AUC가 0.98이 나왔다면, 나쁜 모델이라고 단정하기보다는 정밀도와 PR 곡선을 확인하기 전까지 판단을 보류하는 게 맞아요.

예시 모델의 점수 분포는 설명을 위해 만든 거예요. 정상 칩 점수는 평균 0.25, 불량 칩 점수는 평균 0.65인 정규분포로 두었어요.

8. 작은 평가셋

평가 문제가 적으면 우연이 점수에 크게 섞여요. 문제 50개에서 모델 A가 41개, 모델 B가 43개를 맞혔다면 2개 차이예요. 문제 구성을 조금만 바꿔도 뒤집힐 수 있는 차이라서, B가 낫다고 말하기 어려워요. 반대로 문제 1,000개에서 820개 대 900개라면 B가 낫다고 볼 만해요.

차이가 작을 때는 평가 문제를 늘리거나, 문제를 바꿔 가며 여러 번 평가해서 매번 같은 쪽이 이기는지 봐요. LLM은 같은 입력에도 답이 달라지니까 문제마다 여러 번 돌려서 통과율을 보고요. 프롬프트를 고쳤더니 20개 중 통과가 15개에서 16개로 늘었다면, "아직 더 좋다고 말하기 어렵다"고 보고하고 평가를 늘리는 게 맞아요.

9. 벤치마크 오염

벤치마크는 AI 모델들을 같은 문제로 비교하려고 만든 공개 시험지예요. 오염은 그 시험 문제가 모델의 학습 자료에 미리 들어가 있는 상태예요. 공개된 문제는 인터넷에 퍼지고, LLM은 인터넷 글로 사전학습을 하니까 문제와 답을 미리 봤을 수 있어요. 지난 글의 누수가 벤치마크 규모로 일어난 거예요.

숫자만 바꾸거나 새로 만든 같은 유형 문제에서 점수가 크게 떨어지면 오염을 의심해요. 공개 벤치마크에서 95점을 받은 모델이 숫자만 바꾼 문제에서 50점을 받는 경우예요.

벤치마크 점수를 그대로 믿기 어려운 이유는 하나 더 있어요. 시험 과목이 우리 일과 달라요. 그래서 우리 설비 로그 분석에 쓸 모델을 고른다면, 우리 로그로 문제와 정답을 짝지은 평가셋을 먼저 만들고, 후보 모델들에게 같은 평가셋을 풀게 해서 비교해요. 공개하지 않은 평가셋이라 오염도 피할 수 있어요.

10. LLM 채점

A, B 순서로 보여 주면 A가 이기고 B, A 순서로 보여 주면 B가 이긴 문제에서, 위치 편향이라는 이름은 맞혔어요. 그런데 그 결과를 어떻게 봐야 하는지는 놓쳤어요. 연습 문제에서는 위치 편향에 대한 대응으로 "채점 모델을 더 큰 걸로 바꾼다"를 골라서 틀렸고요.

요약이나 보고서처럼 정답이 하나로 떨어지지 않는 결과는 채점 기준표(루브릭)를 주고 LLM에게 채점을 맡기기도 해요. 빠르고 싸지만 알려진 편향이 있어요. MT-Bench 논문이 정리한 것들이에요(Zheng et al., 2023).

편향내용대응
위치 편향두 답을 비교하면 내용과 상관없이 특정 순서에 놓인 답을 더 좋게 봐요순서를 바꿔 두 번 채점해요
장황함 편향길고 자세한 답을 더 좋게 봐요기준표에 길이는 점수에 넣지 않는다고 적어요
자기 선호자기와 같은 모델이 쓴 답을 더 좋게 봐요다른 모델로 채점하거나 사람 채점과 비교해요

순서를 바꿨더니 결과가 뒤집혔다면, 채점기가 내용이 아니라 순서를 보고 고른 거예요. 그래서 이 결과로는 어느 쪽이 나은지 알 수 없어요. 무승부로 두거나 판단을 보류하고, 순서를 바꿔도 같은 답이 이길 때만 결과를 믿어요.

채점 모델을 더 큰 걸로 바꾸는 건 대응이 되지 않아요. 같은 논문에서도 성능이 높은 모델에서까지 위치 편향이 나타났다고 보고했어요. 편향은 채점 방법을 바꿔서 막아요.

LLM 채점을 쓰기 전에는 일부 표본을 사람이 직접 채점해서 LLM 점수와 얼마나 일치하는지 먼저 확인해요. 전부를 사람이 다시 볼 거면 LLM 채점을 쓸 이유가 없으니 일부만 봐요. 일치도가 낮으면 그 채점기는 쓰지 않아요.

지표 고르기 연습

1. 불량 칩이 고객사로 출하되면 리콜 비용이 아주 커요. 가장 먼저 지켜야 할 지표는?

정답

재현율이에요. 놓침(FN)이 가장 비싼 상황이라 실제 불량 중 몇 개를 잡았는지를 먼저 지켜요.

2. 경보가 울릴 때마다 라인을 세우고 엔지니어가 웨이퍼를 확인해야 해요. 오경보를 줄이는 게 급할 때 보는 지표는?

정답

정밀도예요. 오경보(FP)가 비싼 상황이라 경보 중 진짜 불량의 비율을 봐요. 분류 문제라서 MAE는 쓸 수 없어요.

3. 불량률 0.05%인 데이터에서 ROC-AUC가 0.99로 나왔어요. 맞는 판단은?

정답

정밀도와 PR 곡선을 확인하기 전에는 판단하기 어려워요. 오경보율의 분모가 정상 전체라서 드문 쪽을 찾는 문제에서는 ROC가 좋아 보이기 쉬워요.

4. 박막 두께 예측에서 크게 빗나가면 그 웨이퍼를 폐기해야 해요. 큰 오차를 더 무겁게 보는 지표는?

정답

RMSE예요. 오차를 제곱해서 평균을 내니까 큰 오차 하나에 크게 반응해요.

5. 새 불량 분류 모델의 정확도가 95%예요. 가장 먼저 확인할 것은?

정답

모두 정상이라고 답하는 기준선의 정확도예요. 불량률이 5%라면 그 기준선도 95%예요.

6. 평가 문제 50개에서 프롬프트 v1은 41개, v2는 43개를 통과했어요. 맞는 판단은?

정답

차이가 작으니 평가셋을 늘리거나 여러 번 돌려서 같은 방향으로 나오는지 확인해요.

7. 공개 벤치마크에서 90점을 받은 모델이, 같은 유형으로 새로 만든 문제에서는 60점을 받았어요. 가장 의심할 것은?

정답

벤치마크 오염이에요. 처음 보는 문제에서 점수가 크게 떨어지는 게 오염의 신호예요.

8. LLM 채점기로 두 답을 비교했더니 내용과 상관없이 먼저 제시된 답이 자주 이겨요. 맞는 대응은?

정답

순서를 바꿔 두 번 채점하고, 두 번 다 같은 답이 이길 때만 결과를 믿어요. 일부는 사람 채점과 일치하는지도 확인해요.

다시 정리하면

  • 분류 지표는 놓침(FN), 오경보(FP), TP, TN 네 칸으로 계산해요.
  • 재현율은 실제 불량을 분모로, 정밀도는 울린 경보를 분모로 놓아요. 재현율은 놓침과, 정밀도는 오경보와 짝이에요.
  • 임계값을 바꾸면 재현율과 정밀도가 맞바뀌어요. 둘 다 못 맞추면 모델을 개선하거나, 숫자를 들고 담당자와 조건을 다시 협의해요.
  • 드문 쪽을 찾는 문제에서는 기준선이 이미 높아서 정확도로는 판단할 수 없어요. 재현율부터 봐요.
  • F1은 재현율과 정밀도 중 낮은 쪽에 끌려가요.
  • 숫자를 맞히는 문제는 MAE와 RMSE로 재요. RMSE는 큰 오차에 민감하고, MAE는 설명하기 쉽고 이상한 값에 덜 흔들려요.
  • 드문 쪽을 찾을 때 ROC-AUC는 실제보다 좋아 보일 수 있어서 정밀도와 PR 곡선을 같이 봐요.
  • 평가셋이 작으면 작은 차이는 우연일 수 있어요.
  • 공개 벤치마크는 오염될 수 있고 우리 일과도 달라서, 우리 데이터로 만든 평가셋이 필요해요.
  • LLM 채점은 위치, 장황함, 자기 선호 편향이 있어서 순서를 바꿔 두 번 채점하고, 일부를 사람 채점과 비교해요.