C.W.K.
Stream
Lesson 03 of 10 · published

ML Task Families

~26 min · task-types, framing, supervised

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

Naming the task picks the math

The first decision in any ML project is naming the task family. The family fixes the target shape, the metric, the legal split strategy, and the baseline. It is not taxonomy trivia. It is the contract that decides whether your evaluation is honest.

The seven families you will see most

  • Regression predicts a number on a continuous scale (price, demand, latency).
  • Binary classification picks one of two labels, usually with a probability (churn, fraud, click).
  • Multi-class classification picks one of K labels (digit, intent, category).
  • Multi-label classification assigns any subset of K labels (tags on an article).
  • Ranking orders items for a user (search results, recommendations).
  • Forecasting predicts future values from past values (sales, capacity).
  • Anomaly detection flags rare or unusual patterns (fraud, machine failure).

The trap of the wrong family

Calling everything classification because the final UI shows yes or no is the most common framing mistake. Often the real problem is ranking (top-10 leads to call), forecasting (capacity next week), or scoring (risk between 0 and 1). The wrong family quietly poisons the metric.

Code

A task-family map for one team's backlog·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",
}
Same data, two families, two metrics·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

List five recent product asks at your team. For each, name the task family in one word, name the metric in one phrase, and name the baseline you would have to beat. Notice how often the task is not really classification.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.