Appearance
🎮 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ẽ:
- Phân biệt Regression vs Classification — output liên tục vs nhãn
- Chọn model phù hợp — Logistic Regression, Decision Tree, Linear Regression
- Biết khi nào KHÔNG dùng ML — SQL/Excel/rules đủ tốt
- Đánh giá metrics — accuracy vs precision vs recall tùy bài toán
- 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ần | XP |
|---|---|
| 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ạng | XP | Mô tả |
|---|---|---|
| 🥇 Gold — ML Strategist | ≥ 80 XP | Bạn chọn model như senior DA — business-first, tool-second! |
| 🥈 Silver — ML Apprentice | ≥ 55 XP | Tốt! Đôi chỗ còn nhầm — đọc lại Phần 1 & 4 Buổi 17. |
| 🥉 Bronze — ML Beginner | ≥ 30 XP | Hiểu cơ bản nhưng cần ôn lại khi nào dùng model nào. |
| 💀 Game Over | < 30 XP | Client đố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ện | Mô tả |
|---|---|---|
| 🎯 Problem Framer | Đúng Vòng 1 + Vòng 2 + Vòng 3 | Master phân biệt regression vs classification! |
| 🧠 Model Picker | Đúng Vòng 4 + Vòng 5 | Chọ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 Streak | 7 vòng liên tiếp đúng | Perfect ML judgment! |
| 🏆 Perfect Score | Đúng tất cả 7 vòng | ML Explorer legend! |
| 💡 No Hints Hero | Không dùng hint cả game | Pure 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ọn | Approach |
|---|---|
| A | Logistic Regression — classify revenue thành "Cao" hoặc "Thấp" |
| B | Linear Regression — predict revenue (số liên tục) từ multiple features |
| C | Decision Tree Classifier — phân loại tháng "tốt" vs "xấu" |
| D | K-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ọn | Approach |
|---|---|
| A | Linear Regression — predict churn probability (0 → 1) |
| B | K-Means Clustering — cluster khách hàng thành groups |
| C | Logistic Regression — classify churn (Yes/No) + probability ranking |
| D | Time 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ọn | Approach |
|---|---|
| A | Decision Tree — classify sản phẩm thành "bán chạy" vs "không bán chạy" |
| B | SQL Query + Visualization — GROUP BY product, region, ORDER BY revenue DESC |
| C | Linear Regression — predict doanh số sản phẩm |
| D | Random 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ọn | Approach |
|---|---|
| A | XGBoost — model mạnh nhất, accuracy cao nhất |
| B | Neural Network (Deep Learning) — learn complex patterns |
| C | Logistic Regression + Decision Tree — scoring + reason codes |
| D | K-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:
- Classify approve/reject → Classification model
- 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:
| Metric | Giá trị |
|---|---|
| Accuracy | 0.91 |
| Precision | 0.68 |
| Recall | 0.52 |
| F1 | 0.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ọn | Answer |
|---|---|
| A | Accuracy = 0.91 — rất tốt! Deploy ngay |
| B | Precision = 0.68 — optimize Precision để giảm false alarm |
| C | Recall = 0.52 — quá thấp, optimize Recall (bắt nhiều churners hơn) |
| D | F1 = 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:
| Rank | Feature | Importance |
|---|---|---|
| 1 | quiz_score_avg | 0.35 |
| 2 | videos_watched_pct | 0.28 |
| 3 | login_frequency | 0.15 |
| 4 | forum_posts | 0.08 |
| 5 | device_type | 0.05 |
| 6 | age | 0.04 |
| 7 | gender | 0.03 |
| 8 | city | 0.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ọn | Advice |
|---|---|
| A | Đúng! quiz_score quan trọng nhất → thêm quiz → completion tăng |
| B | Feature 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 |
| C | Bỏ quiz_score khỏi model vì nó dominate → model bị biased |
| D | Decision 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?"
| Metric | Model A | Model B |
|---|---|---|
| Accuracy | 0.95 | 0.92 |
| Precision | 0.88 | 0.72 |
| Recall | 0.60 | 0.92 |
| F1 | 0.71 | 0.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ọn | Recommendation |
|---|---|
| A | Model A — Accuracy 0.95 cao hơn → tốt hơn |
| B | Model B — Recall 0.92 → bắt nhiều spam hơn = tốt hơn |
| C | Model A — Precision 0.88 → ít false alarm hơn = ít mất email legit |
| D | Khô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ạng | XP | Mô tả |
|---|---|---|
| 🥇 Gold — ML Strategist | ≥ 80 XP | Bạn chọn model như senior DA — business context quyết định! |
| 🥈 Silver — ML Apprentice | ≥ 55 XP | Tốt! Ôn lại regression vs classification + khi nào không cần ML. |
| 🥉 Bronze — ML Beginner | ≥ 30 XP | Hiểu cơ bản nhưng dễ nhầm — đọc lại toàn bộ Buổi 17. |
| 💀 Game Over | < 30 XP | Xây model sai cho client — quay lại từ đầu Buổi 17! |
📝 Tổng kết kiến thức
| Vòng | Category | Đáp án | Bài học |
|---|---|---|---|
| 1 | Type Selection | Linear Regression (continuous output) | Output số → Regression. Output nhãn → Classification |
| 2 | Type Selection | Logistic Regression (binary + probability) | Churn = binary. Cần rank → predict_proba() |
| 3 | No ML Needed | SQL + Visualization | Descriptive (quá khứ) → SQL. Predictive (tương lai) → ML |
| 4 | Model Selection | LR + DT (interpretable, regulatory) | Regulated industry → interpretability > accuracy |
| 5 | Metric Selection | Recall (FN costly) | FN costly → Recall. FP costly → Precision |
| 6 | Interpretation | Feature importance ≠ causation | Correlation ≠ Causation. Muốn biết causal → A/B test |
| 7 | Metric Selection | Precision (FP costly) | Spam filter: mất email legit (FP) > spam lọt inbox (FN) |
💡 Quy tắc vàng ML cho DA
- Problem-first: Bài toán quyết định model — không phải model quyết định bài toán
- No ML sometimes: SQL/Excel giải 90% bài toán. ML cho 10% cần prediction at scale
- Metric matters: Accuracy ≠ tốt nhất. Precision vs Recall tùy business cost (FP vs FN)
- Interpretability: Trong regulated industries → model giải thích được > model chính xác
- Correlation ≠ Causation: Feature importance = predictive power ≠ causal power