1. 介绍
在CTR预估的时候,经常会遇到one-hot类型的变量,这会导致严重的数据特征稀疏的情况。FFM(Field-aware Factorization Machine)模型可以解决这个问题。FFM模型是在FM模型基础上发展出来的算法。
在FFM模型中引入了类别的概念,即field。简单来说,就是将同一个categories特征经过one-hot编码后,生成的数值特征都可以放到同一个field中,比如国籍、日期等等。举个例子,d=12/11/15,d=23/5/14,d=17/2/18,这三个特征都是代表日期的,可以放到同一个field中。
在FFM中,每一维特征 ,针对其他特征的每一种field(
),都会学习一个隐向量
。因此,隐向量不仅与特征相关,也与field相关。假设特征
分别与特征
,
交互(假设后两个特征分别属于不同的field
,
),原来FM模型交互的时候,都是使用相同的隐向量
, 但是在FFM模型中,会使用不同的隐向量
和
,这就是FFM模型和FM模型的唯一区别。
2. 公式
可以看到,如果隐向量的长度为k,那么FFM模型的二次参数有个,远多于FM模型的
个。由于隐向量与field相关,FFM的二次项并不能化简,其预测复杂度是
。
下面举个例子说明一下FFM的特征组合方式,输入记录:
这条记录可以编码成5个特征,其中“Genre=Comedy”和“Genre=Drama”属于同一个field,“Price”是数值型,不用One-Hot编码转换。为了方便说明FFM的样本格式,我们将所有的特征和对应的field映射成整数编号。
那么,FFM的组合特征有10项。
其中,红色的是field的编号,蓝色是特征编号。
3. FFM实现细节
实现方式不唯一。
损失函数
FFM将问题定义为分类问题,使用logistics loss,同时加入L2正则。
将类别设定为-1和1的时候,逻辑回归的损失函数如上图。
随机梯度下降
训练FFM使用的是随机梯度下降方法,即每次只选一条数据进行训练
参考资料
https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/6340129.html