CTR 中 LR、GBDT + LR、FM 和 DNN 比较

最近在知乎上看到这个问题,觉得很有意思,顺便整理总结了一下各位大佬的回答。

LR

优点:LR,算法简单,容易并行和工程化实现。FTRL 是 LR 在线学习版本,目前广泛应用在工业界。优点就是简单,能够处理超高纬度稀疏问题,能够做到实时。

缺点:因为 LR 是线性模型,基本靠人工特征工程,来选择交叉特征。一般都是 wrapper 方法选择,每轮可能都要进行很长时间的运算,理论上要进行 2 的 n 次方轮(n 是特征数),但因为离线分析的指标和线上效果不一定是强相关的,所以分析起来有些痛苦。更头疼的是点击率预估的数据变化是比较大的,线上线下结果不一定对应,离线选出来的特征,参数都不一定适用于未来。而且在线预测时,因为大量的特征都要与广告ID交叉,所以在线拼装特征的成本很高,可能会存在性能问题。

GBDT + LR

优点:GBDT 加 LR。GBDT 对连续特征划分能力超强,主要来提取特征,再加上一些稀疏特征,补足了 LR 的不足。优点是把 LR 中人工构造特征的大部分工作给做了。

缺点:离线处理和在线处理都复杂。不同于比赛,在实践中 ID 类特征还是非常重要的,广告 ID 可能就有几十万个,树的深度很难控制,模型实现也很难。另外,在点击率预估中如果特征本身没问题,加上去一般都不会降效果,所以这种做法有待验证。

DNN

优点:优点是拟合能力强,样本足够的情况下一般效果都不会差。本质上讲,该方法是通过前面多层的隐藏网络学习抽象特征(特征之间的组合),由数据驱动的模式学习到了人工特征工程难以学到的隐含特征,并在最后输出层使用上述抽象得到的特征完成最终的学习任务(全连接层)。

缺点:计算复杂,工程化和实时化难度大。而且模型如果哪天出问题了(线上 AUC 突降),难以排查。

FM

优点:相较与 LR,能够捕捉特征之间的交叉关系。原理是在一阶拟合的基础上加入二阶拟合,可以自动的学习任意两维特征的交叉。而且,交叉是以 embedding 向量的形式表达。跟 LR 一样,他可以吞吐超大规模的稀疏特征空间的样本集合。这种形式可以比较好的提高模型的表达能力,把性能和学习非线性结构的能力结合在一起,在工业界应用的也很广泛。

参考