STM32驱动红外PM2.5传感器同步采样实战指南
2026/9/26 15:29:43
在电商推荐系统中,转化率(CVR)预估一直是个让人头疼的问题。想象一下这样的场景:用户看到商品展示(曝光)→ 点击商品详情 → 最终下单购买。传统做法是直接用点击后的数据训练CVR模型,但这里藏着两个大坑:
**样本选择偏差(SSB)**就像用高考成绩预测大学表现——训练时只用"考上大学的学生"数据,但实际要预测的是"所有高中生"的未来表现。具体到CVR预估:
**数据稀疏性(DS)**的问题更直观。以淘宝数据为例:
2018年阿里妈妈团队提出的ESMM模型,巧妙地用概率论解决了这两个难题。其核心思想可以用一个简单公式表达:
p(转化|曝光) = p(点击|曝光) × p(转化|点击)这个等式揭示了CTR(点击率)和CVR(点击转化率)的天然关联性。
**为什么不直接相除?**有人可能想到用 pCTCVR/pCTR 计算pCVR。但实测会发现:
ESMM的模型结构包含三个关键组件:
# 简化版ESMM核心代码 class ESMM(tf.keras.Model): def __init__(self): super().__init__() self.shared_bottom = DNN([256, 128]) # 共享底层 self.ctr_tower = DNN([64, 1], activation='sigmoid') self.cvr_tower = DNN([64, 1], activation='sigmoid') def call(self, inputs): shared = self.shared_bottom(inputs) ctr = self.ctr_tower(shared) cvr = self.cvr_tower(shared) ctcvr = ctr * cvr # 概率连乘 return ctr, ctcvrESMM的损失函数包含两部分:
L = L_CTR + L_CTCVR这种设计实现了:
虽然ESMM解决了基础问题,但实际场景中用户行为更复杂。阿里2020年提出的ESM2观察到:
ESM2将用户行为拆解为:
最终CVR计算公式变为:
CVR = Y2*Y3 + (1-Y2)*Y4ESM2的主要改进:
# ESM2的概率计算示例 def calculate_cvr(y1, y2, y3, y4): return y1 * (y2*y3 + (1-y2)*y4)在淘宝公开数据集上的AUC提升:
| 模型 | CVR AUC | CTCVR AUC |
|---|---|---|
| 传统模型 | 0.682 | 0.715 |
| ESMM | 0.703 (+3.1%) | 0.732 (+2.4%) |
| ESM2 | 0.712 (+1.3%) | 0.741 (+1.2%) |
当前业界的最新探索集中在:
在实际业务中,ESMM系列模型已成为电商推荐的标配。我在某跨境电商项目落地ESM2时,通过引入"加入比价"作为新行为节点,使CVR预估准确率提升了5.7%。关键是要根据业务特点设计合适的行为分解策略,而不是机械照搬论文方案。