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 2

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

MLS-C01· AssociateWeek 9 · Day 2읽기 약 10분
핵심 정리
  • 분류기는 라벨이 아니라 확률 점수를 낸다. 임계값 t를 어디에 두느냐가 정밀도·재현율을 통째로 바꾼다.
  • ROC 곡선은 TPR(재현율) vs FPR을 그린다. 좌상단에 가까울수록 좋고, 대각선은 무작위 추측이다.
  • AUC는 곡선 아래 면적으로 임계값과 무관한 변별력 요약치다. 해석: 무작위 양성 점수 > 무작위 음성 점수일 확률.
  • 극단적 불균형에서는 ROC가 낙관적이다. FPR 분모의 거대한 TN이 FP 증가를 희석하므로 PR AUC(Average Precision)를 본다.
  • 실무 패턴은 2단계 분리: AUC로 모델을 고르고, 운영 임계값은 FP/FN 비용 구조로 따로 정한다.

Day 2 - ROC/AUC와 임계값 조정: 곡선으로 읽는 모델 성능

임계값이 바꾸는 것

어제의 정밀도·재현율은 특정 임계값(보통 0.5)에서 계산한 단면이었다. 분류기는 P(Positive) = 0.73 같은 점수를 출력하고, 임계값 t를 정해 점수 ≥ t면 Positive로 분류한다.

임계값 ↓ (예: 0.3)  → 더 많이 Positive로 분류
   → 재현율 ↑ (양성을 더 많이 잡음), 정밀도 ↓ (FP 증가)
 
임계값 ↑ (예: 0.7)  → 더 보수적으로 Positive 분류
   → 정밀도 ↑ (확실한 것만), 재현율 ↓ (놓치는 양성 증가)

즉 단 하나의 모델이라도 임계값에 따라 무수히 많은 (정밀도, 재현율) 쌍을 가진다. 곡선은 이 모든 쌍을 한 그림에 펼친 것이다.

임계값 이동이 각 칸에 미치는 효과

임계값 조작TPFPFNTN재현율/TPR정밀도FPR
낮춘다 (0.5 → 0.3)증가증가감소감소↑↓(보통)↑
높인다 (0.5 → 0.7)감소감소증가증가↓↑(보통)↓
t = 0 (전부 Positive)최대최대001.0양성 비율1.0
t = 1 (전부 Negative)00최대최대0정의 불가0

⚠️ 함정: 임계값을 바꿔도 AUC는 변하지 않는다. AUC는 모든 임계값을 이미 훑은 결과이기 때문이다. "AUC를 최대화하는 임계값을 찾는다"는 보기는 오답이다.

ROC 곡선: TPR vs FPR

ROC(Receiver Operating Characteristic) 곡선은 임계값을 움직이며 두 축을 그린다.

세로축 TPR (재현율)      = TP / (TP + FN)   ← 양성을 얼마나 잡나
가로축 FPR (거짓양성률)  = FP / (FP + TN)   ← 음성을 얼마나 잘못 경보하나
 
(0,0) 모든 것을 Negative로 분류 (임계값=1)
(1,1) 모든 것을 Positive로 분류 (임계값=0)
좌상단 (0,1)에 가까울수록 좋은 모델
대각선 y=x : 무작위 추측 수준
TPR
1.0 ┤        ╭──────────────●(1,1)  t=0
    │      ╭─╯          ╱
    │    ╭─╯          ╱
0.8 ┤   ╱           ╱      ← 대각선(y=x): AUC 0.5, 무작위
    │  ╱          ╱
    │ ╱         ╱          ← 굵은 곡선: 좋은 모델 (좌상단으로 솟음)
0.4 ┤╱        ╱
    ││      ╱
    ││    ╱      좌상단 (0,1) = 완벽: FP 없이 모든 양성 탐지
0.0 ●────╱────────────────→ FPR
   (0,0) 0.0            1.0
    t=1
  • 좋은 모델일수록 곡선이 좌상단 모서리로 솟구친다. FPR을 거의 늘리지 않으면서 TPR을 빠르게 끌어올리는 모양이다.
  • 임계값을 낮추면 곡선 위를 (0,0)에서 (1,1) 방향으로 이동한다. 곡선 위 한 점 = 임계값 하나.

AUC: 곡선 아래 면적

AUC(Area Under the Curve)는 ROC 곡선 아래 면적으로, 모델 성능을 임계값과 무관하게 0~1 사이 한 숫자로 요약한다.

AUC = 1.0   완벽한 분류
AUC = 0.5   무작위 추측 (대각선)
AUC < 0.5   무작위보다 나쁨 (예측을 뒤집으면 개선)

AUC의 직관적 해석: 무작위로 고른 양성 샘플의 점수가 무작위로 고른 음성 샘플의 점수보다 높을 확률이다. 즉 모델이 양성과 음성을 얼마나 잘 "순위 매기는지"를 잰다.

AUC 값 해석 구간 (통용되는 대략적 기준)

AUC해석실무적 판단
0.90 ~ 1.00매우 우수데이터 누수를 먼저 의심해 볼 만한 수준
0.80 ~ 0.90우수대부분의 운영 모델이 목표하는 구간
0.70 ~ 0.80양호쓸 만하지만 개선 여지 큼
0.60 ~ 0.70미흡피처·모델 재설계 검토
≈ 0.50무작위신호를 못 잡음
< 0.50역전라벨 뒤집힘·전처리 오류 의심

AUC가 임계값과 무관하다는 점이 양날의 검이다. 여러 모델의 변별력을 한 번에 비교할 때는 편리하지만, 실제 운영에서는 결국 임계값 하나를 골라야 한다. 그래서 시험에서 "모델들을 비교"하면 AUC, "운영 임계값을 정하라"면 ROC/PR 곡선 위의 특정 지점을 고르는 문제로 갈린다.

PR 곡선: 불균형 데이터에서 ROC보다 정직하다

PR(Precision-Recall) 곡선은 가로축에 재현율, 세로축에 정밀도를 둔다. 극단적 불균형 데이터에서는 PR 곡선이 ROC보다 더 정직한 그림을 준다.

이유: ROC의 FPR = FP / (FP + TN)
음성(TN)이 압도적으로 많으면(불균형), FP가 늘어도
거대한 TN 분모에 묻혀 FPR이 거의 안 변한다.
→ ROC 곡선이 실제보다 낙관적으로 보임
 
PR 곡선의 정밀도 = TP / (TP + FP)
FP 증가가 정밀도에 직접 반영 → 불균형의 고통을 그대로 드러냄
[표본 10,000건 / 양성 100건(1%), 음성 9,900건(99%)]
[TP = 60, FP = 100 인 임계값에서]
 
ROC 쪽:  FPR = FP / (FP + TN) = 100 / 9,900  = 0.0101  ← 거의 0, 곡선이 안 움직인다
PR  쪽:  Precision = TP / (TP + FP) = 60 / 160 = 0.375  ← 즉시 무너진다
 
같은 오탐 100건인데 ROC는 "1%밖에 안 틀렸다"고 말하고
PR은 "경보 160건 중 100건, 62.5%가 헛것"이라고 말한다.

따라서 사기·질병처럼 양성이 극히 드문 문제에서는 PR AUC(Average Precision)를 우선 본다.

ROC vs PR 비교표

항목ROC 곡선PR 곡선
가로축 / 세로축FPR / TPR(재현율)재현율 / 정밀도
분모에 TN이 들어가나들어간다(FPR)들어가지 않는다
무작위 모델의 기준선항상 0.5 (대각선)양성 비율 p (수평선)
클래스 비율이 바뀌면거의 불변기준선이 함께 이동
불균형에서의 성격낙관적으로 보임실상을 드러냄
주 용도모델 간 변별력 비교소수 클래스 탐지 성능 평가
요약 지표ROC-AUCPR AUC = Average Precision(AP)

"불균형이면 PR 곡선"이라는 규칙의 근거는 분모에 있다. ROC의 FPR은 분모에 다수 클래스(TN)를 포함해 FP 증가를 희석하지만, PR의 정밀도는 분모가 (TP+FP)뿐이라 소수 클래스에서의 오탐을 가리지 않는다. 분모에 무엇이 들어가는지를 보면 어떤 곡선이 함정에 강한지 판단할 수 있다.

⚠️ 함정: PR AUC는 ROC-AUC와 달리 기준선이 0.5가 아니다. 양성 비율이 1%면 무작위 모델의 AP도 약 0.01이므로, AP 0.30은 "낮다"가 아니라 무작위 대비 30배다. 절대값만 보고 판단하면 안 된다.

임계값 선택: 비즈니스 트레이드오프

곡선이 그려졌다면 운영 임계값을 정해야 한다. 방법은 비즈니스 비용 구조에 따라 다르다.

import numpy as np
from sklearn.metrics import precision_recall_curve
 
precision, recall, thresholds = precision_recall_curve(y_true, y_scores)
 
# 예: 재현율 90% 이상을 의무화하는 규제 환경
#     → 그 제약을 만족하는 임계값 중 정밀도가 가장 높은 점 선택
mask = recall[:-1] >= 0.90
best_idx = np.argmax(precision[:-1][mask])
chosen_threshold = thresholds[mask][best_idx]

대표적 선택 전략:

상황임계값 전략
FN 비용 큼 (질병/사기)재현율 하한 보장 → 임계값 낮춤
FP 비용 큼 (스팸/추천)정밀도 하한 보장 → 임계값 높임
FP·FN 균형F1 최대화 지점 선택
비용을 금액으로 환산 가능기대비용 cost_FP×FP + cost_FN×FN 최소화 지점

기대비용 최소화는 가장 원칙적인 방법이다. FP 한 건과 FN 한 건의 달러 비용을 알면, 곡선 위 각 임계값의 총비용을 계산해 가장 싼 지점을 고른다.

기대비용으로 임계값 고르기

[사기 탐지 / 양성 100건, 음성 9,900건]
[가정: FP 1건 = 조사비 $10,  FN 1건 = 손실 $500]
 
임계값   TP    FP     FN    비용 = 10×FP + 500×FN
 0.2     95   1,200    5    12,000 + 2,500 = $14,500
 0.3     88     500   12     5,000 + 6,000 = $11,000
 0.5     60     100   40     1,000 + 20,000 = $21,000
 0.7     35      20   65       200 + 32,500 = $32,700
 
→ 총비용이 최소인 t = 0.3 을 운영 임계값으로 채택
   (F1이 최대인 지점과 일치하지 않을 수 있다 — 비용이 비대칭이므로)
  • FN 비용이 FP 비용보다 훨씬 크면 최적 임계값은 0.5보다 낮은 쪽으로 밀린다.
  • 반대로 FP가 비싸면(자동 계정 정지, 광고 차단) 최적점은 0.5보다 높아진다.
  • 기본값 0.5는 "FP와 FN 비용이 같다"는 암묵적 가정일 뿐, 어떤 근거도 없는 숫자다.
성능을 평가하고 임계값을 정해야 한다
├─ 목적이 "여러 모델 중 무엇이 나은가"인가?
│    ├─ 예, 클래스 균형    → ROC-AUC
│    └─ 예, 극단 불균형    → PR AUC (Average Precision)
├─ 목적이 "운영 임계값 하나를 고르는 것"인가?
│    ├─ FP/FN 금액을 안다  → 기대비용 최소화 지점
│    ├─ 규제로 재현율 하한 → 제약 만족 중 정밀도 최대 지점
│    ├─ 규제로 정밀도 하한 → 제약 만족 중 재현율 최대 지점
│    └─ 비용 정보 없음     → F1 최대화 지점
└─ 비용 구조가 나중에 바뀔 수 있다
     └─ 모델은 AUC로 고정하고 임계값만 재조정 (재학습 불필요)

AUC가 알려주지 않는 것: 확률 보정

  • AUC는 점수의 순서만 본다. 모든 점수에 같은 단조 변환을 가해도 AUC는 그대로다.
  • 따라서 AUC가 높아도 출력 확률이 실제 발생 빈도와 어긋날 수 있다. "점수 0.8인 건이 실제로 80% 확률로 양성인가"는 별개 문제다.
  • 임계값을 확률로 해석해 쓰거나(예: "위험도 90% 이상만 차단") 기대비용 계산에 확률을 곱해 쓸 계획이라면, 보정(calibration) 여부를 따로 확인해야 한다.

"AUC 0.92인데 예측 확률을 그대로 리스크 점수로 고객에게 노출한다"는 설계는 위험하다. 순위는 맞아도 절대 확률값은 신뢰할 근거가 없다.

SageMaker에서의 활용

빌트인 이진 분류기는 validation:auc를 학습 지표로 내보내므로 Automatic Model Tuning의 목적 지표로 쓸 수 있다. 또한 SageMaker 엔드포인트는 확률 점수를 반환하므로, 임계값 컷은 추론 후처리 단계에서 적용한다.

tuner = HyperparameterTuner(
    estimator=xgb_estimator,
    objective_metric_name="validation:auc",  # 변별력 기준 튜닝
    objective_type="Maximize",
    hyperparameter_ranges=ranges,
)
# 엔드포인트는 0.0~1.0 점수를 반환 → 후처리에서 비즈니스 임계값 적용
score = float(predictor.predict(payload))
label = 1 if score >= chosen_threshold else 0

AUC로 좋은 모델을 고른 뒤, 임계값은 별도로 비즈니스 제약에 맞춰 정하는 2단계 분리가 실무 패턴이다.

모델 학습/튜닝과 임계값 결정은 서로 다른 단계의 의사결정이다. AUC를 목적 지표로 튜닝하면 임계값에 휘둘리지 않는 "잘 순위 매기는 모델"을 얻고, 그 모델 위에서 비용 구조에 맞는 임계값을 사후에 고른다. 이 분리 덕분에 비용 구조가 바뀌어도 모델을 다시 학습하지 않고 임계값만 조정할 수 있다.

지문 단서 → 정답 매핑

지문 단서고를 답이유
"임계값을 0.5 → 0.3으로 낮췄다"재현율 ↑, 정밀도 ↓Positive 예측이 늘어 FN 감소·FP 증가
"AUC가 0.5다"무작위 추측 수준의 변별력ROC 대각선에 해당
"양성이 0.3%인 극단 불균형"PR AUC(Average Precision)ROC의 FPR이 FP 증가를 희석
"FP·FN의 금액 비용을 안다"기대비용 최소화 임계값총비용을 직접 계산 가능
"임계값과 무관하게 모델들을 비교"validation:auc, MaximizeAUC는 임계값 독립적 순위 지표
"규제상 재현율 90% 이상 필수"제약 만족 지점 중 정밀도 최대하한을 제약으로 두고 나머지 최적화
"AUC를 최대화하는 임계값"오답 보기AUC는 임계값에 의존하지 않음
"비용 구조가 자주 바뀐다"모델 고정 + 임계값만 재조정후처리 단계 분리의 이점
"엔드포인트가 0.87을 반환했다"확률 점수 → 후처리에서 컷라벨 변환은 추론 후처리의 몫

내일은 분류가 아닌 회귀 모델의 평가지표 — RMSE·MAE·MAPE·R²와 잔차 분석 — 으로 넘어간다.

📖 용어

  • 임계값(threshold) : 확률 점수를 0/1 라벨로 자르는 기준선. 모델을 바꾸지 않고도 정밀도·재현율을 조절한다.
  • TPR (True Positive Rate) : 재현율·민감도와 같은 말. TP/(TP+FN).
  • FPR (False Positive Rate) : 실제 음성 중 잘못 경보한 비율. FP/(FP+TN). 1 − 특이도와 같다.
  • ROC 곡선 : 임계값을 0~1로 훑으며 (FPR, TPR)을 이은 곡선. 좌상단에 붙을수록 좋다.
  • AUC : ROC 곡선 아래 면적. 무작위 양성의 점수가 무작위 음성보다 높을 확률과 같다.
  • PR 곡선 : (재현율, 정밀도)를 이은 곡선. 소수 클래스 탐지 성능을 정직하게 보여준다.
  • Average Precision (AP) / PR AUC : PR 곡선 아래 면적. 무작위 모델의 기준선은 0.5가 아니라 양성 비율이다.
  • 순위 변별력(ranking) : 양성에 더 높은 점수를 주는 능력. AUC가 재는 것이 바로 이것이다.
  • 기대비용 최소화 : FP·FN 한 건의 금액을 곱해 총비용이 가장 작아지는 임계값을 고르는 방법.
  • 확률 보정(calibration) : 모델이 낸 점수 0.8이 실제로 80% 빈도로 양성인지의 문제. AUC는 순서만 보므로 보정 여부를 보장하지 않는다.

📝 연습 문제

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

문제 1

분류 모델의 임계값을 0.5에서 0.3으로 낮췄다. 일반적으로 일어나는 변화는?

문제 2

ROC 곡선의 AUC가 0.5라는 것은 무엇을 의미하는가?

문제 3

양성 클래스가 전체의 0.3%인 극단적 불균형 사기 탐지 문제다. 모델 성능 평가에 ROC-AUC보다 더 정직한 지표는?

문제 4

FP 한 건의 비용과 FN 한 건의 비용을 금액으로 추정할 수 있는 상황이다. 가장 원칙적인 운영 임계값 선택 방법은?

문제 5

여러 후보 모델의 변별력을 임계값과 무관하게 한 숫자로 비교하려 한다. SageMaker Automatic Model Tuning의 목적 지표로 가장 적절한 것은?

이전분류 평가지표: 정확도·정밀도·재현율·F1과 혼동행렬Week 9 · Day 1다음 회귀 평가지표: RMSE·MAE·MAPE·R²와 잔차 분석Week 9 · Day 3

참고 공식 자료

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

이 페이지

  • 임계값이 바꾸는 것
  • 임계값 이동이 각 칸에 미치는 효과
  • ROC 곡선: TPR vs FPR
  • AUC: 곡선 아래 면적
  • AUC 값 해석 구간 (통용되는 대략적 기준)
  • PR 곡선: 불균형 데이터에서 ROC보다 정직하다
  • ROC vs PR 비교표
  • 임계값 선택: 비즈니스 트레이드오프
  • 기대비용으로 임계값 고르기
  • AUC가 알려주지 않는 것: 확률 보정
  • SageMaker에서의 활용
  • 지문 단서 → 정답 매핑
  • 용어
  • 연습 문제