새 프로젝트가 들어왔다. "고객이 이탈할지 예측해줘." ML 엔지니어가 가장 먼저 해야 할 일은 코드 작성이 아니라 이게 무슨 종류의 문제인가를 판별하는 것이다. 분류 문제인지 회귀인지, 라벨이 있는지 없는지에 따라 쓸 수 있는 알고리즘과 평가 지표가 완전히 달라지기 때문이다. 문제 유형을 잘못 짚으면 그 뒤의 모든 선택이 어긋난다.
오늘은 ML 문제를 학습 방식(지도/비지도/강화)과 출력 형태(분류/회귀/군집)로 분류하고, 분류 모델을 평가하는 핵심 지표 — 정확도·정밀도·재현율·F1·AUC — 가 각각 무엇을 측정하는지, 그리고 언제 어느 지표를 봐야 하는지를 본다. 이건 MLA-C01 도메인 2(모델 개발)의 핵심이다.
ML 알고리즘은 "무엇으로부터 배우는가"에 따라 세 갈래로 나뉜다.
| 학습 방식 | 학습 신호 | 대표 문제 | AWS 빌트인 예 |
|---|---|---|---|
| 지도 학습 (Supervised) | 정답 라벨 | 분류, 회귀 | XGBoost, Linear Learner |
| 비지도 학습 (Unsupervised) | 없음 (구조 발견) | 군집, 차원 축소, 이상탐지 | K-Means, PCA, RCF |
| 강화 학습 (Reinforcement) | 보상(reward) | 순차적 의사결정 | SageMaker RL |
판별 기준은 단순하다. 라벨이 있으면 지도, 없으면 비지도, 시행착오로 보상을 최대화하면 강화다. "고객 이탈 예측"은 과거 이탈 여부(라벨)가 있으니 지도 학습이다. "고객을 비슷한 그룹으로 묶기"는 정답 그룹이 없으니 비지도(군집)다. "게임 에이전트가 점수를 최대화"는 강화 학습이다.
💡 관련 이론: 지도 학습은 입력 X에서 출력 Y로의 함수 f(X)=Y를 근사하는 문제다. 라벨링 비용이 비싸기 때문에 실무에서는 적은 라벨로 학습하는 준지도 학습(semi-supervised)이나, 데이터 자체에서 라벨을 만들어내는 자기지도 학습(self-supervised, 대규모 언어모델의 학습 방식)이 중요해졌다. AWS SageMaker Ground Truth가 라벨링을 자동화·외주화하는 서비스인 이유가 이 라벨 비용 문제 때문이다.
지도 학습은 출력이 무엇이냐에 따라 다시 둘로 나뉜다.
비지도의 대표는 **군집(Clustering)**으로, 라벨 없이 데이터를 비슷한 것끼리 묶는다(고객 세그먼테이션 등).
# 분류: XGBoost로 이탈 예측 (출력 = 확률 → 이산 라벨)
estimator = sagemaker.estimator.Estimator(
image_uri=xgboost_image, role=role,
instance_count=1
선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
과거 이탈 여부 라벨이 있는 데이터로 고객 이탈을 예측하려 한다. 이 문제의 학습 방식과 출력 형태는?
문제 2
사기 거래가 전체의 0.1%인 데이터에서 모델이 정확도 99.9%를 기록했다. 이 정확도를 신뢰할 수 없는 이유는?
문제 3
암 진단 분류 모델에서 무엇보다 우선해야 할 평가 지표와 그 이유로 옳은 것은?
문제 4
어떤 모델이 정밀도 0.9, 재현율 0.1을 기록했다. F1 점수가 산술평균 0.5보다 훨씬 낮은 0.18로 나오는 이유는?
문제 5
ROC-AUC 값이 0.5인 분류 모델에 대한 해석으로 옳은 것은?
같은 XGBoost라도 objective 하이퍼파라미터 하나로 분류와 회귀가 갈린다. 문제 유형을 잘못 판별하면 여기서부터 어긋난다.
🔍 더 깊이: 분류라도 출력이 "확률"인지 "라벨"인지 구분해야 한다.
binary:logistic은 0~1 확률을 반환하고, 이를 라벨로 바꾸려면 **임계값(threshold)**이 필요하다. 기본 0.5지만, 이탈 고객을 놓치면 안 되는 비즈니스라면 임계값을 낮춰 더 많은 사람을 "이탈 위험"으로 분류한다. 임계값 조정이 바로 다음에 볼 정밀도-재현율 트레이드오프의 핵심이다.
분류 모델을 평가하려면 먼저 **혼동 행렬(confusion matrix)**을 이해해야 한다. 예측과 실제를 교차한 2x2 표다.
실제 양성(Positive) 실제 음성(Negative)
예측 양성 TP (참 양성) FP (거짓 양성)
예측 음성 FN (거짓 음성) TN (참 음성)
"이탈 예측" 예시로 보면, TP=이탈할 사람을 이탈로 맞춤, FP=유지할 사람을 이탈로 잘못 봄, FN=이탈할 사람을 놓침, TN=유지할 사람을 유지로 맞춤. 모든 지표는 이 네 칸의 조합이다.
정확도(Accuracy) = (TP+TN) / 전체. 가장 직관적이지만 가장 위험하다. 사기 거래가 0.1%인 데이터에서 "전부 정상"이라 찍는 모델도 정확도 99.9%다. 이걸 불균형 데이터의 정확도 함정이라 한다.
그래서 양성 클래스에 초점을 둔 두 지표가 필요하다.
둘은 트레이드오프 관계다. 임계값을 낮추면 양성을 많이 예측해 재현율↑ 정밀도↓, 높이면 반대다.
| 비즈니스 상황 | 더 중요한 지표 | 이유 |
|---|---|---|
| 암 진단 | 재현율 | 환자를 놓치면(FN) 치명적 |
| 스팸 필터 | 정밀도 | 정상 메일을 스팸 처리(FP)하면 안 됨 |
| 사기 탐지 | 재현율 우선, 정밀도 균형 | 사기를 놓치면 손실, 과탐은 고객 불편 |
📚 사례: COMPAS는 미국 법원이 쓰던 재범 예측 시스템이다. 2016년 ProPublica 보도에서 흑인 피고에 대해 "재범 위험 높음"으로 잘못 분류하는 거짓 양성(FP) 비율이 백인보다 약 2배 높다는 것이 드러났다. 전체 정확도는 인종 간 비슷했지만, FP/FN의 분포가 집단마다 달랐던 것이다. 정확도 한 숫자만 보면 놓치는 공정성 문제를 혼동 행렬 단위로 봐야 잡힌다는 교훈이다.
정밀도와 재현율을 둘 다 신경 쓰고 싶을 때 F1 점수를 쓴다. 둘의 조화평균이다.
F1 = 2 * (Precision * Recall) / (Precision + Recall)
조화평균을 쓰는 이유는 둘 중 하나라도 낮으면 F1이 크게 떨어지기 때문이다. 정밀도 0.9·재현율 0.1이면 산술평균은 0.5지만 F1은 0.18이다. "한쪽만 좋아서는 안 된다"를 강제한다.
**AUC(ROC 곡선 아래 면적)**는 임계값에 무관하게 모델의 분별력을 측정한다. ROC 곡선은 모든 임계값에서의 재현율(TPR)과 거짓 양성률(FPR)을 그린 것이고, 그 아래 면적이 AUC다.
💡 관련 이론: AUC는 "무작위로 양성 샘플 하나와 음성 샘플 하나를 뽑았을 때, 모델이 양성에 더 높은 점수를 줄 확률"로도 해석된다. 임계값을 정하기 전 모델 자체의 순위 매기기 능력을 보는 지표라, 임계값이 아직 정해지지 않은 모델 비교 단계에서 유용하다. 다만 극단적 불균형 데이터에서는 AUC가 낙관적으로 나올 수 있어 PR-AUC(정밀도-재현율 곡선)를 함께 본다.
회귀는 연속값이라 혼동 행렬이 없고 "예측이 실제와 얼마나 가까운가"를 잰다.
큰 오차를 특히 피해야 하는 문제(예: 재고 예측)라면 RMSE를, 이상치가 많아 robust해야 하면 MAE를 본다.
오늘의 두 가지 핵심. 첫째, ML 문제는 학습 방식(지도/비지도/강화)과 출력 형태(분류/회귀/군집)로 나뉘고, 문제 유형 판별이 알고리즘과 지표 선택의 출발점이다. 둘째, 분류 평가는 정확도 한 숫자에 속지 말고 혼동 행렬에서 정밀도·재현율을 보고, 비즈니스 맥락에 맞는 지표(F1, AUC)를 골라야 한다.
다음 글에서는 이 문제들을 실제로 푸는 도구 — AWS의 ML 스택 전체 — 를 조감한다.