摘要
FM被广泛应用在CTR,但是FFM在一些世界范围的CTR竞赛表现好于目前存在的模型。作者实现了相关代码,并与一些竞争模型进行了全面的分析。实验证明FFM在某些分类问题上非常有用。
介绍
FFM
对于这个例子来说,FM的隐向量表示应该为:
在FM中,每个特征只有一个隐向量来学习隐性的影响。拿ESPN来做例子, w E S P N w_{ESPN} wESPN被用来学习隐性的与Nike和Male的影响,但是因为Nike和Male是属于不同的领域的,那么使用同一个 w E S P N w_{ESPN} wESPN可能不太合适。
在FFM中,每个特征都有一些隐性的向量,取决于其他特征的所属领域。比如对于上述例子,FFM的隐向量表示为:
所以其数学模型为:
整个算法步骤:
优化
使用AdaGrad优化方法,自适应优化学习速率,对频繁变化的参数以更小的步长进行更新,而稀疏的参数以更大的步长进行更新。
梯度:
AdaGrad:
G的初始值为1,避免分母为0,过大
缺陷
仅针对二次项,FM有nk个参数,而FFM有nfk个参数。而且FFM无法利用化简,所以计算复杂度为 O ( k n 2 ) O(kn^2) O(kn2).所以这需要较大的硬件资源来提供运算。
Impact of Parameter
-
k值不需要太大,没有什么提升
-
λ \lambda λ和 α \alpha α需要着重调整
Early Stopping
防止过拟合
可以参考我的github来看看源代码,如有错误,欢迎交流。