messenger_logo
Liên hệ qua Messenger
SciEco

Giải thích dự báo chuỗi thời gian với giá trị shapley chính xác trong r

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

Trong học máy có giám sát, giá trị Shapley là phương pháp tiêu chuẩn để đo lường mức độ đóng góp của từng biến giải thích vào kết quả dự đoán của mô hình. Tuy nhiên, việc áp dụng giá trị Shapley vào bài toán chuỗi thời gian có biến ngoại sinh lại ít phổ biến hơn dù mang lại giá trị thực tiễn rất cao. Bài viết này sẽ hướng dẫn bạn cách tính toán và trực quan hóa giá trị Shapley chính xác nhằm bóc tách các kịch bản dự báo chuỗi thời gian thông qua mô hình dynrmf trong gói ahead của R.

Bản chất của giá trị Shapley trong bài toán chuỗi thời gian

Giá trị Shapley bắt nguồn từ lý thuyết trò chơi hợp tác, phân chia phần thưởng công bằng cho các bên tham gia dựa trên đóng góp cận biên của họ. Khi chuyển giao sang dự báo chuỗi thời gian, mỗi biến hồi quy đóng vai trò như một người chơi cùng tác động lên giá trị dự báo tương lai.

Thông thường, việc tính toán giá trị Shapley đòi hỏi xấp xỉ vì độ phức tạp hàm mũ khi số lượng biến tăng lên. Tuy nhiên, trong phân tích kinh tế lượng và chuỗi thời gian vĩ mô, số lượng biến hồi quy bên ngoài thường khá nhỏ, thường dưới 15 biến. Điều này cho phép chúng ta tính toán trực tiếp giá trị Shapley chính xác mà không cần xấp xỉ, đảm bảo tính toàn vẹn và độ tin cậy tuyệt đối cho phân tích kịch bản.

Xây dựng mô hình và phân tích kịch bản với R

Để minh họa, chúng ta sử dụng bộ dữ liệu uschange từ gói fpp2, ghi nhận các chỉ số kinh tế vĩ mô hàng quý của Mỹ. Mục tiêu là dự báo mức tăng trưởng tiêu dùng dựa trên ba biến giải thích: thu nhập, tiết kiệm và tỷ lệ thất nghiệp.

Quy trình triển khai bao gồm việc chuẩn hóa dữ liệu, chia tập huấn luyện và kiểm thử, sau đó huấn luyện mô hình Support Vector Machine kết hợp dynrmf để mô phỏng bốn kịch bản: cơ sở, bi quan, lạc quan và cực kỳ lạc quan.

1devtools::install_github("Techtonique/ahead")
2library(fpp2)
3library(ahead)
4library(e1071)
5library(misc)
6library(ggplot2)
7library(patchwork)
8y <- fpp2::uschange[, "Consumption"]
9xreg <- scale(fpp2::uschange[, c("Income", "Savings", "Unemployment")])
10split <- misc::splitts(y, split_prob = 0.9)
11xreg_train <- window(xreg, start = start(split$training), end = end(split$training))
12xreg_test <- window(xreg, start = start(split$testing), end = end(split$testing))
13shap <- ahead::dynrmf_shap(
14  y = split$training,
15  xreg_fit = xreg_train,
16  xreg_predict = xreg_test,
17  fit_func = e1071::svm
18)
19p1 <- ahead::plot_dynrmf_shap_waterfall(shap, title = "Baseline scenario")
20xreg_pess <- xreg_test
21xreg_pess[, "Income"] <- -1
22xreg_pess[, "Savings"] <- -0.5
23shap_pess <- dynrmf_shap(
24  y = split$training,
25  xreg_fit = xreg_train,
26  xreg_predict = xreg_pess,
27  fit_func = e1071::svm
28)
29p2 <- ahead::plot_dynrmf_shap_waterfall(shap_pess, title = "Pessimistic scenario")
30xreg_opt <- xreg_test
31xreg_opt[, "Income"] <- 2
32xreg_opt[, "Savings"] <- 0.5
33shap_opt <- dynrmf_shap(
34  y = split$training,
35  xreg_fit = xreg_train,
36  xreg_predict = xreg_opt,
37  fit_func = e1071::svm
38)
39p3 <- ahead::plot_dynrmf_shap_waterfall(shap_opt, title = "Optimistic scenario")
40xreg_ovr <- xreg_test
41xreg_ovr[, "Income"] <- 2.5
42xreg_ovr[, "Savings"] <- 0.75
43shap_ovr <- ahead::dynrmf_shap(
44  y = split$training,
45  xreg_fit = xreg_train,
46  xreg_predict = xreg_ovr,
47  fit_func = e1071::svm
48)
49p4 <- plot_dynrmf_shap_waterfall(shap_ovr, title = "Overly optimistic scenario")
50(p1 + p2) / (p3 + p4)

Đánh giá kết quả qua biểu đồ thác nước

Hàm plot_dynrmf_shap_waterfall trực quan hóa tác động cộng dồn của từng biến kinh tế vào dự báo theo định dạng biểu đồ thác nước.

Một nguyên tắc kiểm tra quan trọng khi làm việc với giá trị Shapley là tính chất cộng: tổng giá trị Shapley của tất cả các biến phải bằng đúng độ lệch giữa giá trị dự báo và mức dự báo nền tảng. Mức dự báo nền tảng ở đây chính là kết quả mô hình khi mọi biến giải thích được thay thế bằng giá trị trung bình cột trên tập huấn luyện. Sự khớp nối hoàn hảo này giúp người ra quyết định hiểu rõ chính xác biến số nào đang thúc đẩy hoặc kéo giảm đà tăng trưởng trong từng tình huống giả định.

✨ Giá trị đắt giá: Việc tính toán giá trị Shapley chính xác trong bài toán chuỗi thời gian giúp chuyển hóa mô hình hộp đen thành một công cụ phân tích kịch bản trực quan, cho phép nhà phân tích định lượng tường tận mức độ đóng góp của từng biến vĩ mô vào dự báo tương lai mà không làm mất đi độ chính xác toán học.

Câu hỏi tư duy và bài tập ứng dụng

Khi phân tích kịch bản với số lượng biến giải thích vượt quá 15 biến, thời gian tính toán giá trị Shapley chính xác sẽ tăng theo cấp số nhân. Bạn sẽ áp dụng chiến lược tiền xử lý hoặc thuật toán xấp xỉ nào để cân bằng giữa chi phí tính toán và độ tin cậy của lời giải thích? Hãy thử thay thế thuật toán SVM trong đoạn mã trên bằng Random Forest hoặc mô hình tuyến tính để so sánh sự khác biệt trong phân bổ giá trị Shapley.


Bài viết khác
Gói deltatest vừa phát hành phiên bản 0.2.0 với hai cập nhật quan trọng: phương thức tidy() cho đối tượng deltatest và sửa lỗi tính giá trị p cho kiểm định một phía. Trước khi đi vào chi tiết, hãy nhắc lại nhanh mục đích của gói này. deltatest giải quyết bài toán gì deltatest cung cấp hàm deltatest() để thực hiện kiểm định Z hai mẫu dựa trên phương pháp Delta. Gói này thiết kế cho bối cảnh phổ biến trong thử nghiệm A/B trực tuyến: ngẫu nhiên hóa ở mức người dùng nhưng chỉ số đo lường ở đơn vị tốt hơn như lượt xem trang hoặc phiên làm việc. Trong thiết lập này, các kiểm định ngây thơ (Z-test chuẩn, kiểm định chi-bình phương, kiểm định hiệu tỷ lệ) thường thấp 추정 độ không chắc chắn vì các quan sát trong cùng một người dùng không độc lập. deltatest() khắc phục vấn đề này bằng bộ ước lượng phương sai dựa trên phương pháp Delta.
Trong bối cảnh các tổ chức chính phủ và tổ chức phi lợi nhuận ngày càng cần công cụ trực quan hóa dữ liệu minh bạch, mở và bền vững, việc lựa chọn công cụ phù hợp không chỉ ảnh hưởng đến chất lượng báo cáo mà còn quyết định tính khả thi trong dài hạn. D3po và Tabler – hai dự án mã nguồn mở được phát triển bởi pacha.dev – chính là giải pháp lý tưởng cho những ai cần biểu đồ tương tác mà không lo rủi ro pháp lý từ giấy phép GPL. D3po là một gói R thay thế miễn phí cho Highcharter, với thiết kế hướng đến sự đơn giản và hiệu suất cao. Thay vì bao gồm hàng trăm tùy chọn phức tạp, D3po tập trung vào các tính năng cốt lõi: biểu đồ dạng cây (treemap), biểu đồ đường, biểu đồ cột – tất cả đều được xây dựng trên nền tảng JavaScript mạnh mẽ nhưng không yêu cầu giấy phép trả phí cho mục đích tổ chức. Điều này đặc biệt quan trọng khi các cơ quan nhà nước hoặc NGO phải tuân thủ nghiêm ngặt về nguồn gốc phần mềm. Một trong những câu hỏi thường gặp sau khi giới thiệu D3po là: Liệu có thể tạo biểu đồ treemap lồng ghép (nested treemap) không? Câu trả lời là có. Trong gói demo được cung cấp, người dùng có thể khám phá cách xây dựng cấu trúc phân cấp rõ ràng, từ cấp quốc gia đến tỉnh thành, thể hiện dữ liệu phân bổ ngân sách hoặc dân số theo từng tầng. Sự linh hoạt này giúp người dùng truyền tải thông tin phức tạp một cách trực quan mà không cần đến các công cụ thương mại đắt đỏ.
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: [email protected]
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội