
정확도(Accuracy)만으로는 충분하지 않은 이유: 모든 AI 엔지니어가 이해해야 할 평가 지표
요약
단순 정확도(Accuracy)의 한계를 지적하며, 데이터 불균형 상황에서 발생할 수 있는 오류를 설명합니다. 혼동 행렬(Confusion Matrix)을 통해 모델의 성능을 다각도로 평가하는 방법론을 제시합니다.
핵심 포인트
- 데이터 불균형 시 정확도는 모델 성능을 왜곡할 수 있음
- 사기 탐지 등 특정 도메인에서는 재현율(Recall)이 더 중요함
- 혼동 행렬을 통해 TP, FP, FN, TN을 구분하여 분석해야 함
- GenAI 시스템 운영 시 맥락 의존적인 평가 지표 설계가 필수적임
정확도만으로는 충분하지 않은 이유: 모든 AI 엔지니어가 이해해야 할 평가 지표
평가 대시보드에 따르면 모델의 정확도가 **95%**라고 합니다. 경영진은 만족합니다. 배포는 라이브됩니다.
2주 후, 사용자들은 여전히 치명적인 오류들이 새어 나온다고 불만을 제기합니다.
문제는 항상 모델 자체에 있는 것은 아닙니다. 때로는 문제 자체가 지표(metric)에 있을 수 있습니다.
AI 시스템이 연구 프로토타입에서 실제 운영 인프라로 이동함에 따라, 평가는 가장 중요한 엔지니어링 문제 중 하나가 됩니다. 이는 특히 출력이 확률적이고, 주관적이며, 맥락 의존성이 높은 현대의 GenAI(생성형 AI) 시스템에서 더욱 그렇습니다.
본 글에서는 머신러닝 및 GenAI 시스템에서 사용되는 가장 중요한 평가 지표들을 분석하고, 이들이 어디서 실패하는지 이해하며, 운영 엔지니어링 관점에서 어떻게 평가를 생각해야 하는지 논의할 것입니다.
정확도와 관련된 핵심 문제점
정확도는 일반적으로 사람들이 머신러닝에서 처음 접하는 지표입니다. 이는 간단합니다:
$$Accuracy = rac{Correct\ Predictions}{Total\ Predictions}$$
언뜻 보기에는 합리적으로 보입니다. 모델이 95%의 시간 동안 올바르게 예측한다면, 분명 좋은 것 같습니다.
하지만 데이터셋이 불균형할 때 정확도는 위험해집니다.
사기 탐지 시스템을 상상해 보세요:
- 거래의 99%는 합법적입니다.
- 1%는 사기 거래입니다.
만약 모델이 다음과 같이 예측한다고 가정해 봅시다:
"모든 거래는 합법적이다."
결과는 어떨까요?
- 정확도 99%
- 완전히 쓸모없는 사기 탐지 시스템
실패를 더 명확하게 만들기 위해, 10,000건의 거래를 상상해 봅시다:
| 지표 | 개수 |
|---|---|
| 사기 거래 | 100 |
| ... |
모델이 9,900개의 예측을 맞히므로 정확도는 매우 좋아 보입니다. 하지만 사기에 대한 재현율(recall)은 0%입니다.
이는 운영 시스템에서 가장 흔한 평가 실수 중 하나입니다: 지표는 건강해 보이지만 시스템은 실제 업무를 수행하는 데 실패합니다.

혼동 행렬 이해하기
대부분의 평가 지표(Evaluation metrics)는 혼동 행렬 (Confusion matrix)이라 불리는 것에서 파생됩니다.
| 예측 양성 (Predicted Positive) | 예측 음성 (Predicted Negative) | |
|---|---|---|
| 실제 양성 (Actual Positive) | 진양성 (True Positive, TP) | 위음성 (False Negative, FN) |
| 실제 음성 (Actual Negative) | 위양성 (False Positive, FP) | 진음성 (True Negative, TN) |
이 행렬은 모델의 동작에 대해 훨씬 더 풍부한 이해를 제공합니다. 이를 통해 우리는 몇 가지 중요한 지표를 도출할 수 있습니다.
정밀도 (Precision)
정밀도는 다음 질문에 답합니다:
"모델이 양성이라고 예측했을 때, 얼마나 자주 실제로 맞는가?"
$$\text{Precision} = \frac{TP}{TP + FP}$$
정밀도가 높다는 것은 모델이 위양성 (False Positives)을 적게 생성한다는 것을 의미하며, 따라서 모델의 양성 예측을 더 신뢰할 수 있음을 뜻합니다.
정밀도는 오보(False alarms)의 비용이 클 때 중요합니다. 일반적인 예로는 스팸 필터, 콘텐츠 중재 (Content moderation), 자동 차단 (Automated bans), 그리고 금융 거래 차단 등이 있습니다.
만약 스팸 탐지기가 정상적인 이메일을 잘못 분류한다면, 사용자들은 빠르게 신뢰를 잃게 됩니다.
재현율 (Recall)
재현율은 다음 질문에 답합니다:
"실제 양성 사례 중 모델이 성공적으로 탐지한 사례는 얼마나 되는가?"
$$\text{Recall} = \frac{TP}{TP + FN}$$
재현율이 높다는 것은 모델이 양성 사례를 놓치는 경우가 적고, 중요한 이벤트 대부분을 잡아낸다는 것을 의미합니다.
재현율은 무언가를 놓치는 비용이 클 때 중요합니다. 일반적인 예로는 사기 탐지 (Fraud detection), 의료 진단, 보안 시스템, 그리고 안전 모니터링 등이 있습니다.
재현율이 낮은 암 진단 모델은 생명을 위협하는 사례를 놓칠 수 있습니다.
정밀도와 재현율의 트레이드오프 (The Precision vs Recall Tradeoff)
대부분의 실제 시스템에서 정밀도를 높이면 재현율이 떨어지고, 재현율을 높이면 정밀도가 떨어집니다. 이는 머신러닝 (Machine learning)의 핵심적인 최적화 문제 중 하나를 형성합니다.
예를 들어, 분류 임계값 (Classification threshold)을 낮추면 일반적으로 재현율은 증가하지만, 위양성 (False positives) 또한 증가하여 정밀도가 감소하게 됩니다.
이러한 트레이드오프 (Tradeoff)는 실제 운영되는 AI 시스템 어디에서나 나타납니다. 현대의 LLM (Large Language Model) 중재 시스템은 공격적인 필터링, 사용자 경험 (User experience), 안전 요구 사항, 그리고 운영 비용 사이에서 끊임없이 균형을 맞춥니다.
완벽한 임계값 (Threshold)이란 거의 존재하지 않습니다. 오직 트레이드오프 (Tradeoff)만 있을 뿐입니다.
F1 Score
F1 스코어 (F1 score)는 정밀도 (Precision)와 재현율 (Recall)을 하나의 지표로 결합합니다.
$$F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall}$$
F1은 클래스 불균형 (Class imbalance)이 존재하고, 정밀도와 재현율이 모두 중요하며, 단일 통합 지표를 원할 때 유용합니다.
이것이 바로 F1이 정보 검색 (Information retrieval), NLP (Natural Language Processing) 분류, GenAI (Generative AI) 평가, 개체명 인식 (Entity extraction), 그리고 다중 레이블 분류 (Multi-label classification)에서 널리 사용되는 이유입니다.
하지만 F1은 정보를 숨기기도 합니다. 두 모델이 운영 측면에서 매우 다르게 동작하더라도 동일한 F1 스코어를 가질 수 있습니다.
한 모델은 많은 위양성 (False positives)을 생성할 수 있고, 다른 모델은 많은 진양성 (True positives)을 놓칠 수 있습니다. 동일한 지표가 매우 다른 실패 모드 (Failure modes)를 숨길 수 있는 것입니다.
F1이 충분하지 않은 경우
F1은 정밀도와 재현율이 동일하게 중요하다고 가정합니다. 하지만 항상 그런 것은 아닙니다.
사기 탐지 (Fraud detection)에서는 사기를 놓치는 것이 비용이 많이 들기 때문에 재현율 (Recall)이 더 중요할 수 있습니다. 자동 계정 차단 (Automated account bans)에서는 잘못된 비난이 사용자 신뢰를 손상시키기 때문에 정밀도 (Precision)가 더 중요할 수 있습니다.
이러한 경우, F1을 최적화하는 것이 여전히 잘못된 시스템 동작을 초래할 수 있습니다.
이와 관련된 지표인 F-beta는 이러한 트레이드오프 (Tradeoff)를 조절할 수 있게 해줍니다.
- F2는 재현율 (Recall)을 강조합니다.
- F0.5는 정밀도 (Precision)를 강조합니다.
중요한 질문은 "어떤 지표가 인기 있는가?"가 아닙니다. 중요한 질문은 "어떤 실수가 더 비용이 많이 드는가?"입니다.
GenAI 평가로부터 얻은 실무 교훈
GenAI 시스템에서 가장 흥미로운 문제 중 하나는 평가 그 자체가 확률적 (Probabilistic)이 된다는 점입니다.
전통적인 시스템은 종종 결정론적 (Deterministic) 출력물을 평가합니다:
- 정답 (Correct)
- 오답 (Incorrect)
하지만 LLM 시스템은 이분법적인 경우가 거의 없습니다. 예를 들어, LLM을 사용하여 티켓 분류 시스템을 구축한다고 가정해 봅시다. 모델은 문제를 부분적으로 이해할 수 있습니다. 즉, 올바른 근본 원인 (Root cause)을 식별하지만 잘못된 심각도 (Severity)를 할당하거나, 불완전한 설명을 생성하거나, 해결 단계에서 환각 (Hallucination)을 일으킬 수 있습니다.
이제 평가는 훨씬 더 어려워집니다.
제가 작업했던 한 평가 파이프라인에서는, 엔지니어들이 관찰한 명백한 품질 문제에도 불구하고 초기 집계 지표 (Aggregate metrics)는 강력해 보였습니다. 근본 원인은 클래스 불균형 (Class imbalance)이었습니다.
어떤 레이블은 수천 번 나타나는 반면, 다른 레이블은 단 몇 번만 나타났습니다. 일반적인 레이블이 점수를 지배했기 때문에 가중치 적용 지표 (Weighted metrics)는 매우 훌륭해 보였습니다.
Macro F1은 즉시 실제 문제를 드러냈습니다. 시스템이 운영상 중요하지만 드물게 발생하는 클래스들을 사실상 무시하고 있었던 것입니다.
이것이 바로 평가 엔지니어링 (Evaluation engineering)이 현대 AI 인프라에서 주요 학문 분야가 되고 있는 이유 중 하나입니다.
Macro vs Micro vs Weighted F1
이러한 구분은 다중 클래스 (Multi-class) 시스템에서 매우 중요해집니다.
Micro F1
Micro F1은 모든 예측을 전역적으로 집계합니다. 이는 일반적인 클래스에 유리하며, 전체적인 시스템 성능이 가장 중요하고 데이터셋 분포가 실제 운영 환경을 반영할 때 유용합니다.
Macro F1
Macro F1은 클래스별로 독립적으로 F1을 계산하고 이를 동일하게 평균을 냅니다. 이는 희귀 클래스를 동일하게 중요한 것으로 취급하며, 희귀 클래스, 공정성 (Fairness), 또는 꼬리 성능 (Tail performance)이 중요할 때 유용합니다.
Weighted F1
Weighted F1은 두 세계의 균형을 맞춥니다. 클래스는 빈도에 따라 비례적으로 기여합니다.
이는 운영 대시보드에서 자주 사용되지만, 때때로 소수 클래스의 실패를 숨길 수 있습니다.
ROC-AUC
ROC-AUC는 **Receiver Operating Characteristic - Area Under the Curve (수신자 조작 특성 곡선 아래 면적)**를 의미합니다.
이는 모델이 다양한 분류 임계값 (classification thresholds)에 걸쳐 양성 (positive) 사례를 음성 (negative) 사례로부터 얼마나 잘 분리하는지를 측정합니다.
많은 분류기 (classifiers)는 양성 또는 음성을 직접 출력하지 않습니다. 대신 점수나 확률을 출력합니다.
예를 들어:
| 거래 (Transaction) | 실제 클래스 (Actual Class) | 모델 점수 (Model Score) |
|---|---|---|
| A | 사기 (Fraud) | 0.92 |
| ... |
이러한 점수들을 예측값으로 바꾸기 위해, 우리는 임계값 (threshold)을 선택합니다.
만약 임계값이 0.8이라면:
- A와 B는 사기로 예측됩니다.
- C와 D는 정상으로 예측됩니다.
만약 임계값이 0.3이라면:
- A, B, C는 사기로 예측됩니다.
- D는 정상으로 예측됩니다.
임계값을 변경하면 거짓 양성 (false positives)과 거짓 음성 (false negatives)이 변합니다.
ROC 곡선은 모델이 실제 양성을 얼마나 잡아내는지 알려주는 진양성률 (true positive rate)을, 모델이 실제 음성을 얼마나 잘못 표시하는지 알려주는 거짓 양성률 (false positive rate)에 대해 플로팅 (plotting)함으로써 이러한 트레이드오프 (tradeoff)를 보여줍니다.
AUC는 곡선 아래 면적 (Area Under the Curve)을 의미합니다.
1.0 점수는 완벽한 분리를 의미하고, 0.5 점수는 무작위 추측 (random guessing)을 의미하며, 0.5 미만은 무작위 추측보다 성능이 낮음을 의미합니다.
높은 ROC-AUC는 모델이 일반적으로 음성 사례보다 양성 사례에 더 높은 점수를 부여함을 의미합니다.
ROC-AUC는 하나의 고정된 임계값에 의존하지 않기 때문에 모델을 비교할 때 유용합니다. 하지만 데이터 불균형 (imbalanced datasets)이 심한 경우, 실제 운영 환경에서의 체감 성능보다 더 좋게 보일 수 있습니다.
PR-AUC
Precision-Recall AUC (정밀도-재현율 AUC)는 불균형한 문제에서 종종 더 많은 정보를 제공합니다.
ROC-AUC와 달리, PR-AUC는 정밀도 (precision)와 재현율 (recall)에 직접적으로 집중합니다. 이는 사기 탐지 (fraud detection), 보안 시스템, 희귀 이벤트 탐지 (rare event detection), 그리고 생성형 AI (GenAI) 이슈 탐지에 특히 가치가 있습니다.
실제로, 프로덕션 AI (production AI) 시스템에서는 PR-AUC가 종종 더 정직한 이야기를 들려줍니다.
Calibration: 대부분의 팀이 간과하는 지표
두 모델이 모두 다음과 같이 예측한다고 가정해 봅시다:
"90% 확신 (confidence)"
하지만:
- 모델 A는 실제로 90%의 확률로 정답을 맞힙니다.
- 모델 B는 60%의 확률로만 정답을 맞힙니다.
모델 A는 Calibration (교정)이 되어 있습니다. 모델 B는 과잉 확신 (overconfident) 상태입니다.
Calibration은 모델의 확신도가 실제 현실과 일치하는지를 측정합니다. 이는 자율 시스템 (autonomous systems), 의료 AI (medical AI), LLM 판사 (LLM judges), 추천 시스템 (recommendation systems), 그리고 인간-AI 협업 (human-AI collaboration) 분야에서 매우 중요해집니다.
Calibration을 검사하는 일반적인 방법으로는 신뢰도 도표 (reliability diagrams), 기대 교정 오차 (expected calibration error), 그리고 브라이어 점수 (Brier score)가 있습니다.
최신 LLM들은 Calibration된 확신도 추정 능력이 부족하기로 악명이 높습니다. 이는 모델이 언제 행동할지, 도움을 요청할지, 혹은 멈출지를 결정해야 하는 자율 에이전트 시스템 (autonomous agent systems)에 큰 과제를 안겨줍니다.
LLM 시스템에서의 평가는 다르다
전통적인 머신러닝 (ML) 평가는 보통 명확한 라벨 (labels), 결정론적 출력 (deterministic outputs), 그리고 안정적인 데이터셋 (stable datasets)을 가정합니다.
LLM 시스템은 이 세 가지 가정을 모두 위반합니다. LLM의 출력은 주관적이고, 창의적이며, 다단계적이고, 문맥 의존적이며, 비결정론적 (non-deterministic)일 수 있습니다.
LLM 제품의 경우, 평가는 종종 다음과 같은 여러 차원을 동시에 측정해야 합니다: 사실적 정확성 (factual correctness), 지시 이행 (instruction following), 관련성 (relevance), 완전성 (completeness), 근거성 (groundedness), 안전성 (safety), 형식 준수 (formatting compliance), 도구 사용 정확성 (tool-use correctness), 지연 시간 (latency), 그리고 비용 (cost).
이는 새로운 평가 접근 방식을 만들어냅니다.
LLM-as-a-Judge
점점 더 인기를 얻고 있는 기술 중 하나는 LLM 자체를 평가자로 사용하는 것입니다.
아이디어는 간단합니다:
- 모델 출력을 생성합니다.
- 다른 LLM에게 품질을 평가하도록 요청합니다.
- 기대되는 동작 (expected behavior)과 비교합니다.
이를 통해 요약 (summarization), 추론 (reasoning), 에이전트 워크플로우 (agent workflows), 코딩 시스템 (coding systems), 그리고 고객 지원 시스템 (customer support systems)을 위한 확장 가능한 평가 파이프라인 (evaluation pipelines)을 구축할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기


