RetailPulse BI

RetailPulse BI

零售智慧分析平台

從原始交易資料到 ML 驅動的業務洞察 — 完整的資料工程與機器學習 Portfolio

397,884

筆交易資料

4,338

位活躍客戶

11

個 ML 模型

9

個分析頁面

資料流程架構

原始資料

397,884 rows

UCI CSV

ETL / DuckDB

17 tables

DuckDB 1.5

特徵工程

RFM · MBA

Time Series

ML 訓練

11 models

6 paradigms

FastAPI

FastAPI

30+ routes

Next.js

Next.js 14

9 pages

Data Layer

DuckDB 1.5 · 17 tables · 397K rows

ML Stack

PyTorch · scikit-learn · statsmodels · gensim

API

FastAPI 0.138 · Pydantic v2 · 30+ routes

Frontend

Next.js 14 · TypeScript · Recharts · shadcn/ui

NLP

SBERT (all-MiniLM-L6-v2) · TF-IDF · LSA

CF

ALS (implicit 0.7) · NMF · Item2Vec

ML 技術矩陣

六大學習範式 — 完整覆蓋

監督式學習

CLV Regressor + Churn Classifier

3-layer MLP · BCEWithLogitsLoss / MSELoss

R²=0.875 AUC=1.0

RFM 6-dim features → predict revenue CLV and 180-day churn probability per customer.

PyTorch 2.xStandardScalerDuckDB
非監督式學習

Customer Autoencoder

Encoder 6→32→16→8 Decoder 8→16→32→6

anomaly_rate=0.5%

Unsupervised anomaly detection via reconstruction error threshold (mean + 2×std).

PyTorchMSELossMinMaxScaler
序列學習

LSTM Forecaster

LSTM(1→32, 2 layers) + Linear(32→1)

MAPE=36.95%

Sliding window (30 days) deep sequence model for daily revenue forecasting.

PyTorch LSTMMinMaxScalerLog-transform
自監督學習

Item2Vec

Word2Vec Skip-Gram vector_size=64 window=5

vocab=3,665 products

Learn product co-purchase embeddings from customer purchase sequences — no labels needed.

gensim 4.422,870 sequencesDuckDB FLOAT[64]
遷移學習

SBERT Product Encoder

all-MiniLM-L6-v2 dim=384 L2-normalized

cosine sim > 0.79

Zero-shot transfer: encode product descriptions into semantic space for search & similarity.

sentence-transformersHuggingFaceCosine Search
強化學習

Thompson Sampling Bandit

Beta(α,β) per arm 5 arms argmax(θ~Beta)

5 recommendation strategies

Online RL: select best recommendation strategy per request, update with user feedback.

Beta DistributionJSON state5 arms

其他模型 / Additional Models

SARIMA(1,1,1)(0,1,1,7)Holt-Winters ETSALS Collaborative FilteringNMF RecommenderTF-IDF + LSA (20 clusters)K-Means RFM SegmentationApriori MBA (88 rules)Two-proportion z-testWelch t-test

逐步功能導覽

1

儀表板

KPI 總覽、月營收趨勢、國家分布、Top 商品 / Business KPIs, revenue trends, country distribution

前往頁面
DuckDB ETLRFM CalcFastAPIRecharts
  • £891萬 總營收 · 25,900 筆發票 · 4,338 位客戶
  • 月營收折線圖 + 國家收入長條圖
  • 即時 ML 模型狀態卡(共 11 個已訓練模型)
2

客戶分析

RFM 分群、互動散點圖、客戶個人資料 / RFM segmentation, interactive scatter, customer profiles

前往頁面
K-Means RFMQuintile ScoringDuckDB Query
  • R/F/M 三維五分位打分 → Champions / Loyal / At Risk / Lost
  • 互動式 3D 散點圖:選點查看客戶詳情
  • 個人 Profile:RFM + 預估 CLV + 推薦商品連結
3

留存分析

月度同期群組留存矩陣 / Monthly cohort retention matrix visualization

前往頁面
Cohort AnalysisDuckDB WindowHeatmap
  • 15+ 月份同期群組 × 12 個月追蹤期
  • 熱力圖:深色 = 高留存,最佳群組留存率 > 40%
  • 清楚呈現客戶生命週期的自然衰減曲線
4

購物籃

Apriori 關聯規則挖掘 / Association rule mining with interactive filters

前往頁面
AprioriFP-Growthmlxtend 0.23
  • 88 條關聯規則 · 可調整 min_lift / min_confidence
  • Support × Confidence × Lift 三指標篩選
  • 最高 Lift 商品組合:禮物包裝類別 (Lift > 40)
5

智慧推薦

多策略推薦 · ALS CF · SBERT 語意搜尋 / Multi-strategy recs + semantic search

前往頁面
ALS (implicit)SBERTThompson BanditItem2Vec
  • 協同過濾:ALS 64-dim 潛因子 × 4,338 客戶預快取
  • SBERT 語意搜尋:輸入自然語言找到最相關商品
  • Thompson Sampling:5 策略自動優化 CTR
6

銷售預測

三模型時序預測 · SARIMA · ETS · LSTM / Three-model time series forecasting

前往頁面
SARIMAHolt-Winters ETSPyTorch LSTMstatsmodels
  • SARIMA(1,1,1)(0,1,1,7):MAPE=70%(資料尾段跳躍)
  • ETS(mul):MAPE=40%(最佳統計模型)
  • LSTM 2-layer:MAPE=37%(深度學習最優)
7

ML 洞察

流失預測 · CLV 回歸 · Autoencoder 異常偵測 / Churn, CLV, anomaly detection

前往頁面
MLP ChurnCLV RegressionAutoencoderPyTorch
  • Churn Classifier:180 天流失標籤 → AUC=1.0(確定性標籤)
  • CLV Regressor:預測終身價值 → R²=0.875
  • Autoencoder:重建誤差異常偵測 → anomaly_rate=0.5%
8

A/B 測試

完整 A/B 實驗框架 · 統計顯著性 / Full A/B testing framework with stats

前往頁面
z-testWelch t-testCohen's dBonferroni
  • 兩比例 z-test:可即時建立實驗、記錄事件
  • 樣本量計算機:輸入 baseline_rate + MDE → 所需樣本數
  • 效果量 + p-value + lift:完整統計報告
可重現性驗證

完整流程可一鍵重跑

1

安裝依賴

~3 分鐘
make install && make install-dl
2

ETL 資料處理

~1 分鐘
make etl
3

訓練所有模型

~10 分鐘
make train-all
4

啟動 API

立即
make api
5

啟動前端

立即
make frontend

確認狀態:

make status