Skip to content

🎮 ML Explorer — Chọn Đúng Model cho Business Problem!

Bạn vừa được thuê làm ML Advisor tại DataLens Consulting 🔍 — công ty tư vấn analytics cho startups và enterprises tại Việt Nam. Mỗi tuần, clients gửi đến business problems: "Em nên dùng ML model gì? Hay không cần ML?" 7 bài toán, mỗi bài: chọn approach phù hợp nhất. Chọn đúng = XP. Chọn sai = client đốt tiền xây model không cần thiết, hoặc bỏ lỡ cơ hội dùng ML! 🚨


🎯 Mục tiêu học tập

Sau khi hoàn thành game, bạn sẽ:

  1. Phân biệt Regression vs Classification — output liên tục vs nhãn
  2. Chọn model phù hợp — Logistic Regression, Decision Tree, Linear Regression
  3. Biết khi nào KHÔNG dùng ML — SQL/Excel/rules đủ tốt
  4. Đánh giá metrics — accuracy vs precision vs recall tùy bài toán
  5. Tư duy business-first — bài toán quyết định tool, không phải ngược lại

📜 Luật chơi

┌──────────────────────────────────────────────────────┐
│  BẠN = ML Advisor 🔍                                 │
│  CLIENTS = 7 companies cần tư vấn ML approach         │
│  MỖI VÒNG = 1 business problem → 4 lựa chọn          │
│  CHỌN approach phù hợp nhất = XP                      │
│  MỤC TIÊU = Thu thập ≥ 80 XP để đạt hạng Gold 🥇     │
└──────────────────────────────────────────────────────┘

Cách tính điểm mỗi vòng:

Thành phầnXP
Trả lời đúng+12 XP (Vòng 1–3), +14 XP (Vòng 4–5), +16 XP (Vòng 6–7)
Trả lời sai+0 XP
Không dùng hint+2 XP bonus ⚡
Giải thích đúng lý do+3 XP bonus 🧠

Tổng XP tối đa: 12+12+12+14+14+16+16 = 96 XP (chưa tính bonus)

Nguyên tắc quan trọng:

  • 🤖 Bài toán quyết định model — không phải "model fancy nhất = tốt nhất"
  • 📊 Đôi khi SQL/Excel tốt hơn ML — biết khi nào KHÔNG dùng ML = skill quan trọng
  • 🎯 Metric phù hợp tùy bài toán — churn cần Recall, spam cần Precision

🏆 Bảng xếp hạng & Huy hiệu

Ranks

HạngXPMô tả
🥇 Gold — ML Strategist≥ 80 XPBạn chọn model như senior DA — business-first, tool-second!
🥈 Silver — ML Apprentice≥ 55 XPTốt! Đôi chỗ còn nhầm — đọc lại Phần 1 & 4 Buổi 17.
🥉 Bronze — ML Beginner≥ 30 XPHiểu cơ bản nhưng cần ôn lại khi nào dùng model nào.
💀 Game Over< 30 XPClient đốt tiền xây model sai — quay lại đọc toàn bộ Buổi 17!

Huy hiệu đặc biệt

BadgeĐiều kiệnMô tả
🎯 Problem FramerĐúng Vòng 1 + Vòng 2 + Vòng 3Master phân biệt regression vs classification!
🧠 Model PickerĐúng Vòng 4 + Vòng 5Chọn đúng model cho đúng bài toán!
🛡️ Anti-OverkillĐúng vòng "không cần ML" (Vòng 3, 7)Biết khi nào KHÔNG dùng ML — rare skill!
🔥 Full Streak7 vòng liên tiếp đúngPerfect ML judgment!
🏆 Perfect ScoreĐúng tất cả 7 vòngML Explorer legend!
💡 No Hints HeroKhông dùng hint cả gamePure ML intuition!

🎲 Chỉ số theo dõi

┌─────────────────────────────┐
│  🔍 SCOREBOARD              │
│  ─────────────────────────  │
│  XP hiện tại:    ___/96     │
│  Vòng hiện tại:  ___/7      │
│  Streak:         ___        │
│  Hints used:     ___        │
│  Regression W/L: ___        │
│  Classification W/L: ___    │
│  "No ML" correct: ___       │
│  Hạng dự kiến:   ___        │
└─────────────────────────────┘

🎮 BẮT ĐẦU GAME!


🔵 VÒNG 1: "Dự đoán doanh thu tháng tới" (+12 XP)

Client: ShopNow — e-commerce startup, 500,000 MAU

Tình huống:

Finance Director gửi yêu cầu: "Chúng tôi cần dự đoán revenue tháng tới để lên budget plan. Có 24 tháng historical data với các features: marketing spend, số lượng active users, AOV, seasonal index, promotion count. Revenue là số liên tục (VND). Cần predict cho 3 tháng tới."

Bạn chọn approach nào?

Lựa chọnApproach
ALogistic Regression — classify revenue thành "Cao" hoặc "Thấp"
BLinear Regression — predict revenue (số liên tục) từ multiple features
CDecision Tree Classifier — phân loại tháng "tốt" vs "xấu"
DK-Means Clustering — group các tháng tương tự nhau
💡 Hint (-2 XP)

Revenue là số liên tục (VND) → đây là bài toán gì: regression hay classification?

✅ Đáp án: B — Linear Regression

Tại sao B đúng?

Revenue là continuous variable (số liên tục — 1.2 tỷ, 1.5 tỷ, 2.0 tỷ) → đây là Regression problem, KHÔNG phải Classification.

  • A sai: Logistic Regression là classification model (output: probability of class). Chuyển revenue thành "Cao/Thấp" mất rất nhiều information.
  • C sai: Decision Tree Classifier cũng là classification. "Tốt vs Xấu" mất granularity — Finance cần CON SỐ cụ thể, không phải label.
  • D sai: K-Means là unsupervised — group tháng tương tự nhưng KHÔNG predict giá trị revenue.
  • B đúng: Linear Regression predict giá trị cụ thể (VND) từ multiple features. Output: "Revenue tháng tới = 1.82 tỷ ± 150 triệu."

Rule: Output là số → Regression. Output là nhãn/category → Classification.


🔵 VÒNG 2: "Khách nào sắp churn?" (+12 XP)

Client: StreamMax — OTT streaming platform, 2 triệu subscribers

Tình huống:

Product Manager: "Churn rate đang 6.5%/tháng — quá cao. Chúng tôi muốn biết TOP 1,000 khách có khả năng churn cao nhất tháng tới để retention team gọi điện. Có data 18 tháng: tenure, watch hours, login frequency, device count, monthly payment, subscription type. Target: churn (Yes/No)."

Bạn chọn approach nào?

Lựa chọnApproach
ALinear Regression — predict churn probability (0 → 1)
BK-Means Clustering — cluster khách hàng thành groups
CLogistic Regression — classify churn (Yes/No) + probability ranking
DTime Series ARIMA — forecast churn rate tháng tới
💡 Hint (-2 XP)

Target là binary (churn: Yes/No). Bạn cần rank khách theo probability churn → model nào output probability?

✅ Đáp án: C — Logistic Regression

Tại sao C đúng?

Target là binary (churn: 0/1 — Yes/No) → Classification problem. Logistic Regression output probability (0.0 → 1.0) → rank khách từ cao → thấp → lấy top 1,000.

  • A sai: Linear Regression predict SỐ LIÊN TỤC — output có thể < 0 hoặc > 1 → vô nghĩa cho probability.
  • B sai: K-Means cluster khách thành groups nhưng KHÔNG predict ai sẽ churn. Unsupervised = không có label.
  • D sai: ARIMA forecast "churn rate TỔNG THỂ tháng tới = 7.1%" — nhưng KHÔNG nói KHÁCH NÀO churn. Product đang cần individual predictions.
  • C đúng: Logistic Regression classify (churn/not churn) VÀ output probability → predict_proba() → sort descending → top 1,000.

Bonus insight: Decision Tree cũng có thể dùng — nhưng Logistic Regression là baseline tốt nhất cho binary classification khi cần probability ranking.


🔵 VÒNG 3: "Top sản phẩm bán chạy tháng rồi?" (+12 XP)

Client: FreshMart — chuỗi siêu thị mini, 80 cửa hàng

Tình huống:

Marketing Manager: "Em cần biết top 20 sản phẩm bán chạy nhất tháng rồi, breakdown theo khu vực (Bắc/Trung/Nam) và so sánh với tháng trước. Data có trong database: transaction table 500,000 rows, product table, store table."

Bạn chọn approach nào?

Lựa chọnApproach
ADecision Tree — classify sản phẩm thành "bán chạy" vs "không bán chạy"
BSQL Query + Visualization — GROUP BY product, region, ORDER BY revenue DESC
CLinear Regression — predict doanh số sản phẩm
DRandom Forest — ensemble model để rank sản phẩm
💡 Hint (-2 XP)

Câu hỏi là "top 20 tháng RỒI" — đây là câu hỏi descriptive (quá khứ) hay predictive (tương lai)?

✅ Đáp án: B — SQL Query + Visualization

Tại sao B đúng?

Đây là descriptive analytics — hỏi về QUÁ KHỨ ("tháng rồi bán gì nhiều nhất?"). KHÔNG CẦN ML!

sql
SELECT p.product_name, s.region,
       SUM(t.quantity) AS total_qty,
       SUM(t.revenue) AS total_revenue
FROM transactions t
JOIN products p ON t.product_id = p.id
JOIN stores s ON t.store_id = s.id
WHERE t.month = '2025-12'
GROUP BY p.product_name, s.region
ORDER BY total_revenue DESC
LIMIT 20;
  • A sai: Decision Tree classify — nhưng không cần classify, chỉ cần SORT + COUNT.
  • C sai: Linear Regression predict tương lai — nhưng câu hỏi về quá khứ, data đã có.
  • D sai: Random Forest = overkill hoàn toàn. Dùng cannon bắn ruồi.
  • B đúng: SQL + chart giải quyết trong 5 phút. ML mấy ngày. SQL wins.

Bài học: 🚨 Không phải bài toán nào cũng cần ML! Descriptive analytics (quá khứ) → SQL. Predictive analytics (tương lai) → có thể ML.


🟡 VÒNG 4: "Approve hay reject khoản vay?" (+14 XP)

Client: QuickLoan — fintech cho vay tiêu dùng, 30,000 hồ sơ/tháng

Tình huống:

Risk Manager: "Chúng tôi nhận 30,000 loan applications/tháng. Cần classify: approve hay reject. Hiện tại credit officers manual review 15 phút/hồ sơ. Muốn auto-decision 70% hồ sơ, manual review 30% borderline. Features: income, age, employment tenure, existing debt, CIC score. Target: default (Yes/No). Ngân hàng Nhà nước yêu cầu giải thích TẠI SAO reject."

Bạn chọn approach nào?

Lựa chọnApproach
AXGBoost — model mạnh nhất, accuracy cao nhất
BNeural Network (Deep Learning) — learn complex patterns
CLogistic Regression + Decision Tree — scoring + reason codes
DK-Nearest Neighbors (KNN) — classify dựa trên similar applicants
💡 Hint (-2 XP)

Regulatory yêu cầu "giải thích TẠI SAO reject" — model nào interpretable nhất?

✅ Đáp án: C — Logistic Regression + Decision Tree

Tại sao C đúng?

2 requirements quan trọng:

  1. Classify approve/reject → Classification model
  2. Giải thích tại sao → Model phải interpretable
  • A sai (partially): XGBoost accuracy cao — nhưng black-box. NHNN hỏi "tại sao reject?" → "ensemble of 100 trees with average gini importance..." → NHNN reject.
  • B sai: Neural Network = black-box nhất. No explainability cho regulatory compliance.
  • D sai: KNN nói "applicant này giống 5 applicants đã default" — nhưng không nói cụ thể tại sao (feature nào?). Interpretability yếu.
  • C đúng: Logistic Regression = probability score (0-1000) + coefficients = impact mỗi feature. Decision Tree = IF-THEN rules = reason codes ("Reject vì: income < 8M AND DTI > 50%"). Combo: LR scoring + DT explanation = regulatory compliant.

Bài học: Trong regulated industries (finance, healthcare) → interpretability > accuracy. 95% accuracy nhưng không giải thích được = vô dụng.


🟡 VÒNG 5: "Chọn metric nào cho churn model?" (+14 XP)

Client: TelcoVN — nhà mạng viễn thông, 5 triệu khách hàng

Tình huống:

DA team đã train churn prediction model. Results:

MetricGiá trị
Accuracy0.91
Precision0.68
Recall0.52
F10.59

Dataset: 95% stay, 5% churn (imbalanced). Retention team nói: "Mỗi khách churn = mất 3.5 triệu LTV. Thà gọi nhầm 100 khách ở lại (FP) còn hơn bỏ sót 10 khách sắp churn (FN)."

Retention team hỏi: "Model này OK chưa? Nên optimize metric nào?"

Lựa chọnAnswer
AAccuracy = 0.91 — rất tốt! Deploy ngay
BPrecision = 0.68 — optimize Precision để giảm false alarm
CRecall = 0.52 — quá thấp, optimize Recall (bắt nhiều churners hơn)
DF1 = 0.59 — optimize F1 để balance Precision và Recall
💡 Hint (-2 XP)

FN (bỏ sót khách churn) đắt hơn FP (gọi nhầm khách stay). Metric nào focus vào giảm FN?

✅ Đáp án: C — Recall = 0.52 quá thấp, optimize Recall

Tại sao C đúng?

  • A sai: Accuracy = 0.91 nghe cao? NHƯNG dataset 95% stay, 5% churn. Model predict TẤT CẢ là "stay" → accuracy = 95%! Accuracy KHÔNG tin được với imbalanced data. Recall = 0.52 nghĩa là bỏ sót 48% khách sẽ churn → thảm họa.
  • B sai: Precision = 0.68 okay — nhưng retention team nói "thà gọi nhầm 100 (FP) còn hơn bỏ sót 10 (FN)" → FN costly hơn FP → Recall quan trọng hơn Precision.
  • D sai: F1 balance cả hai — nhưng business explicitly nói FN > FP cost → optimize Recall, chấp nhận Precision giảm chút.
  • C đúng: Recall = 0.52 = chỉ bắt 52% khách churn. Mất 48% × 5% × 5M × 3.5M = 420 tỷ/năm potential LTV. Optimize Recall lên ≥ 0.75 bằng: lower threshold (0.5 → 0.3), class_weight='balanced', SMOTE oversampling.

Rule: Khi FN costly → optimize Recall. Khi FP costly → optimize Precision. Khi balanced → F1.


🔴 VÒNG 6: "Feature nào quan trọng nhất?" (+16 XP)

Client: EduOnline — edtech platform, 100,000 students

Tình huống:

Product team build course completion prediction model (Decision Tree, max_depth=5). Feature importance:

RankFeatureImportance
1quiz_score_avg0.35
2videos_watched_pct0.28
3login_frequency0.15
4forum_posts0.08
5device_type0.05
6age0.04
7gender0.03
8city0.02

Product Manager hỏi: "Feature importance nói quiz_score là quan trọng nhất. Vậy chúng ta nên THÊM quiz cho mỗi lesson để tăng completion rate?"

Bạn advise gì?

Lựa chọnAdvice
AĐúng! quiz_score quan trọng nhất → thêm quiz → completion tăng
BFeature importance ≠ causation. quiz_score HIGH correlation với completion VÌ students engaged → làm quiz AND complete course. Thêm quiz không nhất thiết tăng completion
CBỏ quiz_score khỏi model vì nó dominate → model bị biased
DDecision Tree không reliable — chuyển sang Neural Network
💡 Hint (-2 XP)

Correlation ≠ Causation. Students có quiz_score cao → complete course. Nhưng quiz_score cao VÌ student engaged (root cause) hay quiz CAUSE completion?

✅ Đáp án: B — Feature importance ≠ Causation

Tại sao B đúng?

Feature importance cho biết quiz_score giúp model PREDICT completion tốt — KHÔNG có nghĩa "quiz CAUSE completion."

Causal chain thực tế:

Student motivation (root cause)
  ├── → Watches videos (engagement signal)
  ├── → Does quizzes (engagement signal)  ← quiz_score HIGH
  └── → Completes course (outcome)

Quiz score và completion CÙng là RESULT của motivation — không phải cause-effect. Thêm quiz → student không motivated vẫn không làm quiz → completion không tăng. Thậm chí thêm quiz có thể TẠO FRICTION → completion GIẢM!

  • A sai: Confuse correlation với causation. Nguy hiểm nhất!
  • C sai: Không cần bỏ — quiz_score vẫn useful cho prediction. Chỉ đừng dùng nó để decide action.
  • D sai: Bài toán không phải model choice — bài toán là interpretation.

Bài học: Feature importance = predictive power, KHÔNG phải causal power. Muốn biết thêm quiz có tăng completion không → A/B test (Buổi 15)!


🔴 VÒNG 7: "Phát hiện email nào là spam?" (+16 XP)

Client: MailGuard — email security startup

Tình huống:

Engineering team đang build spam filter. Data: 100,000 emails (90% legit, 10% spam). Manager hỏi: "Chúng tôi có 2 model candidates. Model nào tốt hơn?"

MetricModel AModel B
Accuracy0.950.92
Precision0.880.72
Recall0.600.92
F10.710.81

Context quan trọng: "Nếu email legit bị classify là spam (FP) → người dùng mất email quan trọng (hợp đồng, invoice). Nếu spam lọt vào inbox (FN) → annoying nhưng user có thể manually delete."

Bạn chọn model nào và tại sao?

Lựa chọnRecommendation
AModel A — Accuracy 0.95 cao hơn → tốt hơn
BModel B — Recall 0.92 → bắt nhiều spam hơn = tốt hơn
CModel A — Precision 0.88 → ít false alarm hơn = ít mất email legit
DKhông cần ML — rule-based filter đủ (check blacklist, keywords)
💡 Hint (-2 XP)

FP = email legit bị đánh spam = MẤT email quan trọng. FN = spam lọt inbox = annoying. FP costly hơn FN → optimize metric nào?

✅ Đáp án: C — Model A, Precision 0.88

Tại sao C đúng?

Business context: FP (email legit → spam) = mất hợp đồng, invoice, email quan trọng = RẤT đắt. FN (spam → inbox) = annoying nhưng user delete = ít đắt hơn.

FP costly hơn FN → Precision quan trọng hơn Recall.

  • A sai logic: Accuracy 0.95 cao — nhưng lý do chọn vì accuracy chung thì sai. Cần specific reason.
  • B sai: Model B recall 0.92 = bắt 92% spam, tốt. NHƯNG Precision 0.72 = 28% email bị mark spam THỰC RA LÀ LEGIT. Với 90,000 legit emails → 90,000 × (1−0.72) × predicted spam count = HÀNG NGHÌN email legit bị mất!
  • C đúng: Model A Precision 0.88 = chỉ 12% emails bị mark spam thực ra là legit. Safer cho users. Trade-off: Recall 0.60 = 40% spam lọt inbox — annoying nhưng user survive.
  • D sai: 100,000 emails, 10% spam → ML tốt hơn rule-based vì spam patterns liên tục thay đổi.

Rule: FP costly → Precision. FN costly → Recall. Spam filter = Precision (protect legit emails).

Nhưng cũng lưu ý: Recall 0.60 quá thấp có thể cần cải thiện. Ideal: Precision > 0.85 AND Recall > 0.75. Có thể tune threshold hoặc try ensemble.


🏁 KẾT QUẢ

Tính tổng XP

Vòng 1 (Revenue — Regression):          ___/12 XP    (+ bonus hint ___/2 + lý do ___/3)
Vòng 2 (Churn — Classification):        ___/12 XP    (+ bonus hint ___/2 + lý do ___/3)
Vòng 3 (Top Products — No ML!):         ___/12 XP    (+ bonus hint ___/2 + lý do ___/3)
Vòng 4 (Credit — Interpretable ML):     ___/14 XP    (+ bonus hint ___/2 + lý do ___/3)
Vòng 5 (Metric — Recall vs Precision):  ___/14 XP    (+ bonus hint ___/2 + lý do ___/3)
Vòng 6 (Feature Importance — Causal):   ___/16 XP    (+ bonus hint ___/2 + lý do ___/3)
Vòng 7 (Spam — Precision Focus):        ___/16 XP    (+ bonus hint ___/2 + lý do ___/3)
────────────────────────────────────────
TỔNG:   ___/96 XP    (max 131 XP with all bonuses)

Bảng xếp hạng cuối cùng

HạngXPMô tả
🥇 Gold — ML Strategist≥ 80 XPBạn chọn model như senior DA — business context quyết định!
🥈 Silver — ML Apprentice≥ 55 XPTốt! Ôn lại regression vs classification + khi nào không cần ML.
🥉 Bronze — ML Beginner≥ 30 XPHiểu cơ bản nhưng dễ nhầm — đọc lại toàn bộ Buổi 17.
💀 Game Over< 30 XPXây model sai cho client — quay lại từ đầu Buổi 17!

📝 Tổng kết kiến thức

VòngCategoryĐáp ánBài học
1Type SelectionLinear Regression (continuous output)Output số → Regression. Output nhãn → Classification
2Type SelectionLogistic Regression (binary + probability)Churn = binary. Cần rank → predict_proba()
3No ML NeededSQL + VisualizationDescriptive (quá khứ) → SQL. Predictive (tương lai) → ML
4Model SelectionLR + DT (interpretable, regulatory)Regulated industry → interpretability > accuracy
5Metric SelectionRecall (FN costly)FN costly → Recall. FP costly → Precision
6InterpretationFeature importance ≠ causationCorrelation ≠ Causation. Muốn biết causal → A/B test
7Metric SelectionPrecision (FP costly)Spam filter: mất email legit (FP) > spam lọt inbox (FN)

💡 Quy tắc vàng ML cho DA

  1. Problem-first: Bài toán quyết định model — không phải model quyết định bài toán
  2. No ML sometimes: SQL/Excel giải 90% bài toán. ML cho 10% cần prediction at scale
  3. Metric matters: Accuracy ≠ tốt nhất. Precision vs Recall tùy business cost (FP vs FN)
  4. Interpretability: Trong regulated industries → model giải thích được > model chính xác
  5. Correlation ≠ Causation: Feature importance = predictive power ≠ causal power