19推荐系统10从FM到FFM-自动特征交叉的解决方案

Posted 炫云云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19推荐系统10从FM到FFM-自动特征交叉的解决方案相关的知识,希望对你有一定的参考价值。

1、前言

逻辑回归模型表达能力不强的问题,会不可避免地造成有效信息的损失。在仅利用单一特征而非交叉特征进行判断的情况下,有时不仅是信息损失的问题,甚至会得出错误的结论。著名的“辛普森悖论”用一个非常简单的例子,说明了进行多维度特征交叉的重要性。

基础知识一什么是辛普森悖论

在对样本集合进行分组研究时,在分组比较中都占优势的一方, 在总评中有时反而是失势的一方,这种有悖常理的现象,被称为“辛普森悖论”。下面用一个视频推荐的例子进一步 说明什么是“辛普森悖论”。

假设表1和表2所示为某视频应用中男性用户和女性用户点击视频的数据。


表 1 : 表1: 1:

表 2 : 女 性 用 户 表2:女性用户 2:
从以上数据中可以看出,无论男性用户还是女性用户,对视频B的点击率都高于视频A,显然推荐系统应该优先考虑向用户推荐视频B。

那么,如果忽略性别这个维度,将数据汇总( 如表3所示)会得出什么结论呢?


表 3 : 数 据 汇 总 表3:数据汇总 3:
在汇总结果中,视频A的点击率居然比视频B高。如果据此进行推荐,将得出与之前的结果完全相反的结论,这就是所谓的“辛普森悖论”。

在“辛普森悖论”的例子中,分组实验相当于使用“性别”+“视频id”的组合特征计算点击率,而汇总实验则使用“视频id”这一单一特征计算点击率。汇总实验对高维特征进行了合并,损失了大量的有效信息,因此无法正确刻画数据模式。

逻辑回归只对单–特征做简单加权,不具备进行特征交叉生成高维组合特征的能力,因此表达能力很弱,甚至可能得出像“辛普森悖论”那样的错误结论。因此,通过改造逻辑回归模型,使其具备特征交叉的能力是必要和迫切的。

2、 POLY2模型——特征交叉的开始

针对特征交叉的问题,算法工程师经常采用先手动组合特征,再通过各种分析手段筛选特征的方法,但该方法无疑是低效的。更遗憾的是,人类的经验往往有局限性,程序员的时间和精力也无法支撑其找到最优的特征组合。因此,采用POLY2模型进行特征的“暴力”组合成了可行的选择。

POLY2模型的数学形式如(式1)所示。
∅ POLY2 ⁡ ( w , x ) = ∑ j 1 = 1 n − 1 ∑ j 2 = j 1 + 1 n w h ( j 1 , j 2 ) x j 1 x j 2 (1) \\emptyset \\operatorname{POLY2}(w, x)=\\sum_{j_{1}=1}^{n-1} \\sum_{j_{2}=j_{1}+1}^{n} w_{h\\left(j_{1}, j_{2}\\right)} x_{j_{1}} x_{j_{2}}\\tag{1} POLY2(w,x)=j1=1n1j2=j1+1nwh(j1,j2)xj1xj2(1)
可以看到, 该模型对所有特征进行了两两交叉(特征 x j 1 x_{j_{1}} xj1 x j 2 ) \\left.x_{j_{2}}\\right) xj2), 并对所有的特征组合赋予权重 w h ( j 1 , j 2 ) ∘ w_{h\\left(j_{1}, j_{2}\\right) \\circ} wh(j1,j2) POLY2 通过暴力组合特征的方式, 在一定程度上解决了特征组合的问题。POLY2模型本质上仍是线性模型,其训练方法与逻辑回归并无区别,因此便于工程上的兼容。

但POLY2模型存在两个较大的缺陷。

(1)在处理互联网数据时,经常采用one-hot编码的方法处理类别型数据,致使特征向量极度稀疏,POLY2进行无选择的特征交叉——原本就非常稀疏的特征向量更加稀疏,导致大部分交叉特征的权重缺乏有效的数据进行训练,无法收敛。

(2)权重参数的数量由 n n n直接上升到 n 2 n^2 n2​​,极大地增加了训练复杂度。

3、 FM模型——隐向量特征交叉

为了解决 POLY2 模型的缺陷, 2010 年,Rendle 提出了 FM 模型 。

(式 2) 是 FM 二阶部分的数学形式, 与 POLY2 相比, 其主要区别是用两个向量的内积 ( w j 1 ⋅ w j 2 ) \\left(w_{j_{1}} \\cdot w_{j_{2}}\\right) (wj1wj2)​ 取代了单一的权重系数 w h ( j 1 , j 2 ) w_{h\\left(j_{1}, j_{2}\\right)} wh(j1,j2)​ 。具体地说, F M \\mathrm{FM} FM​​ 为每个特 征学习了一个隐权重向量 ( latent vector )。在特征交叉时,使用两个特征隐向量的内积作为交叉特征的权重。
∅ FM ⁡ ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n ( w j 1 ⋅ w j 2 ) x j 1 x j 2 (2) \\emptyset \\operatorname{FM}(w, x)=\\sum_{j_{1}=1}^{n} \\sum_{j_{2}=j_{1}+1}^{n}\\left(w_{j_{1}} \\cdot w_{j_{2}}\\right) x_{j_{1}} x_{j_{2}}\\tag{2} FM(w,x)=j1=1nj2=j1+1n(wj1wj2)xj1xj2(2)
本质上,FM 引入隐向量的做法,与矩阵分解用隐向量代表用户和物品的做 法异甴同工 ∘ _{\\circ} ​ 可以说, FM 是将矩阵分解隐向量的思想进行了进一步扩展, 从单纯的用户、物品隐向量扩展到了所有特征上。

FM 通过引入特征隐向量的方式, 直接把 POLY2 模型 n 2 n^{2} n2 级别的权重参数数 量减少到了 n k ( k n k ( k nkk 为隐向量维度, n > > k ) n>>k) n>>k) 。在使用梯度下降法进行 FM 训练的过 程中,FM 的训练复杂度同样可被降低到 n k n k nk 级别,极大地降低了训练开销。

隐向量的引入使 FM 能更好地解决数据稀疏性的问题。举例来说, 在某商品 推荐的场景下,样本有两个特征, 分别是频道(channel)和品牌 ( brand), 某训练样本的特征组合是(ESPN, Adidas)。在 POLY2 中, 只有当 ESPNAdidas 同时出现在一个训练样本中时, 模型才能学到这个组合特征对应的权重; 而在 FM 中,ESPN 的隐向量也可以通过(ESPN,Gucci)样本进行更新, Adidas 的隐向量也可以通过(NBC, Adidas)样本进行更新, 这大幅降低了模型对数据稀疏性的要求 ∘ _{\\circ} ​​​​

甚至对于一个从未出现过的特征组合 ( N B C , G u c c i ) (\\mathrm{NBC}, \\mathrm{Gucci}) (NBC,Gucci), 由于模型之前已经分别学习过 N B C \\mathrm{NBC} NBC 和 Gucci 的隐向量, 具备了计算该特征组合权重的能力, 这是 POLY2 无法实现的。相比 POLY2, FM 虽然丢失了某些具体特征组合的精确记忆能力,但是泛化能力大大提高。

在工程方面,FM 同样可以用梯度下降法进行学习, 使其不失实时性和灵活性。相比之后深度学习模型复杂的网络结构导致难以部署和线上服务, FM 较容易实现的模型结构使其线上推断的过程相对简单, 也更容易进行线上部署和服务。因此, FM 在 2012 − 2014 2012-2014 20122014​​​​​​ 年前后,成为业界主流的推荐模型之一。

4、 FFM模型——引入特征域的概念

2015 年,基于 F M \\mathrm{FM} FM​ 提出的 F F M \\mathrm{FFM}^{} FFM​ 在多项 C T R \\mathrm{CTR} CTR​ 预估大赛中夺魁, 并被 Criteo、美团等公司深度应用在推荐系统、CTR 预估等领域。相比 F M \\mathrm{FM} FM​ 模型,FFM 模型引入了特征域感知(field-aware )这一概念, 使模型的表达能力更强。
∅ FFM ⁡ ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n ( w j 1 , f 2 ⋅ w j 2 , f 1 ) x j 1 x j 2 (3) \\emptyset \\operatorname{FFM}(\\boldsymbol{w}, \\boldsymbol{x})=\\sum_{j_{1}=1}^{n} \\sum_{j_{2}=j_{1}+1}^{n}\\left(\\boldsymbol{w}_{j_{1}, f_{2}} \\cdot \\boldsymbol{w}_{j_{2}, f_{1}}\\right) x_{j_{1}} x_{j_{2}}\\tag{3} FFM(w,x)=j1以上是关于19推荐系统10从FM到FFM-自动特征交叉的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

搜广推 LR -> POLY2 -> FM -> FFM (从单阶特征到二阶交叉特征的引入及改进)

推荐系统——FFM模型点击率CTR预估(代码,数据流动详细过程)

19推荐系统12FM——TensorFlow2实现

推荐系统实践与思考-20201107

坠入深渊的传统之发展——FM、FFM、GBDT+LR

推荐系统POLY2FMFFM模型的进化之路