messenger_logo
Liên hệ qua Messenger
SciEco

Ứng dụng mô hình cộng tổng quát (gam) để dự báo giá trị vòng đời khách hàng

I
IEFPA
Ngày viết: 17/04/2026

Trong lĩnh vực sinh thái học định lượng và dịch tễ học phân tử, các nhà khoa học thường sử dụng mô hình thống kê để dự báo sự phân bố loài hoặc mô hình lây truyền bệnh tật. Tuy nhiên, một ứng dụng thú vị khác của mô hình cộng tổng quát, thường được gọi là GAM, chính là dự báo giá trị vòng đời khách hàng trong các doanh nghiệp phần mềm dịch vụ. Việc dự báo CLV đối mặt với những thách thức thống kê tương tự như dự báo sinh thái: các mối quan hệ phi tuyến tính đạt đến giới hạn bão hòa, cấu trúc phân cấp nơi các nhóm khách hàng hành xử khác nhau và nhu cầu cân bằng giữa tính linh hoạt của mô hình với khả năng giải thích cho các bên liên quan.

Nhiều doanh nghiệp hiện nay vẫn dựa vào các phương pháp tính toán đơn giản như lấy giá trị đơn hàng trung bình nhân với tần suất và thời gian gắn bó. Cách tiếp cận này bỏ qua quỹ đạo cá nhân và động lực thời gian. Ngược lại, các mô hình học máy dạng hộp đen có thể nắm bắt các quy luật phức tạp nhưng lại thiếu tính diễn giải cần thiết cho các quyết định chiến lược. Mô hình GAM xuất hiện như một giải pháp trung gian hoàn hảo, cho phép nắm bắt các mối quan hệ phi tuyến phức tạp thông qua các hàm mượt có thể trực quan hóa, đồng thời xử lý tốt hiện tượng phương sai thay đổi đặc trưng trong dữ liệu doanh thu.

Hiểu về động lực kinh doanh SaaS

Các công ty SaaS hoạt động dựa trên doanh thu định kỳ từ đăng ký thuê bao. Khách hàng trả tiền hàng tháng hoặc hàng năm để duy trì quyền truy cập vào phần mềm. Điều này thay đổi hoàn toàn bài toán thống kê. Thách thức lớn nhất là chi phí thu hút khách hàng thường rất lớn so với doanh thu hàng tháng. Một khách hàng trả 99 đô la mỗi tháng nhưng tốn 500 đô la để thu hút sẽ cần ít nhất sáu tháng để doanh nghiệp đạt điểm hòa vốn.

Mức độ áp dụng tính năng không chỉ tương quan với tỷ lệ giữ chân mà còn thúc đẩy doanh thu mở rộng thông qua việc nâng cấp gói dịch vụ. Các yêu cầu thống kê ở đây không hề đơn giản: mô hình cần xử lý các tác động tính năng phi tuyến, hành vi riêng biệt theo từng phân khúc khách hàng, mô hình suy giảm theo thời gian và phương sai không đồng nhất. Các mô hình tuyến tính thông thường với giả định phương sai không đổi thường đưa ra các dự báo vô lý như doanh thu âm hoặc tăng trưởng vô hạn. Đây chính là lúc GAM phát huy thế mạnh.

Thiết lập môi trường và giả lập dữ liệu

Chúng ta sẽ bắt đầu bằng việc tải các thư viện cần thiết cho việc xây dựng mô hình và trực quan hóa trong R.

1library(mgcv)            
2library(tidyverse)       
3library(marginaleffects) 
4library(gratia)          
5library(scales)          
6theme_set(theme_bw(base_size = 15, base_family = 'serif') + 
7           theme(panel.grid = element_blank()))

Để hiểu rõ hành vi của mô hình, chúng ta sẽ tạo dữ liệu giả lập phản ánh các quy luật thực tế trong kinh doanh SaaS. Chúng ta sẽ theo dõi 100 khách hàng trong 5 tháng với ba cấp độ hợp đồng: Basic, Pro và Enterprise. Các yếu tố như mức độ áp dụng tính năng sẽ bão hòa ở mức 95% và các kênh tiếp thị có trả phí sẽ cho thấy sự suy giảm hiệu quả theo thời gian.

1set.seed(55)
2train_data <- expand.grid(
3  customer_id = 1:100,
4  month = 1:5
5) %>%
6  dplyr::mutate(
7    contract_tier = sample(c("Basic", "Pro", "Enterprise"), 100, 
8                          replace = TRUE, 
9                          prob = c(0.5, 0.3, 0.2))[customer_id],
10    acquisition_channel = sample(c("Organic", "Paid", "Partner"), 
11                                100, replace = TRUE)[customer_id],
12    feature_adoption_pct = pmin(95, pmax(5, 
13                                         20 + month * 12 + 
14                                         rnorm(dplyr::n(), 0, 10))),
15    base_mrr = dplyr::case_when(
16      contract_tier == "Basic" ~ 99,
17      contract_tier == "Pro" ~ 299,
18      contract_tier == "Enterprise" ~ 599,
19      TRUE ~ 99
20    ),
21    marketing_boost = ifelse(acquisition_channel == "Paid", 
22                            0.3 * exp(-0.2 * month), 0),
23    adoption_multiplier = dplyr::case_when(
24      contract_tier == "Enterprise" ~ 
25        1 + 2 * (1 - exp(-0.05 * feature_adoption_pct)),
26      contract_tier == "Pro" ~ 
27        1 + 0.5 * (feature_adoption_pct/100),
28      TRUE ~ 1 + 0.2 * (feature_adoption_pct/100)
29    ),
30    clv_6m = base_mrr * 6 * adoption_multiplier * 
31             (1 + marketing_boost) * 
32             exp(rnorm(n(), 0, 0.15))
33  ) %>%
34  dplyr::mutate(
35    contract_tier = factor(contract_tier, 
36                           levels = c("Basic", "Pro", "Enterprise")),
37    acquisition_channel = factor(acquisition_channel)
38  )
39[[IMG_1]]
40Mối quan hệ giữa việc áp dụng tính năng và CLV không chỉ phi tuyến mà còn khác biệt rõ rệt giữa các phân khúc. Khách hàng Enterprise nhanh chóng đạt đến ngưỡng bão hòa, trong khi khách hàng Basic cho thấy sự tăng trưởng gần như tuyến tính.
41[[IMG_2]]
42Mô hình theo thời gian cũng rất thú vị. Khách hàng từ kênh trả phí duy trì CLV cao hơn một cách nhất quán, nhưng mức chênh lệch này thay đổi tùy theo phân khúc. Ở nhóm Enterprise, kênh trả phí mang lại giá trị vượt trội lên tới gần 2000 đô la, trong khi ở nhóm Basic, con số này nhỏ hơn nhiều.
43## Xây dựng mô hình GAM ban đầu
44Chúng ta bắt đầu với mô hình Gaussian và liên kết log để đảm bảo các dự báo luôn dương. Cấu trúc mô hình bao gồm các hàm mượt phân cấp để cho phép mỗi phân khúc khách hàng có các đường cong phản ứng khác nhau.
45clv_model <- gam(
46  clv_6m ~ 
47    contract_tier +
48    s(feature_adoption_pct, k = 6) + 
49    s(feature_adoption_pct, by = contract_tier, k = 6) +
50    s(month, by = acquisition_channel, k = 4) +
51    s(month, k = 4),
52  data = train_data,
53  method = "REML",
54  family = gaussian(link = "log")
55)
56summary(clv_model)

Cấu trúc này cho phép mô hình nắm bắt quy luật chung của toàn bộ dữ liệu, đồng thời cho phép các nhóm khách hàng Enterprise tự điều chỉnh nếu dữ liệu hỗ trợ. Tuy nhiên, vấn đề của mô hình Gaussian là giả định phương sai không đổi. Trong dữ liệu doanh thu, các khách hàng giá trị cao thường có biến động lớn hơn nhiều so với khách hàng nhóm Basic.

Lợi thế của phân phối Tweedie

Việc chọn đúng phân phối thường quan trọng hơn cả việc tăng độ phức tạp của mô hình. Chỉ số doanh thu vi phạm hầu hết các giả định của phân phối chuẩn: giá trị luôn dương, phương sai tăng theo giá trị trung bình và có thể xuất hiện các điểm bằng không khi khách hàng rời bỏ ngay lập tức. Phân phối Tweedie giải quyết vấn đề này một cách thanh thoát.

Phương sai của Y bằng phi nhân với mu mũ p. Trong đó mu là giá trị trung bình, phi là tham số phân tán và p là tham số lũy thừa. Khi p nằm trong khoảng từ 1 đến 2, chúng ta có một phân phối hỗn hợp Poisson-Gamma, phù hợp để mô hình hóa các giá trị dương liên tục có kèm theo các điểm không. Khách hàng Enterprise có CLV trung bình cao sẽ tự nhiên có phương sai lớn hơn thông qua mối quan hệ mu mũ p này.

1clv_tweedie <- gam(
2  clv_6m ~ 
3    contract_tier +
4    s(feature_adoption_pct, k = 6) + 
5    s(feature_adoption_pct, by = contract_tier, k = 6) +
6    s(month, by = acquisition_channel, k = 4) +
7    s(month, k = 4),
8  data = train_data,
9  method = "REML",
10  family = tw(link = "log")
11)
12AIC(clv_model, clv_tweedie)

Tham số lũy thừa p ước tính được sẽ cho biết bản chất của dữ liệu. Nếu p gần bằng 2, dữ liệu mang tính chất liên tục thuần túy. Trong dự báo CLV, p thường nằm trong khoảng 1,5 đến 1,8.

Các hàm mượt được trực quan hóa cho thấy khách hàng Enterprise đạt ngưỡng bão hòa ở mức 75% áp dụng tính năng. Đáng chú ý, nhóm Basic cho thấy CLV thực sự giảm sau khi vượt quá 50% mức độ áp dụng, gợi ý rằng sự phức tạp quá mức có thể gây tác dụng ngược với nhóm khách hàng này.

So sánh mô hình và độ tin cậy của dự báo

Sự khác biệt giữa việc sử dụng phân phối Tweedie và Gaussian trở nên rõ ràng khi chúng ta xem xét các khoảng dự báo.


Bài viết khác
Mô hình hồi quy tự vectơ cấu trúc là một công cụ mạnh mẽ trong kinh tế lượng vĩ mô, giúp chúng ta nhận diện các cú sốc kinh tế và đánh giá tác động của chúng qua thời gian. Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập các ràng buộc dài hạn trong mô hình này bằng cách tái hiện lại nghiên cứu kinh điển của hai tác giả Blanchard và Quah năm 1989 trên phần mềm Stata. Khung Lý Thuyết Cơ Bản Trong các nghiên cứu trước đây về hồi quy tự vectơ cấu trúc, việc nhận diện các tham số thường dựa trên các ràng buộc ngắn hạn, tức là cách các cú sốc tác động ngay lập tức lên các biến nội sinh tại thời điểm xảy ra cú sốc. Ngược lại, Blanchard và Quah đạt được sự nhận diện bằng cách áp dụng các ràng buộc lên tác động dài hạn của các cú sốc, tức là phản ứng giới hạn của một biến nội sinh khi thời gian tiến về vô hạn. Trong một hệ hồi quy tự vectơ dừng, phản ứng của mỗi biến đối với từng cú sốc phải tiến về không trong dài hạn. Blanchard và Quah phân tích một hệ thống gồm tổng sản phẩm quốc gia thực tế GNP và tỷ lệ thất nghiệp, trong đó tốc độ tăng trưởng GNP và mức thất nghiệp được giả định là các chuỗi dừng. Hệ thống này có hai cú sốc là cú sốc cung và cú sốc cầu. Phản ứng dài hạn của tăng trưởng GNP và thất nghiệp đối với các cú sốc này phải bằng không vì các biến này là dừng.
Một biểu đồ xuất sắc không chỉ dừng lại ở việc hiển thị số liệu chính xác mà còn phải truyền tải thông điệp một cách hiệu quả nhất. Tùy thuộc vào mục đích truyền thông, bạn có thể cần một biểu đồ phù hợp với tiêu chuẩn nghiêm ngặt của các tạp chí khoa học, một biểu đồ có màu sắc tương phản cao để người đọc dễ dàng phân biệt, hoặc đơn giản là một biểu đồ tối giản với tông màu xám cổ điển. Hành trình thiết kế này thường bắt đầu từ việc vẽ một biểu đồ thô từ dữ liệu nghiên cứu, sau đó từng bước biến đổi diện mạo của nó để đạt được phong cách mong muốn. Stata cung cấp cho người dùng những công cụ vô cùng mạnh mẽ để thực hiện việc này một cách nhanh chóng và có hệ thống. Khởi đầu với biểu đồ mặc định trong Stata Để minh họa cho quá trình tùy biến, chúng ta sẽ bắt đầu với một biểu đồ kết hợp nhiều thành phần bao gồm biểu đồ phân tán của các điểm dữ liệu thực tế, đường xu hướng từ mô hình ước lượng và vùng biểu diễn khoảng tin cậy.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội