Kiến trúc Thuật toán & Mô hình Dự báo (Chronos-2 & Gen-3 SOTA)

Đặc tả toán học 5 tầng của kiến trúc mô hình chốt: Amazon Chronos-2 (120M) Đa biến, Dual-Regime Empirical-Bayes, GBDT 28 biến ngoại sinh và Stein Hierarchical Reconciliation.

1.0 (Draft) ✓ Đã chốt giải pháp & mô hình dự báo

Tổng quan Hệ sinh thái Mô hình Thế hệ 3 (Gen-3 Frontier SOTA)

Sau quá trình thực nghiệm và đối sánh 40 mô hình thuộc 8 họ thuật toán trên chuỗi Parquet hợp nhất 69 tháng (202101–202609), dự án đã chốt Kiến trúc Mô hình Sản xuất (Final Production Architecture) dựa trên sự kết hợp giữa Foundation Model Chuỗi thời gian Đa biến (Amazon Chronos-2 120M), Động cơ Khử lệch Mùa vụ Hai Chế độ (Dual-Regime Empirical-Bayes), Tầng Học Phần dư Đa biến Ngoại sinh (LightGBM L1 + CatBoost MAE trên 28 biến) và Đồng bộ Phân cấp Stein (Stein Hierarchical Reconciliation).

Mã mô hình (slug)Tên mô hình đầy đủVai trò & Cấp gộp định tuyến tối ưu (model_for_grain)WMAPE Toàn công ty (Holdout T09)WMAPE Cấp SKU (473 mã)WMAPE Cấp Kho (35 kho)WMAPE Subinv (75 kho con)WMAPE Chuỗi (46 Chain)
chronos2_mv_crossAmazon Chronos-2 (120M) Đa biến + 28 Biến Ngoại Sinh + Stein (★ Chốt Production)sku, subinv, sku_subinv, chain, sku_chain, store, pair0,07% (Bias +0,07%)29,03%14,26%16,61%17,26%
chronos_boltAmazon Chronos-Bolt-Small (48M) Đa phân vị Tukey Trimean + Dual-Regime EBwarehouse, sku_warehouse, brand, supplier, area3, area2, channel_l10,14% (Bias +0,14%)29,16%14,45%16,63%17,40%
seasonal_ebMùa vụ phân cấp Empirical-Bayes Dual-Regime + H1/H2 Momentum + Steinchannel (Toàn công ty) & làm mỏ neo Prior cho các mô hình Gen-30,07% (Bias -0,07%)30,11%15,41%20,80%18,15%
portfolio_smartDanh mục thông minh 5 thành phần (LGBM + CatBoost + Chronos + Seasonal-EB + SBA)Cuốn chiếu 5 tháng (31,29%), Nowcast giữa tháng D+14 (20,12%), Dự báo tuần W+1 (28,15%)1,00%29,43%15,67%20,95%18,02%
catboost_ebCatBoost Oblivious Trees MAE + Empirical-Bayes Anchorchannel_l2 (16,57% – 17,07% trên 32 kênh phụ)0,21%30,05%15,70%20,83%17,90%
lgbm_ebLightGBM Global L1 Residual + Empirical-Bayes AnchorCuốn chiếu nhiều tháng ở cấp sku_warehouse (43,31%)0,36%29,73%15,57%20,98%18,10%

Năm Tầng Logic Toán học của Kiến trúc Chốt Production

Tầng 1 — Chuẩn hóa Chuỗi Thời gian, Lịch Giao dịch & Khử Đứt hàng (INV02 De-censoring)

  1. Nối mã kế thừa (Root SKU Mapping): Hợp nhất các mã sản phẩm đổi định danh qua các năm về 473 Root SKU gốc (model_lab/src/model_lab/data/sku_series.py).
  2. Trọng số ngày giao dịch hiệu dụng (Trading Weight $W(m)$): Mỗi ngày $d$ trong tháng $m$ được gán trọng số hoạt động $\omega(d)$ theo thứ trong tuần $\omega_{\text{DOW}} = (1{,}25; 1{,}08; 0{,}95; 0{,}98; 0{,}94; 0{,}60; 0{,}12)$ và giảm về $0{,}08$ vào 5 ngày lễ dương lịch cố định (01/01, 30/04, 01/05, 01/09, 02/09). Tết Âm lịch và Giỗ Tổ Hùng Vương chưa có trong danh sách này — xem Lịch lễ, Tết, sự kiện. Sản lượng tháng được quy về tốc độ bán trên mỗi ngày giao dịch hiệu dụng:
    $$y_{\text{rate}, t} = \frac{y_t}{W(t)}$$
  3. Khử bẫy đứt hàng tồn kho (INV02 Stockout De-censoring): Từ tỷ lệ ngày đứt hàng $\text{oos}_i = \frac{\text{stockout\_days}_{i, t-1}}{\text{stock\_tracked\_days}_{i, t-1}}$ trên bảng tồn kho sạch meta.inv02, mô hình khôi phục phần cầu bị ẩn trong những ngày hết hàng:
    $$\text{Base}_{\text{decensored}} = \text{Base}_{\text{raw}} \times \text{clip}\left(\frac{1}{1 - 0{,}5 \cdot \text{oos}_i}, \, 1{,}0, \, 1{,}18\right)$$

Tầng 2 — Khử Lệch Mùa Vụ Hai Chế Độ (Dual-Regime Empirical-Bayes Core)

Triển khai tại model_lab/src/model_lab/models/frontier.py, giải quyết bước ngoặt chuyển mùa gắt của ngành hàng Kem & Thực phẩm lạnh (như tháng 9 giảm tự nhiên -38,15% so với đỉnh hè tháng 8):

  1. Tỷ số chuyển mùa cùng kỳ trên rổ SKU đồng nhất (Matched-Cohort YoY Ratio):
    $$g_{\text{YoY}} = \frac{\sum_{i \in \mathcal{M}} y_{i, t-12} / W(t-12)}{\sum_{i \in \mathcal{M}} y_{i, t-13} / W(t-13)}$$
    Chỉ tính trên tập SKU $\mathcal{M}$ hoạt động ở cả hai năm để loại bỏ hoàn toàn nhiễu do mở mới điểm bán (tránh nghịch lý Simpson). Với các chuỗi khuyết lag_12, hệ thống tự động tra cứu neo mùa vụ đa năm lag_24 và lag_36 từ lịch sử 69 tháng (202101–nay).
  2. Điều biến động lượng nội tháng (H1/H2 Intramonth Momentum): Từ 1,857 triệu dòng đơn hàng ngày (daily_all), tách sản lượng tháng $t-1$ thành nửa đầu tháng (H1: ngày 1–15) và nửa cuối tháng (H2: ngày 16–31). Nếu tháng trước tăng vọt ở 7 ngày cuối tháng (last7_share) do chạy chỉ tiêu trong khi kỳ tới là tháng co hẹp mùa vụ ($g_{\text{YoY}} < 0{,}88$), mô hình tự động khử đỉnh nhồi đơn cuối kỳ.
  3. Co cụm Empirical-Bayes liên kho (Cross-Warehouse Shrinkage): Hệ số mùa vụ của từng kho được co cụm về hệ số mùa vụ toàn quốc của mã SKU đó theo trọng số $\frac{v_{s,k}}{v_{s,k} + \tau}$, triệt tiêu nhiễu ở các kho nhỏ.

Tầng 3 — Lõi Foundation Model Đa biến Amazon Chronos-2 (120M) (chronos2_mv_cross)

Triển khai tại model_lab/src/model_lab/models/chronos2_exp.py thông qua Chronos2Pipeline.from_pretrained("amazon/chronos-2"):

  • Tensor Đa biến 4 chiều (N_series, n_variates=4, L=6):
    • Variate 0 (y_rate): Tốc độ bán ngày giao dịch hiệu dụng của chuỗi mục tiêu.
    • Variate 1 (h1_rate): Tốc độ bán nửa đầu tháng (ngày 01–15).
    • Variate 2 (h2_rate): Tốc độ bán nửa cuối tháng (ngày 16–31).
    • Variate 3 (peer_rate): Tốc độ bán đồng hành của mã SKU đó trên toàn quốc / toàn ngành hàng.
  • Cơ chế Attention Kép (Variate Self-Attention + Group Cross-Learning):
    • Học đồng thời tương quan nội tại giữa nhịp đầu tháng (H1), cuối tháng (H2) và tổng tháng (y_rate), đồng thời bật cross_learning=True để các chuỗi SKU trong cùng batch chia sẻ tín hiệu chuyển dịch xu hướng.
  • Đối soát Đa phân vị (Multivariate Quantile Reconciliation): Kết hợp dự báo phân vị của y_rate với trung bình 0.50 · (h1_rate + h2_rate) trên các mức phân vị thích nghi ([0.10, 0.40, 0.70] trong kỳ co hẹp mùa vụ; [0.22, 0.50, 0.78] trong kỳ mở rộng/bình thường).

Tầng 4 — Học Phần dư Đa biến trên 28 Biến Ngoại sinh (GBDT Residual Learning)

Triển khai tại forecast_pipeline/src/forecast_pipeline/forecast/yearly_3grains.py, sử dụng tổ hợp 2 mô hình cây quyết định học phần dư tỷ lệ log $r = \ln\left(\frac{y + 1}{\text{base} + 1}\right)$ với trọng số mẫu $\sqrt{\text{base}}$:

$$r_{\text{comb}}(X) = 0{,}55 \cdot f_{\text{LightGBM\_L1}}(X) + 0{,}45 \cdot f_{\text{CatBoost\_MAE}}(X)$$
$$\hat{y}_{\text{mv}} = \hat{y}_{\text{Chronos2}} \times \exp\big(0{,}35 \cdot r_{\text{comb}}(X)\big) \times \text{stuffing\_adj} \times \text{breadth\_adj} \times \text{promo\_adj}$$

Danh mục 28 biến ngoại sinh ($X$) chốt đến hết tháng $t-1$:

  • Nhóm Độ phủ & Nhịp đơn ngày (13 biến): grp_nstores_l0, grp_odays_l0, grp_h1_share_l0, grp_last7_share_l0, grp_cps_l0, sku_nstores_l0, sku_odays_l0, sku_h1_share_l0, sku_last7_share_l0, mv_grp_store_growth, mv_sku_store_growth, mv_grp_last7_spike, mv_sku_last7_spike.
  • Nhóm Giá, Chiết khấu, FOC & CTKM Trade Promo (8 biến): sku_disc_l0, sku_promo_app_l0, sku_foc_l0, mv_disc_delta_l0, mv_price_mom_l0, tp_count_l0, tp_max_disc_l0, tp_days_l0.
  • Nhóm Tồn kho INV02, Viếng thăm Sales, Tủ đông, Thời tiết & Nhịp sản lượng (7 biến): sku_oos_l0, sku_visit_l0, sku_freezer_l0, sku_tmax_l0, sku_rain_l0, mv_l0_to_tb3, mv_yoy_to_l0.

Công thức, nguồn và giá trị mặc định của từng biến ở trang Danh mục Biến của Mô hình Dự báo.

Tầng 5 — Đồng bộ Phân cấp Stein Reconciliation & Siêu Mỏ Neo Đa Grain Bảo toàn SKU

Để đảm bảo các cấp hạt từ Toàn công ty $\leftrightarrow$ 473 SKU $\leftrightarrow$ Subinventory / Hệ thống Chuỗi $\leftrightarrow$ Cửa hàng luôn khớp số đồng nhất và đạt WMAPE thấp nhất:

  1. Quy tắc Bất biến — Luôn Bảo toàn Khóa product_code ở các Grain Cấp cao: Thực nghiệm đã chứng minh việc gộp mất mã product_code ở các Grain vĩ mô (như chỉ gộp theo Thương hiệu hay Vùng miền) làm mất bộ lọc Matched-Cohort YoY và gây san phẳng chéo giữa các dòng sản phẩm. Ngược lại, khi giữ khóa product_code trên 8 chiều (SKU Toàn quốc, SKU × Vùng C2, SKU × Khu vực C3, SKU × Kho, SKU × Kênh C1/C2, SKU × Chain, SKU × Subinv) và khử lệch tổng (Cross-Grain De-biasing), WMAPE cấp SKU toàn quốc giảm xuống còn 28,28%.
  2. Pha trộn Stein (Top-Down + Down-Top):
    • Tại 01_SKU_x_Subinventory (7.340 chuỗi) và 02_SKU_x_He_Thong (2.668 chuỗi): Kết hợp dự báo trực tiếp tại cấp dưới (Down-Top để giữ tín hiệu khuyến mãi và tăng trưởng cục bộ) với dự báo phân bổ từ mỏ neo 473 SKU gốc (Top-Down).
    • Tại 03_SKU_x_Store (244.783 – 273.115 cặp): Phân bổ từ dự báo SKU × Kho theo trọng số Empirical-Bayes 6 tháng:
      $$w_{i, k, s}^{\text{EB}} = \left(0{,}55 \cdot y_{i,k,s}^{(t-1)} + 0{,}30 \cdot \overline{y}_{i,k,s}^{(3M)} + 0{,}15 \cdot \overline{y}_{i,k,s}^{(6M)}\right) \times \left(\frac{n_{\text{active}, 3M}}{3}\right)^{1{,}2}$$
      đảm bảo tổng cộng dồn từ hơn 270.000 cặp cửa hàng lên khớp tuyệt đối 100% với tổng kho và tổng công ty.