머신러닝 오류 이해하기: Accuracy, Precision, Recall 및 F1 Score
Source: Dev.to
머신러닝 모델은 숫자로 평가되는 경우가 많지만, 많은 초보자(그리고 실무자조차도) 이 그 숫자가 실제로 의미하는 바를 오해합니다. 95 % 정확도를 보이는 모델이라 할지라도 실제 상황에서는 쓸모없을 수 있습니다.
이번 포스트에서는 다음 내용을 직관적으로 풀어보고, 인터뷰나 프로젝트에서 자신 있게 활용할 수 있는 예시를 제공합니다.
- 머신러닝에서 발생하는 오류 유형
- 혼동 행렬 (Confusion matrix)
- 정확도 (Accuracy)
- 정밀도 (Precision)
- 재현율 (Recall)
- F1 점수 (F1 Score)
1️⃣ Types of Errors in Machine Learning
In a classification problem, predictions fall into four categories:
| 예측 양성 | 예측 음성 | |
|---|---|---|
| 실제 양성 | True Positive (TP) | False Negative (FN) |
| 실제 음성 | False Positive (FP) | True Negative (TN) |
🔴 False Positive (Type I Error)
Model predicts Positive, but the actual result is Negative
예시: 이메일이 스팸으로 표시되었지만 실제로는 스팸이 아님.
🔵 False Negative (Type II Error)
Model predicts Negative, but the actual result is Positive
예시: 의료 검사가 질병 없음이라고 판정했지만 실제로는 환자가 질병을 가지고 있음.
These errors directly impact evaluation metrics.
2️⃣ 혼동 행렬 (기초)
혼동 행렬은 예측 결과를 요약합니다:
Predicted
+ -
Actual + TP FN
Actual - FP TN
모든 지표는 이 표에서 파생됩니다.
3️⃣ 정확도
📌 정의
정확도는 모델이 정답을 맞힌 비율을 측정합니다.
📐 수식
[ \text{Accuracy} = \frac{TP + TN}{TP + FP + FN + TN} ]
❗ 정확도와 관련된 문제
정확도는 불균형 데이터셋에서는 오해를 불러일으킬 수 있습니다.
예시
- 정상 환자 99명
- 질병이 있는 환자 1명
모델이 모든 사람에 대해 질병 없음이라고 예측한다면:
[ \text{Accuracy}= \frac{99}{100}=99% ]
높은 정확도에도 불구하고 모델은 위험합니다. → 정확도만으로는 충분하지 않다.
4️⃣ Precision
📌 정의
예측된 양성 중 실제 양성인 비율은?
📐 공식
[ \text{Precision} = \frac{TP}{TP + FP} ]
🎯 언제 Precision에 집중해야 할까?
False Positive(거짓 양성)의 비용이 클 때.
예시
- 스팸 탐지
- 사기 탐지
정당한 경우를 잘못 플래그하고 싶지 않다.
5️⃣ Recall (민감도)
📌 정의
전체 실제 양성 중 모델이 올바르게 식별한 비율은?
📐 수식
[ \text{Recall} = \frac{TP}{TP + FN} ]
🎯 언제 Recall에 집중해야 할까?
거짓 음성이 위험할 때.
예시
- 암 진단
- 사고 감지
양성 사례를 놓치면 심각한 결과를 초래할 수 있습니다.
6️⃣ 정밀도 ↔ 재현율 트레이드‑오프
정밀도를 높이면 일반적으로 재현율이 감소하고, 그 반대도 마찬가지입니다.
| 시나리오 | 우선순위 |
|---|---|
| 스팸 필터 | 정밀도 |
| 질병 진단 | 재현율 |
| 사기 탐지 | 재현율 |
이 트레이드‑오프는 F1 점수로 이어집니다.
7️⃣ F1 Score
📌 정의
정밀도와 재현율의 조화 평균.
📐 공식
[ \text{F1} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} ]
✅ 왜 F1 점수를 사용하나요?
- 정밀도와 재현율의 균형을 맞춤
- 불균형 데이터셋에 잘 작동
- 극단적인 값에 패널티 부여 (정밀도나 재현율 중 하나가 낮으면 F1이 급격히 감소)
8️⃣ Summary Table
| 지표 | 가장 적합한 경우 | 초점 |
|---|---|---|
| 정확도 | 데이터가 균형 잡힌 경우 | 전체 정확도 |
| 정밀도 | 위양성 비용이 클 때 | 예측 품질 |
| 재현율 | 위음성 비용이 클 때 | 탐지 완전성 |
| F1 점수 | 데이터 불균형일 때 | 균형 잡힌 성능 |
9️⃣ 실제 사례 연구
지표를 이해하는 데는 실제 문제와 연결시킬 때 더 명확해집니다. 아래는 흔히 면접에서 다루어지는 사례 연구들입니다.
🏥 사례 연구 1: 질병 탐지 (암 / COVID)
- 시나리오: 모델이 환자가 질병을 가지고 있는지 예측합니다.
- 중요 오류: False Negative – 실제로 환자가 아픈데 건강함으로 예측하는 경우.
- Recall이 더 중요한 이유: 아픈 환자를 놓치면 치료가 지연되고 생명이 위험해집니다. 일부 오경보(FP)는 허용될 수 있습니다.
주요 지표: Recall
💳 사례 연구 2: 신용카드 사기 탐지
- 시나리오: 모델이 사기 거래를 식별합니다.
- 중요 오류: False Negative – 사기가 정상 거래로 표시되는 경우.
- 트레이드오프: FP가 너무 많으면 고객이 불편해하고, FN이 너무 많으면 재정적 손실이 발생합니다.
최적 지표: F1 Score (FP와 FN 비용을 균형 있게 고려)
📧 사례 연구 3: 스팸 이메일 탐지
- 시나리오: 이메일을 스팸 또는 비스팸으로 분류합니다.
- 중요 오류: False Positive – 중요한 이메일이 스팸으로 표시되는 경우.
- Precision이 중요한 이유: 사용자가 중요한 이메일(채용 제안, OTP, 청구서 등)을 놓칠 수 있습니다.
주요 지표: Precision
🚗 사례 연구 4: 자율 주행 (보행자 탐지)
- 시나리오: 카메라와 센서 데이터를 이용해 보행자를 탐지합니다.
- 중요 오류: False Negative – 보행자를 탐지하지 못함.
- Recall이 중요한 이유: 한 명이라도 보행자를 놓치면 치명적일 수 있습니다.
주요 지표: Recall
🏭 사례 연구 5: 제조 결함 탐지
- 시나리오: 조립 라인에서 결함이 있는 제품을 탐지합니다.
- 중요 오류는 상황에 따라 다름:
- FP가 높으면 → 폐기물 및 비용 증가
- FN이 높으면 → 결함 제품이 고객에게 전달
- 균형 잡힌 접근법: Precision과 Recall을 모두 사용합니다.
최적 지표: F1 Score
🔚 최종 생각
절대 정확도만을 맹신하지 마세요. 항상 다음을 물어보세요:
- 어떤 오류(FP 또는 FN)가 더 위험한가?
- 내 데이터셋은 불균형인가?
- 거짓 양성 대비 거짓 음성의 실제 비용은 얼마인가?
이러한 지표를 이해하면 어떤 문제든 올바른 평가 전략을 선택할 수 있습니다.
ics는 단순히 모델을 만드는 사람이 아니라 더 나은 ML 엔지니어가 되도록 도와줍니다.
도움이 되었다면, 여러분이 좋아하는 ML 함정을 공유하거나 댓글로 남겨 주세요!