Series Thuộc Khóa Học Data Analyst BootCamp. Đăng Ký Khóa Học Inbox mình Tại Đây
Bạn Là Data Analyst Tại …
01 thương hiệu Coffee tại Việt Nam tương tự Starbucks
Mindset Gì …
| Khoa Học Não Bộ | Mô Tả | Gamification |
|---|---|---|
| Dopamine & Novelty (Tính mới lạ): Nơ-ron dopamine (dopaminergic neurons) bắn tín hiệu mạnh nhất khi phần thưởng bất ngờ hoặc chưa từng gặp. Khi khách thử một nhóm sản phẩm mới, não ghi nhận đây là “phần thưởng chưa dự đoán” → dopamine tăng → tạo cảm giác hứng thú. | Khách mới hoặc khách đang khám phá thường mua từ 3–4 nhóm sản phẩm khác nhau (cà phê, trà, bánh, đồ lạnh) trong cùng một tháng. Mỗi nhóm mới = một “phần thưởng mới” cho não. | Bonus Star Challenges: tặng thêm 10–25 sao khi khách mua từ ≥ 2 nhóm sản phẩm trong 7 ngày. Cơ chế này tạo ra tính mới có chủ đích, buộc khách rời khỏi vùng quen thuộc. |
| Habituation: Khi cùng một kích thích lặp lại nhiều lần, não học được rằng phần thưởng này chắc chắn xảy ra → dopamine giảm dần về mức nền. Khách không còn cảm giác được thưởng dù vẫn mua hàng. | Khách thu hẹp từ 3 nhóm → 2 nhóm → 1 nhóm duy nhất (ví dụ: chỉ còn cà phê). Hành vi mua trở thành thói quen tự động, không còn yếu tố khám phá. | Personalized Offers: gợi ý sản phẩm khách chưa từng mua dựa trên lịch sử giao dịch. Mục tiêu: tái tạo lại tính mới lạ bằng cách đưa ra kích thích mà não chưa dự đoán được. |
| Reward Prediction Error (RPE — sai số dự đoán phần thưởng) = 0: Khi phần thưởng hoàn toàn dự đoán được (RPE = 0), nơ-ron dopamine không bắn tín hiệu. Não không ghi nhận thêm giá trị → động lực quay lại giảm. | Khoảng cách giữa các lần mua tăng dần (ví dụ: ~10 ngày → ~12 ngày → ~14 ngày/đơn qua 3 tháng). Khách vẫn quay lại nhưng ngày càng ít thường xuyên hơn — dấu hiệu động lực nội tại đang suy giảm. | Free Mod Mondays (03/2026): mỗi tháng 1 ngày, khách được miễn phí thay đổi đồ uống — đổi sữa, thêm syrup, đổi kích cỡ. Tạo biến thể mới từ sản phẩm quen → RPE > 0 trở lại. |
| Kết hợp nhiều yếu tố → Churn | Khách từ “Gold tier mua 14 đơn/quý” chuyển sang “chỉ 8 đơn/quý, toàn 1 nhóm sản phẩm”. Nếu không can thiệp → mất khách vào quý tiếp theo. | Kết hợp cả 3 cơ chế trên thành vòng lặp: Challenge tạo novelty (hàng tuần) → Offer duy trì novelty (liên tục, cá nhân hóa) → Mod Monday tái tạo RPE (1 lần/tháng) → giữ khách ở trạng thái khám phá thay vì thói quen. |
THÁNG 4
─────────────────────────────────
Lần 1: Cà phê sữa đá ×2 + Trà đào cam sả
Lần 2: Bạc xỉu + Croissant bơ Pháp
Lần 3: Cà phê sữa đá + Trà sen vàng
→ Mua từ 3 nhóm: Cà phê, Trà, Bánh ngọt → Cách nhau ~10 ngày/lần
THÁNG 5
─────────────────────────────────
Lần 4: Cà phê sữa đá ×2
Lần 5: Bạc xỉu + Trà đào cam sả
Lần 6: Cà phê sữa đá
→ Chỉ còn 2 nhóm: Cà phê, Trà → Cách nhau ~12 ngày/lần
THÁNG 6
─────────────────────────────────
Lần 7: Cà phê sữa đá ×2
Lần 8: Bạc xỉu
→ Chỉ còn 1 nhóm: Cà phê → Cách nhau ~14 ngày/lần
DẤU HIỆU NHẬN BIẾT:
─────────────────────────────────
• Đa dạng: 3 nhóm → 2 nhóm → 1 nhóm (giảm liên tục)
• Tần suất: ~10 ngày/đơn → ~12 → ~14 ngày/đơn (giãn cách tăng qua 3 tháng)
• So với nửa đầu năm: 6.5 ngày/đơn → 11.3 ngày/đơn (+72%)
• Kết luận: Nguy cơ rời bỏ CAO — cần can thiệp bằng ưu đãi cá nhân hóa
Nhiệm Vụ Của Bạn Là …
Phân tích nhằm phát hiện khách hàng có độ đa dạng danh mục sản phẩm giảm liên tục qua tháng 4 → 5 → 6 kèm theo tần suất mua hàng giảm so với 3 tháng đầu năm.
Bạn Tính Như Thế Nào …
Bước 1 — Shannon Entropy theo tháng (đo độ đa dạng danh mục)
Tại sao dùng Entropy thay vì COUNT(DISTINCT category_id)?
COUNT(DISTINCT) chỉ đếm số nhóm có xuất hiện, không đo mức độ tập trung bên trong. Hai khách hàng cùng mua 3 nhóm nhưng hành vi hoàn toàn khác:
Khách A: Cà phê ×10, Trà ×1, Bánh ×1 → COUNT(DISTINCT) = 3, H ≈ 0.64 (tập trung nặng vào 1 nhóm)
Khách B: Cà phê ×4, Trà ×4, Bánh ×4 → COUNT(DISTINCT) = 3, H ≈ 1.10 (mua đều cả 3 nhóm)
→ COUNT(DISTINCT) trả về 3 cho cả hai — không phân biệt được. Entropy phân biệt rõ: A thấp (sắp quen hóa), B cao (đang khám phá) → entropy phát hiện sự thu hẹp dần trước khi nhóm biến mất hoàn toàn:
Tháng 4: Cà phê ×5, Trà ×5 → COUNT(DISTINCT) = 2, H = 0.693
Tháng 5: Cà phê ×9, Trà ×1 → COUNT(DISTINCT) = 2, H = 0.325 ← giảm mạnh!
Tháng 6: Cà phê ×10 → COUNT(DISTINCT) = 1, H = 0.000
→ COUNT(DISTINCT) tháng 4→5 vẫn = 2 (không phát hiện). Entropy giảm từ 0.693 → 0.325 (phát hiện sớm 1 tháng). Với bài toán CRM, phát hiện sớm 1 tháng = thêm 1 tháng để can thiệp trước khi khách rời bỏ.
- → chỉ mua 1 category (không đa dạng).
- càng cao → mua càng đều trên nhiều category.
INPUT: order_items của C1 trong tháng 4
─────────────────────────────────────────────────────────────────
Category │ SUM(quantity) │ p_i │ -p_i × ln(p_i)
────────────────┼───────────────┼─────────┼────────────────
Cà phê │ 4 │ 4/7 │ 0.3198
Trà │ 2 │ 2/7 │ 0.3579
Bánh ngọt │ 1 │ 1/7 │ 0.2780
────────────────┼───────────────┼─────────┼────────────────
Tổng │ 7 │ 1.0 │ H = 0.9557
THÁNG 5: chỉ còn Cà phê (4) + Trà (1) → H = 0.5004
THÁNG 6: chỉ còn Cà phê (3) → H = 0.0000
Bước 2 — Lọc xu hướng giảm liên tục (tháng 4 > 5 > 6)
INPUT (từ Bước 1): OUTPUT (sau pivot):
───────────────────────────── ─────────────────────────────────────
customer_id │ month │ entropy customer_id │ entropy_m4 │ entropy_m5 │ entropy_m6
1 │ 4 │ 0.9557 1 │ 0.9557 │ 0.5004 │ 0.0000
1 │ 5 │ 0.5004 2 │ 0.9557 │ 0.5004 │ 0.0000
1 │ 6 │ 0.0000 5 │ 1.3863 │ 1.3863 │ 1.3661 ← bị loại
2 │ ... │ ...
5 │ ... │ ...
Giữ lại: entropy_m4 > entropy_m5 > entropy_m6 (giảm nghiêm ngặt)
Loại bỏ: entropy_m4 ≤ entropy_m5 HOẶC entropy_m5 ≤ entropy_m6
Bước 3 — Tính thay đổi tần suất mua hàng
INPUT: orders của C1 (sắp xếp theo thời gian)
─────────────────────────────────────────────────────────────────
order_datetime │ LAG() │ DATEDIFF(DAY) │ Nửa
──────────────────┼────────────────┼───────────────┼──────────
2025-01-03 08:15 │ NULL │ — │ 1 (T1–3)
2025-01-09 09:30 │ 2025-01-03 │ 6 │ 1
2025-01-15 07:45 │ 2025-01-09 │ 6 │ 1
... │ ... │ ... │ 1
2025-03-29 08:45 │ 2025-03-22 │ 7 │ 1
──────────────────┼────────────────┼───────────────┼──────────
2025-04-06 09:00 │ 2025-03-29 │ 8 │ 2 (T4–6)
2025-04-16 08:30 │ 2025-04-06 │ 10 │ 2
... │ ... │ ... │ 2
2025-06-27 08:15 │ 2025-06-13 │ 14 │ 2
avg_interval_first_half = AVG(days) WHERE tháng ∈ {1,2,3} = 6.5 ngày
avg_interval_second_half = AVG(days) WHERE tháng ∈ {4,5,6} = 11.3 ngày
frequency_change_pct = (11.3 − 6.5) / 6.5 × 100 = +72.1%
─────────────────────────────────────
Giá trị DƯƠNG → khoảng cách tăng → tần suất GIẢM
Bước 4 — Phân loại
INPUT: kết quả Bước 2 (entropy giảm) + Bước 3 (frequency_change_pct)
─────────────────────────────────────────────────────────────────
│ frequency_change_pct │ risk_level
────────────────────┼──────────────────────┼────────────
> 20% │ C1: +72.1% │ HIGH
> 0% và ≤ 20% │ C3: +14.3% │ MEDIUM
≤ 0% │ C4: −22.4% │ LOW
Output Mong Muốn
| cust_id | cust_name | tier | H_m4 | H_m5 | H_m6 | decline | int_1h | int_2h | freq% | risk |
|---|---|---|---|---|---|---|---|---|---|---|
| 3 | Lê Hoàng Cường | Silver | 0.9950 | 0.5004 | 0.0000 | 0.9950 | 7.0 | 8.0 | +14.3 | MEDIUM |
| 4 | Phạm Minh Đức | Silver | 0.9950 | 0.5004 | 0.0000 | 0.9950 | 9.2 | 7.2 | −22.4 | LOW |
| 1 | Nguyễn Văn An | Gold | 0.9557 | 0.5004 | 0.0000 | 0.9557 | 6.5 | 11.3 | +72.1 | HIGH |
| 2 | Trần Thị Bình | Gold | 0.9557 | 0.5004 | 0.0000 | 0.9557 | 6.6 | 11.1 | +68.2 | HIGH |
| 7 | Bùi Thị Lan | Gold | 0.9557 | 0.5004 | 0.0000 | 0.9557 | 6.8 | 11.1 | +64.3 | HIGH |
| Cột | Ý Nghĩa | Giải Thích |
|---|---|---|
cust_id | Mã khách hàng | |
cust_name | Họ tên khách hàng | |
tier | Hạng thành viên (Bronze / Silver / Gold) | Gold = khách giá trị cao → ưu tiên can thiệp trước |
H_m4 | Shannon Entropy tháng 4 (đo độ đa dạng danh mục) | Càng cao = mua càng nhiều nhóm khác nhau. Ví dụ 0.9557 ≈ mua đều 3 nhóm |
H_m5 | Shannon Entropy tháng 5 | So sánh với H_m4: nếu H_m5 < H_m4 → khách đang thu hẹp lựa chọn |
H_m6 | Shannon Entropy tháng 6 | |
decline | Mức giảm entropy tổng: H_m4 − H_m6 | Giá trị càng lớn → mức độ thu hẹp danh mục càng nghiêm trọng |
int_1h | Khoảng cách trung bình giữa các đơn hàng nửa đầu năm (tháng 1–3), đơn vị: ngày | Thấp = mua thường xuyên. Ví dụ 6.5 ngày ≈ ~4.6 đơn/tháng |
int_2h | Khoảng cách trung bình giữa các đơn hàng nửa cuối (tháng 4–6), đơn vị: ngày | Cao hơn int_1h → khách đang giãn cách dần |
freq% | % thay đổi khoảng cách: (int_2h − int_1h) / int_1h × 100 | Dương = khoảng cách tăng → tần suất mua giảm. Âm = tần suất mua tăng |
risk | Mức nguy cơ tổng hợp (dựa trên freq%) | HIGH: freq% > 20% · MEDIUM: 0% < freq% ≤ 20% · LOW: freq% ≤ 0% |
Cách đọc ví dụ dòng C1 — Nguyễn Văn An
- H_m4 = 0.9557 → 0.5004 → 0.0000: khách thu hẹp từ 3 nhóm → 2 nhóm → 1 nhóm duy nhất qua 3 tháng.
- int_1h = 6.5 → int_2h = 11.3: khoảng cách giữa các đơn tăng từ ~6.5 lên ~11.3 ngày.
- freq% = +72.1%: khoảng cách tăng 72% → tần suất mua giảm mạnh → HIGH (nguy cơ rời bỏ cao nhất).
- CRM action: kích hoạt Personalized Offer ngay — gợi ý sản phẩm thuộc nhóm Trà / Bánh ngọt mà khách đã bỏ.

Leave a Comment