💡 개념: 이 파이프라인 전체를 관통하는 하나의 원칙은 재현성과 training-serving skew 방지다. 수집·정제·피처 로직을 코드에 고정하고, 데이터를 버전 관리하고, 학습과 추론에서 동일한 변환을 쓴다. 노트북에서 즉흥적으로 만든 피처나 출처 불명 데이터는 운영에서 조용히 모델을 망가뜨린다.
# 분류 지표 결정 트리 (의사코드)if 클래스가_극단적으로_불균형: if 미탐_비용이_큼 (사기, 질병): → recall 우선, PR-AUC로 비교 elif 오탐_비용이_큼 (스팸, 마케팅): → precision 우선 else: → PR-AUCelse: if 임계값_미정: → ROC-AUC else: → F1 / accuracy
지표
한 줄 요약
이 지표가 답이 되는 단서
Accuracy
전체 정답률
"클래스가 균형" 명시가 있을 때만
Precision
오탐이 적은가
"정상 메일을 막으면 안 된다", "발송 비용"
Recall
미탐이 적은가
"놓치면 치명적", "사기·질병"
F1
둘의 균형
두 비용이 비슷하다는 서술
ROC-AUC
임계값 무관 분별력
"임계값을 아직 못 정했다", "모델 비교"
PR-AUC
소수 클래스 분별력
"양성이 0.1%", "극단적 불균형"
RMSE / MAE
회귀 오차
연속값 예측, 이상치 민감도 언급
단일 지표 함정을 경계해야 한다. 불균형 데이터에서 accuracy 99.9%는 "전부 음성" 모델일 수 있다. 오프라인 지표는 배포를 통과시키는 게이트이고, 온라인 비즈니스 지표(A/B 테스트)가 최종 판정을 내린다. 이 2단 구조를 기억하면 Day 1의 요지를 잡은 것이다.
시나리오: 글로벌 이커머스가 실시간 클릭 스트림에서 사기 거래를 탐지하려 한다. 과거 사기 레이블이 매우 희소하고, 사기는 전체 거래의 0.1%다. 데이터에는 PII가 포함된다.
단계별 풀이 흐름:
수집 — 다소비자와 재처리가 필요하므로 Kinesis Data Streams + Flink로 실시간 피처, 동시에 Firehose로 S3 적재(람다 아키텍처).
저장 — S3 데이터 레이크에 Parquet로.
레이블링 — PII가 있으므로 Private 워크포스. 레이블이 매우 희소하므로 액티브 러닝으로 효율화하거나, seed조차 너무 적으면 비지도 이상 탐지(Random Cut Forest)로 출발.
평가 — 0.1% 불균형 + 미탐 비용 큼 → recall 우선, PR-AUC로 비교.
배포 — 소량 트래픽 A/B로 먼저 검증한 뒤 확대, 드리프트 모니터링.
이 한 시나리오에 Week 1의 모든 개념이 들어 있다. 각 결정의 근거를 말로 설명할 수 있으면 이번 주를 소화한 것이다.
제약 충돌형 시나리오에서는 제약이 먼저다. PII가 워크포스를 강제하고, 극단적 불균형이 지표를 강제하고, 다소비자 요건이 KDS를 강제한다. 정답은 가장 화려한 기술이 아니라 모든 제약을 동시에 만족하는 선택이다. 하나라도 위반하면(예: PII를 공개 워크포스에) 다른 장점과 무관하게 오답이다.
⚠️ 함정: 보기 중 "가장 최신 서비스", "가장 저렴한 옵션", "가장 단순한 구성"이 눈에 띄어도 제약을 어기면 전부 오답이다. 제약 → 후보 소거 → 남은 것 중 비용·운영 부담 비교, 이 순서로 푼다.
Week 2는 Data Engineering 2로 들어간다. EMR과 Spark를 이용한 대규모 처리, 데이터 변환·정제 심화, 결측치·이상치·불균형 데이터 처리, 그리고 특성 공학 기법 전반을 다룬다. 이번 주 파이프라인에서 "Features" 단계를 확대해 들여다보는 셈이다.