FM以及DeepFM学习笔记
FM以及DeepFM
1.FM
在计算广告和推荐系统中,CTR预估(click-through rate)是非常重要的一个环节,判断一个商品的是否进行推荐需要根据CTR预估的点击率来进行。在进行CTR预估时,除了单特征外,往往要对特征进行组合。
1.1 FM要解决的问题。
FM(Factorization Machine, 因子分解机)主要用来解决,数据系数的情况下,特征怎样组合的问题。
下面举个例子:

clicked是分类值,表明用户有没有点击该广告。1表示点击,0表示未点击。而country,day,ad_type则是对应的特征。对于这种categorical特征,一般都是进行one-hot编码处理。
进行onehot编码的结果如下所示:

因为是cateforical特征,经过onehot编码后,样本的数据会变得十分稀疏,并且会导致特征空间扩大很多倍。
1.2 特征组合
为了表示特征间的相关性,我们采用了多项式模型,这里我们只考虑二阶特征的组合,那么我们可以用下面这个式子作为模型的表达式:
n表示样本的特征数量,表示第i个特征。
1.3 FM求解
从上面的表达式我们可以看出,在组合部分的特征相关参数共有n(n-1)/2个。在矩阵很稀疏的情况下,矩阵中为0的值特别多,这将导致无法直接训练出来。
为了求出,我们对每一个特征分量
引入辅助向量
。然后利用
对
进行求解。

那么

然后我们再利用公式:

具体推导如下:

最后我们对

2. DeepFM
DeepFM主要包括两个部分,神经网络部分和因子分解机部分,分别负责提取低阶特征和高阶特征。并且这两部分共享权重矩阵,即共享Embedding层。DeepFM的预测结果可以写为:

2.1 FM部分

2.2 Deep部分

Deep部分主要用来处理高阶特征(2阶以上)。
2.3 注意事项
Dense Embedding层最开始是随机初始化的,后面经过FM的训练,成为图中所示的Dense Embedding层,Dense Embedding层的权重同时输入到FM部分和deep部分,并且由两者共同训练。
在最后进行求和时,y的值为FM的一阶部分加上偏置再加上deep部分得到的高阶部分。
参考资料
1.https://www.jianshu.com/p/152ae633fb00
2.https://www.jianshu.com/p/6f1c2643d31b