본문 바로가기
C.W.K.
Stream
Lesson 03 of 10 · published

ML Task Family

~26 min · task-types, framing, supervised

Level 0Scout
0 XP0/48 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

문제의 이름이 평가 방법을 정해

머신러닝 프로젝트에서 첫 번째로 정할 건 알고리즘이 아니라 문제의 종류야. 무엇을 맞히려는지에 따라 목표값의 모양, 자료를 나누는 방법, 평가 지표, 비교할 기준선이 달라지거든. 이 선택을 대충 하면 뒤에서 아무리 정교하게 튜닝해도 엉뚱한 시험을 보게 돼. 문제의 종류는 분류표를 외우기 위한 이름이 아니라 실험이 정직한지 지키는 계약이야.

자주 만나는 일곱 가지

  • 회귀는 가격, 수요, 지연 시간처럼 이어지는 숫자를 예측해.
  • 이진 분류는 해지 여부나 사기 거래처럼 두 경우 중 하나를 다뤄. 결과는 보통 확률로 받아.
  • 다중 분류는 여러 범주 가운데 하나를 고르는 문제야. 손글씨 숫자나 문의 유형이 여기 들어가.
  • 다중 라벨 분류는 여러 꼬리표가 동시에 붙을 수 있어. 글의 주제 태그를 떠올리면 돼.
  • 순위화는 검색 결과나 추천 목록처럼 무엇을 먼저 보여줄지 정해.
  • 예측 시계열은 과거 흐름을 바탕으로 다음 주 수요나 용량을 내다봐.
  • 이상 탐지는 평소와 다른 드문 패턴을 찾아. 기계 고장이나 의심 거래가 대표적이지.

화면의 모양에 속지 마

최종 화면에 예와 아니오가 나온다고 무조건 이진 분류인 건 아니야. 영업팀이 하루에 서른 명에게만 전화할 수 있다면 필요한 건 모든 고객의 해지 여부보다 전화할 순서일 수 있어. 다음 주 서버 용량을 정하려면 범주가 아니라 시간에 따른 수요를 예측해야 하지. 위험도를 0에서 1 사이로 매긴 뒤 비용에 맞춰 행동할 수도 있어. 사용자가 마지막에 보는 버튼이 아니라 시스템이 실제로 내려야 하는 결정을 보고 문제를 이름 붙여야 해.

이름을 잘못 붙이면 지표가 조용히 망가져

순위 문제를 분류 정확도로 재면 상위 서른 명을 제대로 골랐는지 알 수 없어. 시계열 자료를 무작위로 섞으면 미래 정보가 과거 학습에 흘러들어가. 희귀한 이상을 찾으면서 전체 정확도를 보면 아무것도 찾지 않는 모델이 우승할 수도 있지. 이런 실패는 코드가 깨지지 않아서 더 위험해. 숫자는 멀쩡하게 나오는데 질문과 답이 어긋난 상태거든.

한 문장으로 검산해봐

누구에게서, 무엇을, 어느 시점에 예측해서, 어떤 행동에 쓸지 한 문장으로 적어봐. 그 문장에서 필요한 출력이 숫자인지, 확률인지, 순서인지, 미래의 곡선인지 드러나야 해. 팀원 셋이 서로 다른 종류를 말한다면 모델을 만들기 전에 제품 결정을 먼저 맞춰야 해.

Code

팀의 작업 목록을 과제 유형에 연결하기·python
task_map = {
    "house_price_estimate": "regression",
    "will_user_churn": "binary_classification",
    "support_ticket_topic": "multi_class_classification",
    "article_tags": "multi_label_classification",
    "search_results": "ranking",
    "weekly_demand": "forecasting",
    "machine_failure_alert": "anomaly_detection",
}
같은 자료도 과제 유형에 따라 달라지는 지표·python
# Treat as classification: did the lead convert?
from sklearn.metrics import roc_auc_score
auc = roc_auc_score(y_converted, p_convert)

# Treat as ranking: are the top-K leads the right ones?
top_k_idx = p_convert.argsort()[::-1][:50]
precision_at_50 = y_converted.iloc[top_k_idx].mean()

External links

Exercise

최근 제품 요청 다섯 개를 적어봐. 각 요청마다 문제의 종류, 성공을 재는 지표, 이겨야 할 단순한 기준선을 한 줄씩 써. 마지막 화면이 예와 아니오라고 해서 전부 분류 문제로 부르지 않았는지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.