Behind The Scenes

推荐系统研发全景与算法探索

深入探索数据挖掘过程、数据质量挑战、18维特征工程矩阵,以及基于 ItemCF 召回 + LightGBM 精排的工业级双阶段推荐架构。

1. 真实数据探索与质量审查 (EDA & Real Data Audit)

基于项目真实的 100万条销售交易数据 (sales.csv) 进行深度探索分析

真实数据集规模

1,000,000 条 交易记录,涵盖 200 个 SKU50,000 名注册顾客100 家门店。累计实现总销售额 $25,486,128.86(平均毛利率 40.0%)。

品牌与品类分布占比

Praline 榛果威化 ($6.66M, 26.15%) 与 White 白巧 ($6.07M, 23.82%) 领跑营收。品牌方面 Ferrero ($4.69M)Cadbury ($4.67M) 构成头部高销量双雄。

渠道与场景贡献

Airport 机场免税店 贡献最大营收 ($7.61M, 29.9%),Mall 购物中心占据 26.0%,Online 线上店 25.1%,Retail 零售店 19.1%。高频出行场景与赠礼需求极高。

📊 真实数据探索可视化看板 (Real Data EDA Visuals)

🍫 5大品类销售额贡献比例 (Category Revenue)
Praline 榛果夹心$6.67M (26.15%)
White 白巧克力$6.07M (23.82%)
Dark 黑巧克力$5.30M (20.79%)
Truffle 松露巧克力$3.92M (15.40%)
Milk 牛奶巧克力$3.28M (12.87%)
🏬 四大销售渠道营收占比 (Store Type Sales)
Airport 机场免税店$7.61M (29.87%)
Mall 购物中心$6.63M (26.01%)
Online 线上商城$6.39M (25.06%)
Retail 普通线下零售店$4.86M (19.06%)

🛠️ 6 大核心数据质量问题与工程治理体系 (Data Quality & Engineering Governance)

点击剖析

1. 极度数据稀疏性 (Matrix Sparsity)

通过 `eda.py` 实测,用户-物品交互矩阵稀疏度达 90.10%(50,000 名用户对 200 个 SKU)。多数用户仅有 1-2 次购买记录。

治理:采用神经网络 Embedding 隐向量与 GBDT 树打分拟合
点击剖析

2. 访客冷启动 (Cold-Start & Guests)

新访客(Guest)或全新注册用户在数据库中没有任何历史购买轨迹,传统的协同过滤(ItemCF)完全无法召回 Candidate。

治理:构建静态人口统计学默认画像(如年龄35、中性偏好)自动兜底
点击剖析

3. 类别未见值与未知映射 (OOV & Unknown)

推理或测试集中可能出现未曾见到的品牌、品类或渠道名称,容易导致分类特征映射崩塌或报 KeyNotFoundError。

治理:建立 `gender_map`, `brand_map` 统一兜底通道,未见值映射至 `Unknown`
点击剖析

4. 连续属性缺失与离群平滑 (Imputation)

部分新品的可可含量 (`cocoa_percent`) 存在缺失,用户年龄 (`age`) 偶发空值,影响连续数值计算。

治理:年龄按中位数 `35` 填充,规格与统计特征采用 `fillna(0.0)` 中性平滑
点击剖析

5. 样本极度不平衡 (Class Imbalance)

在百万级交易中,发生购买的正样本相比海量全量 Candidate 极其稀少,模型容易过度预测低概率。

治理:训练离线模型时实施 1:4 启发式负采样 (Negative Sampling) 平衡比例
点击剖析

6. 张量缩放与并发死锁 (Tensor Scaling & Lock)

连续特征量级跨度大(年龄18-70与重量50-200g),多线程环境下 PyTorch/Matplotlib 在云端极易死锁。

治理:实施 Min-Max 张量缩放,且全局强制 `OMP_NUM_THREADS=1` 单线程避锁

1.5 原始数据表模型与 10 行样例预览 (Raw Data Schema & Samples)

展示四张关联表的数据模式(ER 关系图)及每张表的真实前 10 行原始数据预览

数据表关联系数与星型模型架构 (Star Schema Relations)

products.csv
PK: product_id (200 SKUs)
customers.csv
PK: customer_id (50,000 Users)
stores.csv
PK: store_id (100 Stores)
FK 关联外键映射至核心事实表
sales.csv (核心事实表 - Fact Table)
包含 1,000,000 行记录,连接 product_id, customer_id, store_id 以及交易金额、数量与利润
下载 sales.csv 下载 products.csv 下载 customers.csv 下载 stores.csv 下载 calendar.csv
order_idorder_dateproduct_idstore_idcustomer_idquantityunit_pricediscountrevenuecostprofit
0RD000000012023-01-07P0080S093C040749514.430.1561.3342.7718.56
0RD000000022023-10-22P0173S065C020161312.010.0036.0319.0616.97
0RD000000032023-05-07P0115S078C048069210.020.0020.0410.299.75
0RD000000042024-06-23P0186S088C047901214.660.1026.3916.3510.04
0RD000000052024-09-24P0197S054C033950112.340.0012.347.944.40
0RD000000062024-03-29P0160S089C008918413.520.0054.0836.5917.49
0RD000000072023-02-26P0062S024C002897111.970.1010.777.163.61
0RD000000082023-11-03P0111S085C03807254.620.0023.1016.156.95
0RD000000092024-10-11P0135S029C00378647.880.0031.5219.9011.62
0RD000000102023-12-17P0069S056C04314838.880.0026.6418.198.45

2. 18维全量特征工程矩阵与筛选策略 (18-Dimensional Feature Pipeline)

展示算法精排输入特征列(cols_order)中完整 18 维特征的提取构建与筛选归因逻辑

🤔 为什么选择这 18 维特征?特征筛选与提取方法论 (Feature Selection Rationale)

在推荐系统的精排阶段,单纯依靠 ID 拟合极其容易陷入过拟合与数据稀疏瓶颈。我们基于领域业务洞察 (Domain Knowledge)数据统计交叉 (Statistical Aggregation),遵循以下 4 大筛选维度精准构建了 18 维特征矩阵:

  • ① 人口统计与属性偏好匹配 (Demographics Matching):不同年龄段(如年轻群体 vs 中老年)、性别及会员身份对可可含量黑度 (cocoa_percent) 及包装规格克重 (weight_g) 有极强偏好差异。
  • ② 用户消费力与折扣敏感度刻画 (Purchasing Power & Price Sensitivity):通过汇总用户历史总消费额 (`user_avg_revenue`) 和历史平均折扣率 (`user_avg_discount`),让模型区分高客单价倾向用户与折扣促销驱动型用户。
  • ③ 强高阶交叉交互特征 (User-Item Cross Interaction):这是提升 AUC 与精排准确率的关键!通过计算用户历史对特定商品、品牌、品类的累计购买次数,让模型直接捕捉“该用户对 Godiva 品牌的偏好度”或“对 Truffle 品类的购买粘性”。
  • ④ 上下文与时空情境特征 (Contextual Signals):机场免税店 (`Airport`) 与线上商城 (`Online`) 的用户即时购买意图迥异,搭配星期与月份字段捕捉季节性与周末消费热度。

📋 18 维特征清单一览 (Full 18-Feature Matrix)

1. User Profile user_age 用户连续年龄,归一化处理。用于捕捉对巧克力的甜度与可可黑度偏好。
2. User Profile user_gender 用户性别编码(Male/Female/Unknown),独热编码或分类编码输入。
3. User Profile user_loyalty 会员身份标志(0或1),会员群体具备更高的客单价和复购率。
4. Item Spec item_cocoa 可可百分比 (40%-90%) 连续归一化,黑巧 vs 奶巧的核心划分特征。
5. Item Spec item_weight 商品克重包装规格 (g),标示便携零食装还是家庭大礼包装。
6. Item Spec item_category 品类 Label Encoding (Praline, White, Dark, Truffle, Milk)。
7. Item Spec item_brand 品牌 Label Encoding (Ferrero, Cadbury, Lindt, Mars, Godiva等)。
8. Contextual store_type 消费场景渠道类型 (Airport, Mall, Online, Retail) 影响消费心理。
9. Contextual day_of_week 交易发生于星期几 (0-6),区分工作日犒劳还是周末休闲购物。
10. Contextual month 交易发生月份 (1-12),捕捉情人节、圣诞节等节日赠礼高峰。
11. User Aggs user_total_purchases 该用户历史累计下单总次数,刻画忠诚度与平台活跃度。
12. User Aggs user_avg_revenue 该用户历史订单的平均消费金额,精准量化用户的消费实力。
13. User Aggs user_avg_discount 该用户历史购买所享受的平均折扣率,量化价格促销敏感度。
14. Item Aggs item_total_sales 该商品的历史累计总销量,全局热度先验概率特征。
15. Item Aggs item_avg_discount 该商品的常态促销折扣力度,评估商品自身的促销属性。
16. Cross Interaction user_item_purchase_count 🔥核心特征:该用户过去对此特定商品 SKU 的重复购买次数。
17. Cross Interaction user_brand_purchase_count 🔥核心特征:该用户过去对此特定品牌的累计购买次数(品牌偏好)。
18. Cross Interaction user_category_purchase_count 🔥核心特征:该用户过去对此特定品类的累计购买次数(品类偏好)。

3. 多算法性能实验与实测对比 (Algorithm Benchmark)

对协同过滤、梯度提升树及深度神经网络进行统一指标评估与商业权衡

算法类别 (Algorithm) Precision@5 Recall@5 HitRate@5 推理延迟 (Latency) 商业应用定位 (Role in System)
Item-based CF 1.04% 2.87% 5.20% ⚡ 0.19 ms 召回层 (Retrieval):毫秒级从海量 SKU 筛选 Candidate
XGBoost Ranking 1.07% 2.51% 5.20% 2.96 ms 精排备选:高可解释性特征拟合
LightGBM Ranking 1.15% (最高) 2.65% 5.70% 3.09 ms 精排王者 (Ranking):高准确度与极速训练平衡
Neural NCF (PyTorch) 0.84% 1.99% 4.15% 0.50 ms 隐向量提取:解决深层非线性交叉与泛化

4. 工业级双阶段推荐架构动态演算沙盒 (Interactive Pipeline Sandbox)

点击按钮,动态演示全量 SKU 如何经过“ItemCF 召回”与“LightGBM 精排”打分输出

🎯 当前演示目标用户上下文 (Active User Context)
User ID: CUST_000001 (38岁 | 女性 | 线上商城渠道)
历史核心交互: Lindt 85% 黑巧、海盐特调
历史消费频次: 12 次
等待启动真实推理...
阶段 1:全量商品候选池 (Candidate Inventory) SKU Pool Size: 200 个真实巧克力产品

系统涵盖 200 个不同品牌、可可含量与克重的全量产品大盘候选集...

SKU-101 (Lindt Dark 85%) SKU-104 (Dark Sea Salt 70%) SKU-208 (Godiva Truffle) SKU-305 (Ritier Dark Almond) SKU-112 (Valrhona Cocoa 90%) SKU-402 (Patchi Espresso) ... (+194 全量真实商品)
阶段 2:ItemCF 协同过滤召回层 (Retrieval Stage) Latency: ~0.19 ms

结合目标用户 CUST_000001 历史购买记录,根据协同矩阵筛选出真实 Top 10 召回集:

点击上方按钮,触发真实后端 ItemCF 引擎召回...
阶段 3:LightGBM 实时精排与特征拼接打分 (Ranking Stage) Latency: ~3.0 ms

拼接目标用户画像(38岁女性)与商品物理属性,由真实 LightGBM 拟合预估点击转化概率:

点击上方按钮查看真实 LightGBM 模型预测概率打分输出