MinAI - Về trang chủ
Hướng dẫn
6/132 giờ
Đang tải...

Customer Segmentation

Phân khúc khách hàng ngân hàng: RFM, Mass/Affluent/Priority, và Cross-sell Analysis

0

🎯 Mục tiêu bài học

TB5 min
Sau bài học này, bạn sẽ:
  • Phân khúc khách hàng theo mô hình Mass / Affluent / Priority
  • Áp dụng RFM (Recency-Frequency-Monetary) trên dữ liệu giao dịch ngân hàng
  • Xác định khách hàng tiềm năng cross-sell (bán chéo sản phẩm)
  • Phân tích Customer Lifetime Value (CLV) cơ bản
📋 Thông tin bài học
Thông tinChi tiết
⏱️ Thời lượng2 giờ
📖 Chủ đề chínhCustomer Segmentation, RFM, Cross-sell, CLV
💡 Kiến thức cần cóBài 04, SQL Window Functions
🎯 OutputCustomer Segmentation Report
1

📖 Thuật ngữ quan trọng

TB5 min
Thuật ngữTiếng ViệtMô tả
SegmentationPhân khúcChia KH thành nhóm dựa trên đặc điểm chung
MassKhách hàng đại chúngKH phổ thông, thu nhập < 20M VND
AffluentKhách hàng khá giảKH trung lưu, thu nhập 20-50M VND
Priority/VIPKhách hàng ưu tiênKH giàu có, thu nhập > 50M VND
RFMRecency-Frequency-MonetaryPhân khúc theo gần đây, tần suất, giá trị
Cross-sellBán chéoBán thêm sản phẩm khác cho KH hiện tại
Up-sellBán nâng cấpNâng hạn mức, nâng tier cho KH
CLVCustomer Lifetime ValueGiá trị trọn đời của khách hàng
Wallet ShareTỷ trọng ví tiền% nhu cầu tài chính KH dùng tại ngân hàng
ChurnRời bỏKH ngừng sử dụng dịch vụ

Checkpoint

Ngân hàng phân KH thành Mass (đại chúng), Affluent (khá giả), Priority (VIP) theo thu nhập và số dư. RFM phân tích hành vi giao dịch: Recency (gần đây nhất), Frequency (tần suất), Monetary (giá trị). Cross-sell tăng wallet share — bán thêm sản phẩm cho KH hiện tại ít tốn kém hơn 5-7x so với tìm KH mới.

2

👥 Phân khúc theo Thu nhập & Giá trị

TB5 min

Mô hình phân khúc ngân hàng

🔺 Customer Segmentation Pyramid
SegmentTỷ trọngTiêu chíChiến lược phục vụ
PRIORITY / VIP5%Income > 50M | Balance > 500MRM chuyên biệt, ưu đãi đặc biệt
📎 AFFLUENT15%Income 20–50M | Balance 100–500MGói sản phẩm, tư vấn tài chính
👥 MASS80%Income < 20M | Balance < 100MSelf-service, digital banking

SQL: Phân khúc theo thu nhập

SQL
1-- 1. Customer segmentation theo thu nhập
2SELECT
3 CASE
4 WHEN c.monthly_income >= 50000000 THEN 'Priority (>50M)'
5 WHEN c.monthly_income >= 20000000 THEN 'Affluent (20-50M)'
6 ELSE 'Mass (<20M)'
7 END AS customer_segment,
8 COUNT(*) AS customer_count,
9 ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 1) AS pct_customers,
10 ROUND(AVG(c.monthly_income), 0) AS avg_income,
11 -- Loan metrics
12 COUNT(DISTINCT l.application_id) AS total_loans,
13 ROUND(AVG(l.loan_amount), 0) AS avg_loan_amount,
14 ROUND(AVG(l.default_flag) * 100, 2) AS default_rate_pct
15FROM dim_customer c
16LEFT JOIN fact_loan_application l
17 ON c.customer_id = l.customer_id AND l.status = 'Approved'
18GROUP BY
19 CASE
20 WHEN c.monthly_income >= 50000000 THEN 'Priority (>50M)'
21 WHEN c.monthly_income >= 20000000 THEN 'Affluent (20-50M)'
22 ELSE 'Mass (<20M)'
23 END
24ORDER BY avg_income DESC;

SQL: Phân tích chi tiết theo segment

SQL
1-- 2. Customer profile theo segment
2SELECT
3 CASE
4 WHEN c.monthly_income >= 50000000 THEN 'Priority'
5 WHEN c.monthly_income >= 20000000 THEN 'Affluent'
6 ELSE 'Mass'
7 END AS segment,
8 c.employment_type,
9 COUNT(*) AS count,
10 ROUND(AVG(c.age), 1) AS avg_age,
11 ROUND(AVG(c.years_employed), 1) AS avg_years_employed,
12 ROUND(AVG(l.credit_score), 0) AS avg_credit_score
13FROM dim_customer c
14LEFT JOIN fact_loan_application l ON c.customer_id = l.customer_id
15GROUP BY
16 CASE
17 WHEN c.monthly_income >= 50000000 THEN 'Priority'
18 WHEN c.monthly_income >= 20000000 THEN 'Affluent'
19 ELSE 'Mass'
20 END,
21 c.employment_type
22ORDER BY segment, count DESC;
3

📊 RFM Analysis cho Ngân hàng

TB5 min

RFM trên Transaction Data

SQL
1-- 3. RFM Calculation
2WITH rfm_base AS (
3 SELECT
4 customer_id,
5 DATEDIFF(DAY, MAX(transaction_date), '2024-12-31') AS recency_days,
6 COUNT(*) AS frequency,
7 SUM(amount) AS monetary
8 FROM fact_transaction
9 GROUP BY customer_id
10),
11rfm_scores AS (
12 SELECT
13 customer_id,
14 recency_days,
15 frequency,
16 monetary,
17 NTILE(5) OVER (ORDER BY recency_days DESC) AS r_score,
18 NTILE(5) OVER (ORDER BY frequency ASC) AS f_score,
19 NTILE(5) OVER (ORDER BY monetary ASC) AS m_score
20 FROM rfm_base
21)
22SELECT
23 customer_id,
24 recency_days,
25 frequency,
26 monetary,
27 r_score,
28 f_score,
29 m_score,
30 CONCAT(r_score, f_score, m_score) AS rfm_segment,
31 CASE
32 WHEN r_score >= 4 AND f_score >= 4 AND m_score >= 4 THEN 'Champions'
33 WHEN r_score >= 4 AND f_score >= 3 THEN 'Loyal Customers'
34 WHEN r_score >= 3 AND f_score >= 1 AND m_score >= 3 THEN 'Potential Loyalists'
35 WHEN r_score >= 4 AND f_score <= 2 THEN 'New Customers'
36 WHEN r_score <= 2 AND f_score >= 3 THEN 'At Risk'
37 WHEN r_score <= 2 AND f_score >= 4 AND m_score >= 4 THEN 'Cannot Lose Them'
38 WHEN r_score <= 2 AND f_score <= 2 THEN 'Hibernating'
39 ELSE 'Need Attention'
40 END AS rfm_label
41FROM rfm_scores;

RFM Segment Summary

SQL
1-- 4. RFM Summary
2WITH rfm_labeled AS (
3 -- (use the CTE above)
4 SELECT customer_id, r_score, f_score, m_score, monetary,
5 CASE
6 WHEN r_score >= 4 AND f_score >= 4 AND m_score >= 4 THEN 'Champions'
7 WHEN r_score >= 4 AND f_score >= 3 THEN 'Loyal'
8 WHEN r_score >= 3 AND m_score >= 3 THEN 'Potential Loyalists'
9 WHEN r_score >= 4 AND f_score <= 2 THEN 'New Customers'
10 WHEN r_score <= 2 AND f_score >= 3 THEN 'At Risk'
11 WHEN r_score <= 2 AND f_score <= 2 THEN 'Hibernating'
12 ELSE 'Need Attention'
13 END AS rfm_label
14 FROM (
15 SELECT customer_id,
16 NTILE(5) OVER (ORDER BY DATEDIFF(DAY, MAX(transaction_date), '2024-12-31') DESC) AS r_score,
17 NTILE(5) OVER (ORDER BY COUNT(*) ASC) AS f_score,
18 NTILE(5) OVER (ORDER BY SUM(amount) ASC) AS m_score,
19 SUM(amount) AS monetary
20 FROM fact_transaction
21 GROUP BY customer_id
22 ) scores
23)
24SELECT
25 rfm_label,
26 COUNT(*) AS customer_count,
27 ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 1) AS pct,
28 ROUND(AVG(monetary), 0) AS avg_monetary
29FROM rfm_labeled
30GROUP BY rfm_label
31ORDER BY avg_monetary DESC;
RFM Action Matrix
SegmentHành động
ChampionsGiữ chân, cross-sell sản phẩm premium
LoyalUp-sell, tăng hạn mức, ưu đãi loyalty
At RiskChiến dịch reactivation, ưu đãi đặc biệt
HibernatingWin-back campaign, khuyến mãi mạnh
NewOnboarding tốt, cross-sell sớm
4

🔄 Cross-sell Analysis

TB5 min

Xác định cơ hội Cross-sell

SQL
1-- 5. Số sản phẩm mỗi KH đang dùng
2WITH customer_products AS (
3 SELECT
4 c.customer_id,
5 c.monthly_income,
6 COUNT(DISTINCT l.product_id) AS num_products,
7 COUNT(DISTINCT p.product_type) AS num_product_types,
8 STRING_AGG(DISTINCT p.product_type, ', ') AS product_list
9 FROM dim_customer c
10 JOIN fact_loan_application l
11 ON c.customer_id = l.customer_id AND l.status = 'Approved'
12 JOIN dim_product p ON l.product_id = p.product_id
13 GROUP BY c.customer_id, c.monthly_income
14)
15SELECT
16 num_product_types,
17 COUNT(*) AS customer_count,
18 ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 1) AS pct,
19 ROUND(AVG(monthly_income), 0) AS avg_income
20FROM customer_products
21GROUP BY num_product_types
22ORDER BY num_product_types;

Cross-sell Opportunity

SQL
1-- 6. KH có vay tiêu dùng nhưng chưa có thẻ tín dụng → cơ hội cross-sell
2WITH customer_product_flags AS (
3 SELECT
4 c.customer_id,
5 c.monthly_income,
6 c.age,
7 c.city,
8 MAX(CASE WHEN p.product_type = 'Personal' THEN 1 ELSE 0 END) AS has_personal,
9 MAX(CASE WHEN p.product_type = 'Credit Card' THEN 1 ELSE 0 END) AS has_credit_card,
10 MAX(CASE WHEN p.product_type = 'Mortgage' THEN 1 ELSE 0 END) AS has_mortgage,
11 MAX(CASE WHEN p.product_type = 'Auto' THEN 1 ELSE 0 END) AS has_auto,
12 MIN(l.default_flag) AS any_default
13 FROM dim_customer c
14 JOIN fact_loan_application l
15 ON c.customer_id = l.customer_id AND l.status = 'Approved'
16 JOIN dim_product p ON l.product_id = p.product_id
17 GROUP BY c.customer_id, c.monthly_income, c.age, c.city
18)
19SELECT
20 'Personal → Credit Card' AS cross_sell_opportunity,
21 COUNT(*) AS eligible_customers,
22 ROUND(AVG(monthly_income), 0) AS avg_income,
23 ROUND(AVG(age), 0) AS avg_age
24FROM customer_product_flags
25WHERE has_personal = 1
26 AND has_credit_card = 0
27 AND any_default = 0
28 AND monthly_income >= 15000000;

Checkpoint

Customer Segmentation trong ngân hàng: Mass (80%, self-service) → Affluent (15%, gói sản phẩm) → Priority (5%, RM chuyên biệt). RFM trên transaction data phân loại: Champions, Loyal, At Risk, Hibernating. Cross-sell tăng wallet share — KH có 1 sản phẩm dễ mua thêm sản phẩm 2, 3. Target: KH good credit + income đủ + chưa có sản phẩm X.

5

📋 Tổng kết

TB5 min

Kiến thức đã học

Chủ đềNội dung chính
Tier SegmentationMass / Affluent / Priority theo AUM + Income
RFM AnalysisRecency, Frequency, Monetary trên transaction data
Customer ScoringPhân loại Champions, Loyal, At Risk, Hibernating
Cross-sellTăng số sản phẩm/KH, target KH eligible
Churn PredictionNhận diện KH có nguy cơ rời bỏ

Key Takeaways

  1. Mass (80%) cần self-service, Priority (5%) cần RM chuyên biệt
  2. RFM trên banking data cho actionable customer segments
  3. Cross-sell ratio đo wallet share — target tăng từ 1.8 lên 2.5+
  4. Churn risk phát hiện sớm qua inactive days + giảm giao dịch

Câu hỏi tự kiểm tra

  1. 3 tier khách hàng trong ngân hàng khác nhau thế nào?
  2. RFM áp dụng cho banking data như thế nào?
  3. Cross-sell ratio 1.8 có nghĩa gì?
  4. Làm sao phát hiện khách hàng có nguy cơ churn?

Bài tiếp theo: Transaction Analysis →

🎉 Tuyệt vời! Bạn đã thành thạo Customer Segmentation trong ngân hàng!

Nhớ: Tier + RFM + Cross-sell = chiến lược khách hàng toàn diện. 20% khách hàng Priority tạo 80% lợi nhuận!