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=1∑n−1j2=j1+1∑nwh(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)
(wj1⋅wj2) 取代了单一的权重系数
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=1∑nj2=j1+1∑n(wj1⋅wj2)xj1xj2(2)
本质上,FM 引入隐向量的做法,与矩阵分解用隐向量代表用户和物品的做 法异甴同工
∘
_{\\circ}
∘ 可以说, FM 是将矩阵分解隐向量的思想进行了进一步扩展, 从单纯的用户、物品隐向量扩展到了所有特征上。
FM 通过引入特征隐向量的方式, 直接把 POLY2 模型 n 2 n^{2} n2 级别的权重参数数 量减少到了 n k ( k n k ( k nk(k 为隐向量维度, n > > k ) n>>k) n>>k) 。在使用梯度下降法进行 FM 训练的过 程中,FM 的训练复杂度同样可被降低到 n k n k nk 级别,极大地降低了训练开销。
隐向量的引入使 FM 能更好地解决数据稀疏性的问题。举例来说, 在某商品 推荐的场景下,样本有两个特征, 分别是频道(channel)和品牌 ( brand), 某训练样本的特征组合是(ESPN, Adidas)
。在 POLY2 中, 只有当 ESPN
和 Adidas
同时出现在一个训练样本中时, 模型才能学到这个组合特征对应的权重; 而在 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 2012−2014 年前后,成为业界主流的推荐模型之一。
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 )这一概念, 使模型的表达能力更强。 以上是关于19推荐系统10从FM到FFM-自动特征交叉的解决方案的主要内容,如果未能解决你的问题,请参考以下文章 搜广推 LR -> POLY2 -> FM -> FFM (从单阶特征到二阶交叉特征的引入及改进)
∅
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