Quay lại Blog
Metrics & AnalyticsCập nhật: 15 tháng 9, 202516 phút đọc

Cohort Analysis: Phân Tích Hành Vi Theo Nhóm để Hiểu Customer Journey

Hướng dẫn chi tiết về Cohort Analysis - công cụ quan trọng để hiểu hành vi người dùng theo thời gian, tính retention, và tối ưu product-market fit.

Phạm Thu Hà

Phạm Thu Hà

Lead Analytics Engineer

Cohort analysis visualization showing user retention over time with different cohorts
#Cohort Analysis#Retention#Customer Analytics#Data Analysis#Product Analytics

Cohort Analysis: Phân Tích Hành Vi Theo Nhóm để Hiểu Customer Journey

TL;DR

Cohort Analysis là phương pháp phân tích hành vi của các nhóm người dùng có chung đặc điểm (ví dụ: cùng tháng đăng ký) theo thời gian. Đây là công cụ quan trọng để:

  • Đo lường Retention: Bao nhiêu % user quay lại sau 1 tuần, 1 tháng?
  • Hiểu Product-Market Fit: Sản phẩm có giữ chân được user không?
  • Tối ưu Customer Journey: Tại sao user rời bỏ sản phẩm? Tại đâu?
  • Đánh giá tác động của Features: Feature mới có cải thiện retention không?

Ví dụ thực tế: Netflix phát hiện user đăng ký trong Q4 (mùa lễ) có retention thấp hơn 15% so với Q2 → Tối ưu onboarding cho cohort mùa lễ → Tăng retention 22%.

3 loại Cohort phổ biến:

  1. Time-based Cohorts: Nhóm theo thời gian (tháng đăng ký, tuần mua hàng đầu tiên)
  2. Behavior-based Cohorts: Nhóm theo hành vi (đã dùng feature X, đã refer bạn bè)
  3. Acquisition Channel Cohorts: Nhóm theo nguồn (Google Ads, Organic, Referral)

Cohort Analysis Là Gì?

Định nghĩa

Cohort Analysis là kỹ thuật phân tích data chia người dùng thành các nhóm (cohorts) có chung đặc điểm hoặc trải nghiệm trong cùng khoảng thời gian, sau đó theo dõi hành vi của từng cohort theo thời gian.

Tại sao Cohort Analysis quan trọng?

Vấn đề với Overall Metrics:

Tháng 1: 1,000 user, Retention = 40%
Tháng 2: 1,500 user, Retention = 40%
Tháng 3: 2,000 user, Retention = 40%

→ Trông có vẻ ổn định! Nhưng...

Thực tế khi phân tích theo Cohort:

CohortMonth 0Month 1Month 2Month 3
Jan 2025100%50%35%25%
Feb 2025100%45%30%
Mar 2025100%40%

Retention đang giảm dần theo cohort! Overall metric che giấu vấn đề.

3 Lợi ích chính

1. Phát hiện xu hướng ẩn

  • Overall metric có thể tăng nhờ user mới, nhưng retention thực sự đang giảm
  • Cohort analysis lộ ra vấn đề sớm hơn

2. Đo lường tác động của thay đổi

  • Release feature mới vào tháng 3 → So sánh cohort Mar vs Feb vs Jan
  • Thay đổi pricing → So sánh retention trước/sau

3. Hiểu customer lifecycle

  • Khi nào user thường churn? (Ngày 7? Tháng 3?)
  • Retention tốt nhất ở giai đoạn nào?

Các Loại Cohort Phổ Biến

1. Time-based Cohorts (Phổ biến nhất)

Nhóm user theo thời gian họ thực hiện hành động đầu tiên.

Ví dụ:

  • Acquisition Cohort: Tháng đăng ký (Jan 2025, Feb 2025, ...)
  • Purchase Cohort: Tháng mua hàng đầu tiên
  • Activation Cohort: Tuần hoàn thành onboarding

Câu hỏi trả lời:

  • User đăng ký tháng nào có retention tốt nhất?
  • Có mùa vụ nào ảnh hưởng đến chất lượng user không?

2. Behavior-based Cohorts

Nhóm user theo hành vi cụ thể.

Ví dụ:

  • User đã dùng feature "Export to PDF"
  • User đã invite >= 3 teammates
  • User đã connect integration (Slack, Google Sheets, ...)
  • User đã complete tutorial

Câu hỏi trả lời:

  • Feature nào giúp tăng retention?
  • Hành vi nào là leading indicator của retention tốt?

3. Acquisition Channel Cohorts

Nhóm user theo nguồn traffic.

Ví dụ:

  • Google Ads
  • Facebook Ads
  • Organic Search
  • Referral
  • Direct

Câu hỏi trả lời:

  • Kênh nào mang lại user chất lượng tốt nhất (high retention)?
  • Kênh nào có LTV cao nhất?

Retention Cohort Analysis - Phân Tích Chi Tiết

Cách đọc Retention Cohort Table

Ví dụ điển hình:

CohortMonth 0Month 1Month 2Month 3Month 4
Jan 2025100% (500)45% (225)32% (160)28% (140)25% (125)
Feb 2025100% (800)52% (416)38% (304)33% (264)
Mar 2025100% (1200)58% (696)42% (504)
Apr 2025100% (1500)61% (915)

Cách đọc:

  • Cột "Month 0": Luôn là 100% (tất cả user trong cohort)
  • Cột "Month 1": % user quay lại sau 1 tháng
  • Số trong ngoặc: Số lượng user thực tế
  • Ô trống: Chưa đủ dữ liệu

Phân tích:

  • Xu hướng tích cực: Cohort mới hơn có retention tốt hơn (Jan 45% → Apr 61%)
  • ⚠️ Churn pattern: Churn mạnh nhất ở Month 0→1 (giảm ~40-50%)
  • 📊 Stabilization: Retention ổn định hơn sau Month 3 (28% → 25%)

SQL để tính Retention Cohort

WITH user_cohorts AS (
  -- Xác định cohort của mỗi user (tháng đăng ký)
  SELECT
    user_id,
    DATE_TRUNC('month', created_at) AS cohort_month
  FROM users
),

user_activities AS (
  -- Tất cả activities của user
  SELECT
    user_id,
    DATE_TRUNC('month', activity_date) AS activity_month
  FROM user_events
  WHERE event_type IN ('login', 'purchase', 'engagement')
  GROUP BY user_id, activity_month
),

cohort_size AS (
  -- Tổng số user trong mỗi cohort
  SELECT
    cohort_month,
    COUNT(DISTINCT user_id) AS total_users
  FROM user_cohorts
  GROUP BY cohort_month
),

cohort_retention AS (
  -- Tính số user active trong mỗi tháng sau cohort
  SELECT
    uc.cohort_month,
    ua.activity_month,
    -- Số tháng kể từ cohort
    DATEDIFF('month', uc.cohort_month, ua.activity_month) AS months_since_cohort,
    COUNT(DISTINCT uc.user_id) AS active_users
  FROM user_cohorts uc
  JOIN user_activities ua ON uc.user_id = ua.user_id
  GROUP BY uc.cohort_month, ua.activity_month
)

-- Kết quả cuối cùng
SELECT
  cr.cohort_month,
  cr.months_since_cohort,
  cs.total_users AS cohort_size,
  cr.active_users,
  ROUND(100.0 * cr.active_users / cs.total_users, 2) AS retention_pct
FROM cohort_retention cr
JOIN cohort_size cs ON cr.cohort_month = cs.cohort_month
ORDER BY cr.cohort_month, cr.months_since_cohort;

Output:

cohort_month | months_since | cohort_size | active_users | retention_pct
-------------|--------------|-------------|--------------|---------------
2025-01-01   | 0            | 500         | 500          | 100.00
2025-01-01   | 1            | 500         | 225          | 45.00
2025-01-01   | 2            | 500         | 160          | 32.00
2025-02-01   | 0            | 800         | 800          | 100.00
2025-02-01   | 1            | 800         | 416          | 52.00
...

Python để visualize Cohort Table

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Giả sử đã có data từ SQL query trên
df = pd.read_sql(cohort_query, conn)

# Pivot để tạo cohort table
cohort_table = df.pivot_table(
    index='cohort_month',
    columns='months_since_cohort',
    values='retention_pct'
)

# Heatmap visualization
plt.figure(figsize=(12, 8))
sns.heatmap(
    cohort_table,
    annot=True,           # Hiển thị số
    fmt='.0f',            # Format: số nguyên
    cmap='RdYlGn',        # Red-Yellow-Green
    vmin=0,
    vmax=100,
    cbar_kws={'label': 'Retention %'}
)
plt.title('User Retention Cohort Analysis', fontsize=16)
plt.xlabel('Months Since First Use')
plt.ylabel('Cohort (Signup Month)')
plt.tight_layout()
plt.savefig('cohort_retention_heatmap.png', dpi=300)

Kết quả: Heatmap với màu xanh (retention cao) và đỏ (retention thấp).


Revenue Cohort Analysis

Ngoài retention, bạn có thể phân tích Revenue per Cohort để hiểu LTV.

SQL cho Revenue Cohort

WITH user_cohorts AS (
  SELECT
    user_id,
    DATE_TRUNC('month', created_at) AS cohort_month
  FROM users
),

cohort_revenue AS (
  SELECT
    uc.cohort_month,
    DATE_TRUNC('month', o.order_date) AS revenue_month,
    DATEDIFF('month', uc.cohort_month, o.order_date) AS months_since_cohort,
    SUM(o.amount) AS revenue
  FROM user_cohorts uc
  JOIN orders o ON uc.user_id = o.user_id
  GROUP BY uc.cohort_month, revenue_month
),

cohort_size AS (
  SELECT
    cohort_month,
    COUNT(DISTINCT user_id) AS total_users
  FROM user_cohorts
  GROUP BY cohort_month
)

SELECT
  cr.cohort_month,
  cr.months_since_cohort,
  cs.total_users,
  cr.revenue AS total_revenue,
  ROUND(cr.revenue / cs.total_users, 2) AS revenue_per_user
FROM cohort_revenue cr
JOIN cohort_size cs ON cr.cohort_month = cs.cohort_month
ORDER BY cr.cohort_month, cr.months_since_cohort;

Output:

cohort_month | months_since | total_users | total_revenue | revenue_per_user
-------------|--------------|-------------|---------------|------------------
2025-01-01   | 0            | 500         | $25,000       | $50.00
2025-01-01   | 1            | 500         | $18,000       | $36.00
2025-01-01   | 2            | 500         | $15,000       | $30.00
2025-02-01   | 0            | 800         | $48,000       | $60.00
2025-02-01   | 1            | 800         | $32,000       | $40.00
...

Phân tích:

  • Feb cohort có revenue/user cao hơn Jan cohort
  • Revenue giảm dần theo tháng (tự nhiên vì một số user churn)
  • Dùng để tính LTV by Cohort

Case Study: Tối Ưu Retention với Cohort Analysis

Case Study 1: Duolingo - Phát hiện "Critical Day"

Context:

  • Duolingo (app học ngôn ngữ) muốn cải thiện retention
  • Phân tích cohort để tìm "điểm rơi" của user

Phân tích:

CohortDay 0Day 1Day 2Day 7Day 14Day 30
Week 1100%68%52%35%28%18%
Week 2100%70%55%38%30%20%

Phát hiện:

  • Day 1 → Day 2: Churn mạnh nhất (~15-18%)
  • User không quay lại Day 2 có 80% khả năng churn vĩnh viễn

Hành động:

  1. Gửi notification reminder vào chiều Day 1
  2. Gamification: Streak bonus (liên tục 2 ngày → +10 XP)
  3. Personalized lesson cho Day 2 (dễ hơn, ngắn hơn)

Kết quả:

  • Day 1→2 retention tăng từ 68% → 78% (+10pp)
  • Day 30 retention tăng từ 18% → 25% (+7pp)
  • LTV tăng ~30%

Case Study 2: E-commerce Việt Nam - So sánh Acquisition Channel

Context:

  • Startup e-commerce Việt Nam chạy ads trên Google, Facebook, TikTok
  • Muốn biết kênh nào mang lại user chất lượng tốt nhất

Phân tích:

Google Ads Cohort:

CohortWeek 0Week 1Week 2Week 4Week 8
Jan100% (200)35%22%18%15%

Facebook Ads Cohort:

CohortWeek 0Week 1Week 2Week 4Week 8
Jan100% (500)28%18%12%8%

TikTok Ads Cohort:

CohortWeek 0Week 1Week 2Week 4Week 8
Jan100% (300)42%30%25%22%

Phân tích:

  • TikTok: Retention tốt nhất (22% ở Week 8)
  • Google: Retention trung bình (15%)
  • Facebook: Retention thấp nhất (8%)

Revenue per User:

  • TikTok: $45 LTV
  • Google: $38 LTV
  • Facebook: $22 LTV

Hành động:

  1. Tăng ngân sách cho TikTok Ads (+50%)
  2. Tối ưu lại targeting Facebook (loại bỏ low-intent audience)
  3. A/B test landing page cho Google Ads

Kết quả:

  • CAC giảm 18%
  • LTV/CAC tăng từ 2.1x → 3.2x
  • Revenue tăng 35% trong 3 tháng

Các Metrics Quan Trọng Trong Cohort Analysis

1. Retention Rate

Định nghĩa: % user còn active sau X thời gian

Công thức:

Retention Rate = (Active Users in Period X / Total Users in Cohort) × 100

Benchmark:

  • SaaS B2B: 80-90% (Month 1), 70-80% (Month 3)
  • Consumer App: 30-40% (Week 1), 15-25% (Month 1)
  • E-commerce: 20-30% (Month 1), 10-15% (Month 3)

2. Churn Rate

Định nghĩa: % user rời bỏ sản phẩm

Công thức:

Churn Rate = 100% - Retention Rate

Hoặc tính chính xác hơn:

SELECT
  cohort_month,
  months_since_cohort,
  (1 - active_users_this_month / active_users_last_month) * 100 AS churn_rate
FROM cohort_retention;

3. Customer Lifetime (Average Lifespan)

Định nghĩa: Trung bình user sử dụng sản phẩm bao lâu?

Cách tính đơn giản:

Average Lifetime = 1 / Churn Rate

Ví dụ: Churn rate = 5%/tháng → Average lifetime = 20 tháng

4. Cumulative Retention

Định nghĩa: % user ever quay lại (không nhất thiết liên tục)

SQL:

WITH user_active_months AS (
  SELECT
    uc.cohort_month,
    uc.user_id,
    COUNT(DISTINCT ua.activity_month) AS active_months
  FROM user_cohorts uc
  LEFT JOIN user_activities ua
    ON uc.user_id = ua.user_id
    AND ua.activity_month > uc.cohort_month
  GROUP BY uc.cohort_month, uc.user_id
)

SELECT
  cohort_month,
  COUNT(CASE WHEN active_months >= 1 THEN 1 END) * 100.0 / COUNT(*) AS ever_returned_pct
FROM user_active_months
GROUP BY cohort_month;

Best Practices khi làm Cohort Analysis

1. Chọn Cohort Size phù hợp

Quá nhỏ: Noise, khó tìm pattern

Daily Cohort (Jan 1, Jan 2, Jan 3, ...) → Mỗi cohort chỉ 10-20 user

Quá lớn: Mất đi chi tiết

Yearly Cohort (2024, 2025, ...) → Không đủ granular

Khuyến nghị:

  • SaaS/App: Weekly hoặc Monthly cohorts
  • E-commerce: Monthly cohorts
  • High-traffic site: Weekly hoặc Daily (nếu đủ sample size)

Rule of thumb: Mỗi cohort nên có ít nhất 100-200 users để kết quả có ý nghĩa thống kê.

2. Định nghĩa "Active" rõ ràng

Ví dụ không rõ ràng:

  • "User active = user login"
  • → Có thể user chỉ mở app lên rồi tắt

Ví dụ tốt hơn:

  • Spotify: Active = nghe ít nhất 1 bài
  • Notion: Active = tạo hoặc edit ít nhất 1 page
  • E-commerce: Active = xem ít nhất 1 product detail page

3. So sánh Like-for-Like

Sai:

So sánh Jan 2024 cohort (có đủ 12 tháng data)
với Dec 2024 cohort (chỉ có 1 tháng data)

Đúng:

So sánh Month 1 retention của tất cả cohorts:
- Jan 2024 Month 1: 45%
- Feb 2024 Month 1: 48%
- Mar 2024 Month 1: 52%
→ Xu hướng tăng!

4. Kết hợp với Qualitative Research

Cohort Analysis cho biết "Cái gì đang xảy ra", nhưng không cho biết "Tại sao".

Ví dụ:

  • Phát hiện: Feb cohort có retention thấp bất thường
  • → Làm user interview với Feb cohort users
  • → Phát hiện: Server downtime 2 ngày đầu tháng Feb

Tools để làm Cohort Analysis

1. SQL + BI Tools (Flexible nhất)

Tools:

  • SQL (BigQuery, Snowflake, Redshift)
  • BI: Looker, Tableau, Metabase

Ưu điểm:

  • Fully customizable
  • Có thể tạo cohort phức tạp
  • Cost-effective

Nhược điểm:

  • Cần technical skills
  • Setup time lâu

2. Product Analytics Tools (Dễ dùng)

Tools:

  • Amplitude: Cohort analysis built-in, rất mạnh
  • Mixpanel: Retention reports tự động
  • Heap: Auto-capture events, cohort analysis đơn giản
  • PostHog: Open-source, self-hosted

Ưu điểm:

  • No-code interface
  • Pre-built templates
  • Real-time updates

Nhược điểm:

  • Đắt (pricing theo MAU)
  • Giới hạn customization

3. Google Analytics 4

Setup:

  1. Explore → Template Gallery → Cohort exploration
  2. Chọn cohort dimension (First user campaign, First user source, ...)
  3. Chọn return metric (Daily active users, Sessions, ...)

Ưu điểm:

  • Free
  • Dễ setup

Nhược điểm:

  • Giới hạn customization
  • Chỉ time-based cohorts

Common Pitfalls và Cách Tránh

Pitfall 1: Survivorship Bias

Vấn đề:

Chỉ phân tích cohort user còn active
→ Bỏ qua user đã churn
→ Kết luận sai

Giải pháp: Luôn bao gồm tất cả users trong cohort, kể cả churned users.

Pitfall 2: Seasonality không được tính đến

Ví dụ:

  • Dec cohort (mùa lễ, nhiều gift subscriptions) có retention thấp hơn
  • Không phải vì product tệ, mà vì user không tự chọn

Giải pháp:

  • So sánh cohort cùng tháng khác năm (Dec 2024 vs Dec 2023)
  • Phân tích theo acquisition type (Gift vs Self-purchase)

Pitfall 3: Quá tập trung vào Acquisition, bỏ qua Activation

Vấn đề:

Cohort Jan có 1,000 users signup
Nhưng chỉ 300 users complete onboarding
→ Retention thấp không phải vì product mà vì onboarding kém

Giải pháp: Tạo Activation Cohort (users hoàn thành onboarding) thay vì chỉ Acquisition Cohort.


Cohort Analysis cho Startups Việt Nam

Thách thức đặc thù

1. Sample size nhỏ

  • Startup mới: 100-500 users/tháng
  • Cohort weekly không đủ sample size
  • → Dùng monthly cohort hoặc quarterly cohort

2. High seasonality

  • Tết Nguyên Đán: Activity giảm mạnh
  • Lương cuối tháng: Activity tăng (fintech, e-commerce)
  • → Cần adjust khi so sánh cohorts

3. Limited tooling budget

  • Amplitude/Mixpanel đắt ($2,000+/tháng)
  • → Dùng open-source: PostHog, Metabase + SQL

Khuyến nghị cho Startups

Giai đoạn Pre-PMF (0-1,000 users):

  • Focus: Week 1 retention
  • Cohort size: Monthly hoặc All-time cohort
  • Tools: Google Sheets + manual SQL
  • Goal: Tìm được retention > 30% (Week 1)

Giai đoạn Growth (1,000-10,000 users):

  • Focus: Month 1 & Month 3 retention
  • Cohort size: Weekly
  • Tools: Metabase hoặc PostHog
  • Goal: Retention curve flatten (ổn định sau 3 tháng)

Giai đoạn Scale (10,000+ users):

  • Focus: LTV cohort analysis
  • Cohort size: Weekly, phân tích chi tiết theo channel/feature
  • Tools: Amplitude hoặc Looker
  • Goal: LTV/CAC > 3x

Kết Luận

Cohort Analysis là công cụ không thể thiếu để hiểu sâu về hành vi người dùng và tối ưu sản phẩm. Thay vì chỉ nhìn overall metrics (có thể misleading), bạn cần:

Key Takeaways

  1. Chia user thành cohorts có chung đặc điểm (time, behavior, channel)
  2. Theo dõi retention theo thời gian để phát hiện xu hướng
  3. So sánh cohorts để đánh giá tác động của features/campaigns
  4. Kết hợp với revenue analysis để tính LTV
  5. Chọn cohort size và definition phù hợp với giai đoạn công ty

Next Steps

Sau khi master Cohort Analysis, bạn nên học:


Carptech - Giải Pháp Cohort Analysis cho Doanh Nghiệp Việt Nam

Tại Carptech, chúng tôi giúp doanh nghiệp Việt Nam xây dựng hệ thống analytics với:

Dịch vụ của chúng tôi

  • Data Platform Setup: Modern data stack với BigQuery, dbt, Looker
  • Cohort Analysis Implementation: SQL templates, BI dashboards tự động
  • Custom Metrics & Dashboards: Tailored cho business model của bạn
  • Training & Consulting: Đào tạo team làm việc với cohort data

Case Studies

  • E-commerce: Tăng LTV 45% nhờ phân tích cohort theo channel
  • SaaS: Giảm churn 30% bằng cách tối ưu onboarding cho cohort churn cao
  • Fintech: Tối ưu cross-sell với behavior-based cohort analysis

Liên hệ: https://carptech.vn


Bài viết được viết bởi Carptech Team - Chuyên gia về Data Platform & Analytics tại Việt Nam.

Có câu hỏi về Data Platform?

Đội ngũ chuyên gia của Carptech sẵn sàng tư vấn miễn phí về giải pháp phù hợp nhất cho doanh nghiệp của bạn. Đặt lịch tư vấn 60 phút qua Microsoft Teams hoặc gửi form liên hệ.

✓ Miễn phí 100% • ✓ Microsoft Teams • ✓ Không cam kết dài hạn