为什么在大厂工业级精排场景中树模型应用较少?
树模型无法适应大量的新数据
- 问题:在电商等场景中,每天有大量新商品涌现,模型需要快速适应新数据。
- 树模型的局限性:树模型通常需要全量重新训练(retrain),无法高效支持实时更新和增量学习。
- 对比:深度模型(如DNN)支持在线学习和增量更新,更适合动态变化的场景。
实时特征更新滞后导致CTR预估偏差扩大
- 问题:在推荐系统中,实时特征(如用户最近点击行为)对CTR预估至关重要。
- 树模型的局限性:树模型对实时特征的更新滞后,导致预估偏差扩大,影响推荐效果。
- 对比:深度模型可以整合实时特征,支持更精确的CTR预估。
工程化致命伤
- 模型更新延迟:
- 树模型:通常需要日级别更新,无法满足实时性要求。
- 深度模型:支持小时级别甚至分钟级别的更新,更适合在线推荐场景。
- 特征存储爆炸:
- 树模型:需要存储大规模特征交叉信息,存储成本高,复杂特征交叉的成本可能是深度模型的10倍以上。
- 深度模型:通过Embedding技术压缩特征,大幅降低存储成本。
- 在线服务时延:
- 树模型:复杂树结构导致预估延迟较高,可能突破50ms的在线服务时延红线。
- 深度模型:通过GPU加速和模型优化,可以显著降低预估延迟。
树模型仍然适合的落地场景
- 特点是静态特征集合、混合特征类型、样本量较少
- 商品生命周期预测
- 次日留存预测
- 冷启动流量分配
树模型在Kaggle比赛中的优势
- 静态数据集:Kaggle比赛通常提供固定数据集,特征和样本分布稳定。
- 适合处理结构化特征:树模型适合处理结构化特征,对高特征设计需求场景表现优异。
- 阿里妈妈算法大赛往事:2018年阿里妈妈算法大赛冠军通过样本分布调整 + LightGBM + 简洁的特征构造代码夺冠,展示了树模型在静态数据集上的强大能力。
推荐项目中不加ID特征,仅用树模型与ESMM模型性能相差不大的原因
- 原因:树模型(如XGBoost、LightGBM)对结构化特征(如用户行为、商品属性等)的处理能力较强,而深度神经网络(如ESMM)更擅长处理高维稀疏的ID类特征。
- 补充:如果推荐场景的特征主要为结构化特征而非ID类特征,树模型的效果可能接近深度模型,因为树模型的特征分桶和分割能力足以捕捉到结构化特征中的非线性关系。
树模型如何进行特征选择
- 特征重要性:XGBoost和LightGBM自带函数可以直接查看特征重要性。
- 随机扰乱特征:通过随机打乱特征值观察模型性能(如AUC)下降程度。
- SHAP值分析:使用SHAP库分析每个特征对模型预测的贡献和重要性。
树模型如何处理文本关键字特征(除Embedding外)
- 聚类+编码:先对文本进行聚类,再将聚类结果编码为One-Hot特征。
- 全局稀疏One-Hot+卡方检验:对文本关键字进行全局One-Hot编码,然后使用卡方检验筛选Top-K重要特征。
多值离散特征在树模型中的处理
- 多值One-Hot编码:将多值离散特征进行One-Hot编码,生成多个二元特征。
- 频率编码:统计每个值的出现频率,将频率值作为特征输入模型。
商品Embedding作为ID特征加入树模型无业务提升的原因
- Embedding不适合树模型:Embedding是一个整体特征,树模型无法有效利用其低维表示。
- 分割反常识:树模型通过单维分割特征,而Embedding的每一维单独使用意义不大。
- 数据穿越:如果离线有提升但业务无提升,可能是数据泄露或穿越问题。
XGBoost回归任务中如何实现单调性约束
- 参数设置:使用
monotone_constraints
参数,指定某个特征对输出的单调性(如递增或递减)。 - 使用场景:适用于需要对某些特征施加业务约束的回归任务,如价格与需求的关系。
LightGBM训练CTR模型时训练集和验证集AUC持续小幅增长的原因
- 信息量充足:输入特征包含足够的信息,模型尚未收敛。只要验证集AUC增长,可以继续训练直至收敛。
- 学习率不合适:如果学习率较小,模型收敛速度变慢,可能导致AUC持续增长。可以尝试使用更大的学习率,但可能导致过早收敛和效果变差。
Lgb训练的排序模型更容易推荐出热门的item
-
原因:因为热度特征很强,这种情况需要对热门进行采样处理吗?
-
回答:树模型可以对样本进行reweight,降低热门物品的权重。