CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
  • Week 1
    • 1.ML 수명주기(ML Lifecycle): 비즈니스 문제 정의부터 A/B 테스트까지
    • 2.ML용 데이터 저장소: S3·EFS·FSx for Lustre·데이터 포맷
    • 3.데이터 수집: Kinesis·Glue·배치 vs 스트리밍
    • 4.데이터 레이블링: SageMaker Ground Truth·액티브 러닝(Active Learning)·레이블 품질
    • 5.1주차 종합 복습: ML 개요와 데이터 엔지니어링 1
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
    • 1.분류 평가지표: 정확도·정밀도·재현율·F1과 혼동행렬
    • 2.ROC/AUC와 임계값 조정: 곡선으로 읽는 모델 성능
    • 3.회귀 평가지표: RMSE·MAE·MAPE·R²와 잔차 분석
    • 4.모델 디버깅과 편향: SageMaker Debugger와 Clarify
    • 5.Week 9 종합 복습: 평가와 디버깅
  • Week 10
  • Week 11
  • Week 12
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← MLS-C01/Week 9/Day 1

기준: MLS-C01 시험 가이드·오류 제보

MLS-C01· AssociateWeek 9 · Day 1읽기 약 11분
핵심 정리
  • 이진 분류의 모든 지표는 혼동행렬 네 칸(TP/FP/FN/TN)에서 파생된다. 지표 선택은 "FP와 FN 중 어느 쪽 비용이 큰가"로 환원된다.
  • 정확도는 균형 데이터에서만 신뢰한다. 사기 1% 데이터에서 전부 "정상"으로 찍어도 정확도 99%가 나온다.
  • 정밀도 = TP/(TP+FP)는 FP를 줄일 때(스팸·추천), 재현율 = TP/(TP+FN)은 FN을 줄일 때(질병·사기) 본다.
  • F1은 조화평균이라 낮은 쪽에 민감하다. 정밀도 0.9·재현율 0.1이면 F1은 0.5가 아니라 0.18이다.
  • 다중 분류에서 소수 클래스도 동등히 반영하려면 Macro 평균, 전체 인스턴스 기준이면 Micro, 표본 비율 반영이면 Weighted.

Day 1 - 분류 평가지표: 정확도·정밀도·재현율·F1과 혼동행렬

혼동행렬: 모든 분류 지표의 출발점

모델을 학습했다면 "이 모델이 충분히 좋은가"를 숫자로 답해야 하는데, 그 숫자는 정확도 하나가 아니다. 이진 분류의 모든 지표는 네 칸짜리 표 하나에서 파생된다.

                예측: Positive    예측: Negative
실제: Positive    TP (참양성)       FN (거짓음성)
실제: Negative    FP (거짓양성)      TN (참음성)
칸뜻다른 이름현실의 이름
TP양성을 양성으로 맞춤—사기를 사기로 적발
TN음성을 음성으로 맞춤—정상 거래를 통과
FP음성을 양성으로 잘못 예측Type I error허위 경보(false alarm)
FN양성을 음성으로 놓침Type II error누락(miss)

"Positive"는 보통 우리가 탐지하려는 드문/중요한 클래스(사기, 질병, 이탈)로 잡는다. 어느 칸이 비싼가가 지표 선택을 결정한다.

FP와 FN의 비용 관점

도메인FP가 일어나면FN이 일어나면더 비싼 쪽
암 선별 검사불필요한 정밀검사·불안환자를 놓쳐 생명 위험FN
신용카드 사기 탐지정상 결제 차단, 고객 불만사기 손실 발생FN(보통)
스팸 필터중요한 메일이 스팸함으로 유실스팸 몇 통이 받은편지함에FP
제품 추천엉뚱한 추천으로 신뢰 하락좋은 상품을 안 보여줌FP
설비 예지정비멀쩡한 장비 점검 비용고장 방치 → 라인 정지FN

시험에서 지표 선택 문제는 대개 "FP와 FN 중 어느 쪽 비용이 큰가"로 환원된다. 질병을 놓치는 FN이 치명적이면 재현율을, 정상 메일을 스팸으로 분류하는 FP가 치명적이면 정밀도를 우선한다. 비즈니스 맥락을 혼동행렬의 한 칸으로 번역하는 훈련이 핵심이다.

정확도: 가장 직관적이지만 가장 위험한 지표

Accuracy = (TP + TN) / (TP + TN + FP + FN)

전체 예측 중 맞춘 비율이다. 클래스가 균형 잡혀 있을 때는 훌륭하지만, 불균형 데이터에서는 무력하다.

예: 사기 거래 1%, 정상 99%
모든 거래를 "정상"으로 찍는 더미 모델
→ Accuracy = 99%  (그러나 사기는 단 한 건도 못 잡음)

이 99%는 모델이 유용하다는 증거가 전혀 아니다. 왜 이런 일이 생기는지는 혼동행렬로 보면 즉시 드러난다.

[사기 1%, 표본 10,000건 / "전부 정상" 더미 모델]
 
                예측: 사기       예측: 정상
실제: 사기        TP = 0         FN = 100
실제: 정상        FP = 0         TN = 9,900
 
Accuracy  = (0 + 9,900) / 10,000 = 99.0%   ← 훌륭해 보인다
Recall    = 0 / (0 + 100)        = 0.0%    ← 실상
Precision = 0 / (0 + 0)          = 정의 불가
  • 정확도가 높은 이유는 분자에 거대한 TN이 들어 있기 때문이다. 소수 클래스 성능은 분자에 거의 기여하지 못한다.
  • 불균형 데이터의 정확도 기준선은 0이 아니라 다수 클래스 비율(여기선 99%)이다. 그 기준선을 넘지 못하면 모델은 무의미하다.

⚠️ 함정: "정확도 99.5%인데 왜 문제인가"라는 지문이 나오면 답은 거의 항상 "다수 클래스만 찍어도 그 값이 나오는 극단적 불균형"이다. 정확도 수치 자체가 아니라 클래스 비율과 비교해야 한다.

정밀도와 재현율

Precision = TP / (TP + FP)      ← 예측한 양성 중 진짜 비율
Recall    = TP / (TP + FN)      ← 실제 양성 중 잡아낸 비율
지표분모읽는 방향무엇을 줄이나대표 상황
정밀도(Precision)예측 양성 (TP+FP)혼동행렬의 열FP스팸 필터, 제품 추천
재현율(Recall)실제 양성 (TP+FN)혼동행렬의 행FN암 진단, 사기 탐지
특이도(Specificity)실제 음성 (TN+FP)음성 쪽 행FP정상을 정상으로 지키기
  • 재현율은 민감도(Sensitivity), TPR(True Positive Rate)과 같은 말이다. 시험에서 이름만 바꿔 나온다.
  • 특이도 = TN / (TN + FP)이며, 1 − 특이도가 곧 FPR이다.

트레이드오프

정밀도와 재현율은 보통 한쪽을 올리면 다른 쪽이 내려간다. 임계값을 낮춰 더 많이 Positive로 분류하면 재현율은 오르지만 정밀도는 떨어진다.

임계값 낮춤 ──────────────────────────────→ 임계값 높임
Positive 예측 많아짐                     Positive 예측 적어짐
   Recall ↑  Precision ↓                    Precision ↑  Recall ↓
   FN 감소, FP 증가                          FP 감소, FN 증가
 
  극단: 전부 Positive                      극단: 전부 Negative
  Recall = 1.0, Precision = 양성비율        Recall = 0, Precision = 정의 불가

정밀도와 재현율의 분모를 기억하면 헷갈리지 않는다. 정밀도의 분모는 "예측한 양성(TP+FP)" — 예측을 기준으로 한 열(column) 정확도다. 재현율의 분모는 "실제 양성(TP+FN)" — 실제를 기준으로 한 행(row) 적중률이다. 즉 정밀도는 예측의 신뢰도, 재현율은 탐지의 완전성을 잰다.

F1 점수: 정밀도와 재현율의 조화평균

F1 = 2 × (Precision × Recall) / (Precision + Recall)

정밀도와 재현율을 하나의 숫자로 합치되, 산술평균이 아니라 조화평균을 쓴다. 조화평균은 두 값 중 작은 쪽에 더 민감해서, 한쪽만 높고 한쪽이 낮으면 점수가 크게 깎인다.

Precision=0.9, Recall=0.1
산술평균 = 0.5  (그럴듯해 보임)
F1 = 2 × (0.9 × 0.1) / (1.0) = 0.18  (실상을 드러냄)
  • F1은 FP와 FN을 비슷하게 중요시하면서 불균형 데이터를 평가할 때 기본 지표로 쓴다.
  • 한쪽에 가중치를 주려면 일반화된 F-beta를 쓴다: F_β = (1+β²) × P × R / (β²×P + R).
지표β강조하는 쪽언제
F11균형FP·FN 비용이 비슷
F22재현율놓치면 안 되는 탐지(질병·사기)
F0.50.5정밀도오탐이 비싼 경우(스팸·추천)

한 혼동행렬로 네 지표 계산해 보기

[사기 탐지 / 표본 10,000건, 실제 사기 100건]
 
                예측: 사기       예측: 정상
실제: 사기        TP = 60        FN = 40
실제: 정상        FP = 240       TN = 9,660
 
Accuracy    = (60 + 9,660) / 10,000        = 97.2%
Precision   = 60 / (60 + 240)              = 20.0%
Recall      = 60 / (60 + 40)               = 60.0%
Specificity = 9,660 / (9,660 + 240)        = 97.6%
F1          = 2 × (0.20 × 0.60) / 0.80     = 30.0%
  • 정확도 97.2%는 "전부 정상" 더미의 99%보다 오히려 낮다. 정확도만 보면 이 모델을 버리게 된다.
  • 그러나 재현율 60%는 사기 100건 중 60건을 실제로 잡아냈다는 뜻이다. 불균형에서 봐야 할 숫자는 이쪽이다.
  • 정밀도 20%는 경보 5건 중 1건만 진짜라는 뜻 — 조사 인력 비용을 감당할 수 있는지가 임계값 결정의 재료가 된다.

상황별 지표 해석표

상황클래스 균형우선 지표정확도를 못 믿는 이유
사기 탐지 (양성 0.5%)극단 불균형재현율 → F1/F2전부 정상으로 찍어도 99.5%
의료 진단 선별 검사불균형재현율(민감도)유병률이 낮아 정확도가 부풀려짐
스팸 필터중간정밀도 → F0.5정상 메일 유실이 정확도에 거의 안 잡힘
추천 시스템불균형정밀도(상위 K)안 본 항목이 대부분이라 TN이 지배
이탈(churn) 예측불균형재현율 + 정밀도 균형(F1)이탈률이 낮아 정확도가 무의미
이미지 다중 분류(균형)균형정확도, Macro-F1(균형이면 정확도도 유효)
품질 검사(불량 탐지)극단 불균형재현율불량률이 1% 미만이면 정확도 무력

더미 모델의 기준선

지표를 볼 때는 "아무것도 안 하는 모델이 받는 점수"와 비교해야 한다. 양성 비율을 p로 둔다.

더미 전략정확도정밀도재현율F1
전부 Negative로 예측1 − p (p=0.01이면 99%)정의 불가00
전부 Positive로 예측pp1.02p/(1+p)
무작위 예측(확률 p)대략 1 − 2p(1−p)ppp

⚠️ 함정: 정확도의 기준선은 0.5가 아니라 다수 클래스 비율이다. p=0.01인 문제에서 정확도 98%는 더미보다 나쁜 모델이다. 반면 정밀도·재현율·F1의 기준선은 p 수준으로 낮아, 불균형에서도 개선 폭이 그대로 보인다.

지표 선택 결정 트리

분류 모델을 평가해야 한다
├─ 클래스가 대체로 균형인가? (소수 클래스 ≳ 20%)
│    ├─ 예   → 정확도 사용 가능 (+ 보조로 F1)
│    └─ 아니오 ↓
├─ FN(놓침)의 비용이 압도적인가? (질병·사기·불량)
│    ├─ 예   → 재현율 우선, 정밀도 하한을 제약으로 (F2도 고려)
│    └─ 아니오 ↓
├─ FP(오탐)의 비용이 압도적인가? (스팸·추천·자동 차단)
│    ├─ 예   → 정밀도 우선 (F0.5도 고려)
│    └─ 아니오 ↓
└─ 둘 다 비슷하게 중요 → F1 (다중 클래스면 Macro-F1)

다중 클래스에서의 평균화: Macro vs Micro vs Weighted

클래스가 셋 이상이면 클래스별 정밀도/재현율을 어떻게 묶을지 정해야 한다.

방식계산특징
Macro클래스별 지표를 단순 평균소수 클래스도 동등 취급 → 불균형 시 소수 클래스 중요할 때
Micro전체 TP/FP/FN을 합산 후 계산큰 클래스가 지배 → 전체 인스턴스 기준 성능
Weighted클래스 표본 수로 가중 평균클래스 비율 반영
[클래스 A: 9,000건 / 클래스 B: 500건 / 클래스 C: 50건]
 
Macro    : (F1_A + F1_B + F1_C) / 3   ← C가 A와 같은 무게
Weighted : F1을 9000:500:50 으로 가중 ← A가 사실상 결과를 결정
Micro    : TP·FP·FN을 전부 합쳐 한 번 계산 ← 역시 A가 지배

"소수 클래스 성능까지 동등하게 보고 싶다"는 지문에 Weighted를 고르면 오답이다. Weighted는 표본 수로 가중하므로 다수 클래스가 여전히 결과를 지배한다. 동등 취급은 Macro뿐이다.

SageMaker에서의 지표 확인

빌트인 알고리즘과 Automatic Model Tuning은 이 지표들을 CloudWatch와 학습 로그로 내보낸다. XGBoost 이진 분류에서 튜닝 목적 지표를 F1으로 잡는 예:

from sagemaker.tuner import HyperparameterTuner
 
tuner = HyperparameterTuner(
    estimator=xgb_estimator,
    objective_metric_name="validation:f1",  # 불균형 데이터 → f1 최적화
    objective_type="Maximize",
    hyperparameter_ranges=ranges,
    max_jobs=20,
    max_parallel_jobs=3,
)

validation:accuracy 대신 validation:f1을 목적 지표로 두면 튜너가 불균형을 무시한 채 정확도만 올리는 모델을 고르는 사고를 막을 수 있다.

평가지표는 학습이 끝난 뒤의 채점표일 뿐 아니라, 하이퍼파라미터 튜닝의 나침반이다. objective_metric_name을 잘못 잡으면 튜너는 정확히 잘못된 방향으로 최적화한다. 따라서 "이 비즈니스 문제의 올바른 목적 지표는 무엇인가"는 학습 전에 결정해야 하는 모델링 의사결정이다.

지문 단서 → 정답 매핑

지문 단서고를 답이유
"양성이 0.5%인데 정확도 99.5%"정확도는 신뢰 불가 → 정밀도/재현율/F1다수 클래스만 찍어도 나오는 값
"환자를 놓치면 생명이 위험"재현율(Recall)분모에 FN이 들어감
"정상 메일이 스팸함으로 가면 큰 피해"정밀도(Precision)분모에 FP가 들어감
"FP와 FN을 모두 신경 써야 한다"F1 점수조화평균으로 양쪽 균형
"재현율을 더 강조하고 싶다"F2 (F-beta, β>1)β가 클수록 재현율 가중
"5개 클래스, 소수 클래스도 동등 반영"Macro 평균클래스별 지표 단순 평균
"전체 인스턴스 기준 성능이 궁금"Micro 평균TP/FP/FN 합산 후 계산
"튜닝 목적 지표를 무엇으로" (불균형 이진)validation:f1, Maximize정확도 목적은 불균형을 무시
"정밀도 0.95, 재현율 0.10"F1 ≈ 0.18, 양성 대부분 놓침조화평균은 낮은 쪽에 민감

내일은 임계값을 조정하며 정밀도-재현율 트레이드오프를 시각화하는 ROC 곡선과 PR 곡선, 그리고 AUC를 다룬다.

📖 용어

  • 혼동행렬(confusion matrix) : 실제 라벨과 예측 라벨을 교차시킨 표. 모든 분류 지표가 여기서 나온다.
  • TP / TN : 양성을 양성으로, 음성을 음성으로 제대로 맞춘 건수.
  • FP (거짓양성, Type I error) : 아닌 것을 맞다고 잘못 외친 것. 허위 경보.
  • FN (거짓음성, Type II error) : 맞는 것을 아니라고 놓친 것. 누락.
  • 정밀도(Precision) : 모델이 "양성"이라고 한 것 중 실제로 맞은 비율. 예측의 신뢰도.
  • 재현율(Recall) / 민감도 / TPR : 실제 양성 전부 중 모델이 찾아낸 비율. 탐지의 완전성.
  • 특이도(Specificity) : 실제 음성 중 음성으로 제대로 분류한 비율. TN/(TN+FP).
  • F1 점수 : 정밀도와 재현율의 조화평균. 둘 중 낮은 쪽에 민감해 한쪽만 좋은 모델을 걸러낸다.
  • F-beta : F1을 일반화한 지표. β>1이면 재현율을, β<1이면 정밀도를 더 중시한다.
  • Macro / Micro / Weighted 평균 : 다중 클래스에서 클래스별 지표를 묶는 세 방식. 각각 동등 가중 / 전체 합산 / 표본 수 가중.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

신용카드 사기 탐지 모델에서 사기 거래는 전체의 0.5%다. 한 모델이 정확도 99.5%를 기록했다. 이 정확도를 신뢰할 수 없는 가장 큰 이유는?

문제 2

암 선별 검사 모델을 평가한다. 환자(양성)를 정상으로 놓치는 일(FN)이 가장 위험하다. 우선해야 할 지표는?

문제 3

어떤 모델의 정밀도가 0.95, 재현율이 0.10이다. 이 둘을 균형 있게 반영하는 F1 점수는 대략 얼마이며 무엇을 시사하는가?

문제 4

스팸 필터에서 정상 메일을 스팸함으로 보내는 일(FP)이 사용자에게 가장 큰 피해를 준다. 모델 평가 시 우선해야 할 지표는?

문제 5

클래스가 5개이고 일부 클래스의 표본이 매우 적은 다중 분류 문제에서, 소수 클래스의 성능까지 동등하게 반영해 평가하고 싶다. 적절한 평균화 방식은?

이전8주차 종합 복습: 학습·튜닝·일반화Week 8 · Day 5다음 ROC/AUC와 임계값 조정: 곡선으로 읽는 모델 성능Week 9 · Day 2

참고 공식 자료

  • MLS-C01 공식 시험 안내(새 탭에서 열림)

이 페이지

  • 혼동행렬: 모든 분류 지표의 출발점
  • FP와 FN의 비용 관점
  • 정확도: 가장 직관적이지만 가장 위험한 지표
  • 정밀도와 재현율
  • 트레이드오프
  • F1 점수: 정밀도와 재현율의 조화평균
  • 한 혼동행렬로 네 지표 계산해 보기
  • 상황별 지표 해석표
  • 더미 모델의 기준선
  • 지표 선택 결정 트리
  • 다중 클래스에서의 평균화: Macro vs Micro vs Weighted
  • SageMaker에서의 지표 확인
  • 지문 단서 → 정답 매핑
  • 용어
  • 연습 문제