ctr_FM,FFM,deepffm,
一. 什么是ctr? one hot 特征没有大小关系,
ctr即点击率,在推荐系统中,通常是按照ctr来对召回的内容子集进行排序,然后再结合策略进行内容的分发。
二. ctr预估模型的发展。
ctr预估模型的公式:y = f(x), y的范围为[0,1],表示广告被点击的概率。
1. LR 海量高纬离散特征 LR是一个线性分类器,也就是说会忽略掉特征与特征之间的关联信息,
LR(logistics regression),是ctr预估模型的最基本的模型,也是工业界最喜爱使用的方案。LR的介绍这里就不细说了,介绍的教程随便一搜一大堆。
此时, ,其中
这里,我们定义一下, , 。
则:
LR的优势在于处理离散化特征,而且模型十分简单,很容易实现分布式计算。关于LR的变种也有许多,比如Google的FTRL,其实这些变种都可以看成:LR+正则化+特定优化方法。
LR的缺点也很明显,特征与特征之间在模型中是独立的,对于一些存在交叉可能性的特征(比如: 衣服类型与性别,这两个特征交叉很有意义),需要进行大量的人工特征工程进行交叉。虽然模型简单了,但是人工的工作却繁重了很多。而且LR需要将特征进行离散化,归一化,在离散化过程中也可能出现边界问题。这里便为GBDT+LR的方案进行了铺垫。
2. GBDT
GBDT,即梯度提升决策树,是一种表达能力比较强的非线性模型。具体模型的介绍,也可以google出一堆教程。所以这里就不做详细的推导了。
此时,
GBDT的优势在于处理连续值特征,比如用户历史点击率,用户历史浏览次数等连续值特征。而且由于树的分裂算法,它具有一定的组合特征的能力,模型的表达能力要比LR强。GBDT对特征的数值线性变化不敏感,它会按照目标函数,自动选择最优的分裂特征和该特征的最优分裂点,而且根据特征的分裂次数,还可以得到一个特征的重要性排序。所以,使用GBDT减少人工特征工程的工作量和进行特征筛选。
GBDT善于处理连续值特征,但是推荐系统的绝大多数场景中,出现的都是大规模离散化特征,如果我们需要使用GBDT的话,则需要将很多特征统计成连续值特征(或者embedding),这里可能需要耗费比较多的时间。同时,因为GBDT模型特点,它具有很强的记忆行为,不利于挖掘长尾特征,而且GBDT虽然具备一定的组合特征的能力,但是组合的能力十分有限,远不能与dnn相比。
3. FM 与 FFM 如果想要更深入的了解(美图团队所写的fm和ffm) https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html
在LR部分,我们提及到了LR不能自动处理交叉特征。LR是一个线性分类器,也就是说会忽略掉特征与特征之间的关联信息,而FM则是在这个基础上进改进。旨在解决稀疏数据下的特征组合问题.
FM的模型公式为:
在逻辑斯特函数里面的公式可以看成两部分,一部分是我们所熟悉的线性回归函数,而第二部分则是二次交叉项。所以FM处理特征间二次交叉的能力。
但是二次项权重 需要我们去存储一个二维矩阵的变量,而因为特征是大规模离散的,这个二维矩阵的维度可能很大。而FM的作者利用矩阵分解的原理,将这个权重矩阵进行分解,即 。
则FM的公式变为:
但是这里,对于特征 , 与 , 与 ,都是使用 去和 、 做内积。但是对于不同的特征组合,比如天气与地点,天气与性别,关联的程度是不一样的,都使用同样的向量去与不同的特征做内积,会带来明显的信息损失。所以引出了FFM(field FM)。
FFM的模型公式为:
fild指的是对于商品的末级品类编码生成了550个特征,这550个特征都是说明商品所属的品类,因此它们也可以放到同一个field中。简单来说,同一个categorical特征经过One-Hot编码生成的数值特征都可以放到同一个field,包括用户性别、职业、品类偏好等。在FFM中,每一维特征 xi,针对其它特征的每一种field fj,都会学习一个隐向量 Vi f j。因此,隐向量不仅与特征相关,也与field相关。
FM的优点相对于LR在于拥有处理二次交叉特征的能力,而且它是可以实现线性的时间复杂度的(具体看美团的文章),模型训练也十分快。
而FFM则是在FM的基础上,考虑了特征交叉的field的特点,但是也导致它没有办法实现线性的时间复杂度,模型训练要比FM慢一个量级,但是效果会比FM来得更好。
代码实现:https://blog.csdn.net/guanbai4146/article/details/80139806
4. GBDT+(LR, FM, FFM)
前面提及到了GBDT适合处理连续值特征,而LR,FM,FFM更加适合处理离散化特征。GBDT可以做到一定程度的特征组合,而且GBDT的特征组合是多次组合的,不仅仅是FM与FFM这样的二阶组合而已。同时,GBDT具备一定的特征选择能力(选择最优的特征进行分裂)。
在facebook 2014年的一篇论文中,提及到GBDT+LR的解决方案。即先使用GBDT对一些稠密的特征进行特征选择,得到的叶子节点,再拼接离散化特征放进去LR进行训练。在方案可以看成,利用GBDT替代人工实现连续值特征的离散化,而且同时在一定程度组合了特征,可以改善人工离散化中可能出现的边界问题,也减少了人工的工作量。
而kaggle的ctr预估比赛中,台大的团队参考fb,使用了gbdt+ffm的方案夺冠。
此时GBDT+LR模型的公式为:
代码实现:https://www.jianshu.com/p/96173f2c2fb4
5. MLR
MLR是由阿里团队提出的一种非线性模型。它等价于聚类+LR的形式。
我们定义:
则MLR的公式为:
相当于将X进行聚类,聚成m类,然后每一个聚类单独训练一个LR。
MLR相对于LR拥有更好的非线性表达能力,算是LR的一种拓展。
但是MLR与LR一样,也需要较大的特征工程处理,而且这个模型本身属于非凸模型,需要预训练,可能出现不收敛的情况。
deepfm https://zhuanlan.zhihu.com/p/33479030
nfm https://zhuanlan.zhihu.com/p/33587540
NFFM https://zhuanlan.zhihu.com/p/38499275
https://www.youtube.com/watch?v=NV1tkZ9Lq48
https://zhuanlan.zhihu.com/p/35046241
https://github.com/mJackie/RecSys