调频
线性模型的二次特征组合
$w_ij$是固定的。
对于n个特征的模型,与组合前的参数订单相比增加订单的是$n^2$ :
n个特征组合为n(n-1 )/2,例如) n=) 1000个特征,增加近50万个参数。
怎么才能减少参数?
概要
因子分解机(Factorization Machine )又称分解机。
以线性二次特征组合模型为基础,在稀疏数据条件下解决特征组合问题。
假设函数:
其中
上面的第一个表达式表示数据的假设函数。
(特征的个数,I )第I个特征。
第$w_i$个特征的权重参数、第$x_i$个特征的数据值、第$v_i$个特征的嵌入式向量。
$ $ :对第I,j个特征的嵌入式向量进行内积,得到标量值。 只与特征有关,与样品无关。 也就是说,具体的两个特征组合的权重是恒定的,所有特征两个组合的每个组合的权重是恒定的。
$x_i x_j$,第j个特征对应于数据值的乘积,并且特征首先被转换为数字。
在第二个公式中:
k表示嵌入式向量的长度
部署原因:
1、弥补线性模型稀疏时组合特征学习不足的问题(线性模型假设模型彼此独立,只学习了一阶关系)。
实际上,特征之间有关联。
2、解决二级特征组合问题
学习两个特征模型,每两个特征一个参数w。
参数多的话,n维的特征是学习n(n-1 )/2个参数
稀疏性的问题,即使将实际的数据乘以2也往往是0,无法学习。
原理:
每个特征都有相应大小为k的一维隐向量,通过学习FM模型获得。
两个特征所表示的权重被这两个特征的内积所取代。 w(I,j )=v ) I ) v ) j ) v是k维。
导出
降低责任度:
但经过一些数学变换,复杂度从$o(n^2) $下降到$o ) nf ) $
代码
几个问题
为什么调频比线性二两组合更好?
线性特征由两个特征组合而成,FM是分解得分值的角度分割的隐含特征。
两种组合的特点有两个问题。 一个是计算量的问题,另一个是数据稀疏的问题。
调频正好可以解决这两个问题,计算量呈指数减少,有效解决数据稀疏问题。
调频泛化能力强的原因
虽然LR学习了与LR中手动特征组合相比组合两个特征的单独权重值,但是FM巧妙地将单独权重划分为两个。 一个是特征I的嵌入式表示,另一个是特征j的表示,通过使用内积进行乘法运算,表现出两个特征I、j组合的新权重。
也就是说,权重是对应于特征的组合还是对应于某个特征,LR选择前者,FM选择后者,因此FM更加统一。
学习LR模型时如果没有出现两个特征的组合,$W_i,j$就不能学习。
在调频中,嵌入式几乎没有学不到的事情,只要I的特征和其他特征出现过$V_i$就可以学习到。
综上所述,调频泛化能力更高。
在什么情况下容易过度泛化
矩阵非常稀疏,高秩时容易过度泛化(是FM和DNN模型的共同缺点)。
查询项矩阵稀疏、高通道时(用户有特殊爱好、项小等),很难非常高效地学习低维显示。
在这种情况下,大多数查询项没有任何关系。 但是,由于dense embedding的大多数查询项预测值不是0,因此建议过度泛化,并建议不太相关
时间复杂度o(kn ) ) ) ) ) ) )。
FM :基于公式改写时间的复杂度从o(kn )2) )降低到o(kn )
调频
FM根据事先的规则将特征分成多个场(场),并且特征xi属于一个特定场f。
组合两个特征xi、xj时,用与对方对应的场对应的隐藏向量建立内积!
fi、fj是分别与特征xi、xj对应的场编号。
调频与调频的比较
虽然FM可以对高阶特征的组合进行建模,但是实际上由于计算复杂度,通常仅使用高阶特征的组合。
对于高阶特征的组合,我们的自然想法是被多层神经网络DNN解决,即FFM。
DFM
解决了低阶特征和高阶特征组合的问题。
层结构
输入图层-稀疏特征图层:为“删除嵌入式”图层提供输入。
为调频层提供低阶特性输入。
嵌入嵌入层:实现稀疏向量压缩为低维稠密向量。
为调频层提供组合特征输入
为DNN层提供全连接输入。
DNN隐藏层:由高阶特征组合隐藏的层。
f
M层:负责低阶特征提取Wide&Deep和DeepFM比较
总结下wide&deep和DeepFM的异同:
1)两者的DNN部分模型结构相同,DNN部分负责二阶以上的高阶特征交叉;
2)wide&deep需要做特征工程,二阶特征交叉需要靠特征工程来实现,通过wide部分发挥作用;
3)DeepFM完全不需要做特征工程,直接输入原始特征即可,二阶特征交叉靠FM来实现,并且FM和DNN共享embedding;
4)从试验结果来看DeepFM效果优于wide&deep。
MF矩阵分解 与 FM因子分解机
MF(Matrix Factorization,矩阵分解):推荐系统领域里的最经典,历史最悠久的协同过滤模型。
核心思想是通过两个低维小矩阵(一个代表用户embedding矩阵,一个代表物品embedding矩阵)的乘积计算。
原始输入是评分矩阵。
相同和区别:
相同:二者都隐含了embedding思想。
矩阵分解模型是因子分解机模型的特例,矩阵分解可以被认为是只有User ID 和Item ID这两个特征。
MF用的评分信息,评分信息只能用作
FM继承了MF的特征embedding化表达这个优点
不同:是否可以引入新特征:FM可以用很多特征。MF只有评分信息,没有特征,如果实际项目中没有显示评分数据使用MF不方便(除非根据规则造一个评分数据)
隐特征含义不同:FM的每一个特征(用户物品下面会有多个特征)都有embedding。MF的用户有一个embedding,物品有一个embedding。
问题的形式不同:MF是给出评分,再进行评分预测的问题。FM可以是点击率预估问题。
在推荐系统中的地位不同:MF由于特征引入受限只用来召回,FM即可以召回又可以排序。
LR 与 FM
LR实现特征组合:
LR可以使用“线性模型+人工特征组合引入非线性”的模式引入特征组合。
优点:
因为LR模型具有简单方便易解释。
容易上规模等诸多好处。缺点:
人工特征工程,耗时费力费人力资源。
对组合特征建模,泛化能力比较弱,特征相乘为0导致权重为0的情况比较多。
尤其是在大规模稀疏特征存在的场景下,这个毛病尤其突出,比如CTR预估和推荐排序,这些场景的最大特点就是特征的大规模稀疏。
FM自动实现组合:
相比LR ,$W_{i,j}$ 用内积$$代替,$v_i$和$v_j$二者均为长度为k的向量。
SVM 与 FM
和SVM模型最大的不同,在于特征组合 权重的计算 方法。
FM 与DNN
FM和DNN都算是这样的模型,可以在很少的特征工程情况下,通过学习一个低纬度的embedding vector来学习训练集中从未见过的组合特征。
参考: