点击率预估算法:FM与FFM

本文深入探讨了点击率预估中的FM(Field-aware Factorization Machines)和FFM(Factorization Machine with Field-aware factors)算法。首先介绍了线性模型的局限性,然后详细阐述了FM的基本原理、数据分析、参数个数、计算时间复杂度以及梯度计算。接着,文章转向FFM,分析其背景、模型结构、最优化问题、自适应学习率和完整的算法流程。通过对比,揭示了FFM如何通过考虑特征字段信息来改进FM,以及FFM在计算速度优化上的策略。
摘要由CSDN通过智能技术生成

1、FM

1.1 背景

1.1.1 线性模型

常见的线性模型,比如线性回归、逻辑回归等,它只考虑了每个特征对结果的单独影响,而没有考虑特征间的组合对结果的影响。

对于一个有n维特征的模型,线性回归的形式如下:

f ( x ) = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . + ω n x n = ω 0 + ∑ i = 1 n ω i x i ( 1 ) \begin{aligned} f(x) &= \omega_0 + \omega_1x_1+\omega_2x_2+...+\omega_nx_n \\ &=\omega_0+\sum_{i=1}^n{\omega_ix_i} \end{aligned} \qquad (1) f(x)=ω0+ω1x1+ω2x2+...+ωnxn=ω0+i=1nωixi(1)

其中 ( ω 0 , ω 1 . . . ω n ) (\omega_0,\omega_1...\omega_n) (ω0,ω1...ωn)为模型参数, ( x 1 , x 2 . . . x n ) (x_1,x_2...x_n) (x1,x2...xn)为特征。
从(1)式可以看出来,模型的最终计算结果是各个特征的独立计算结果,并没有考虑特征之间的相互关系。

举个例子,我们认为“USA”与"Thanksgiving",”China"与“Chinese new year”这样的组合特征是很有意义的,在这样的组合特征下,会对某些商品表现出更强的购买意愿,而单独考虑国家及节日都是没有意义的。

1.1.2 二项式模型

我们在(1)式的基础上,考虑任意2个特征分量之间的关系,得出以下模型:

f ( x ) = ω 0 + ∑ i = 1 n ω i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n ω i j x i x j ( 2 ) f(x)=\omega_0+\sum_{i=1}^n\omega_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n\omega_{ij}x_ix_j \qquad (2) f(x)=ω0+i=1nωixi+i=1n1j=i+1nωijxixj(2)

这个模型考虑了任意2个特征分量之间的关系,但并未考虑更高阶的关系。
模型涉及的参数数量为:
1 + n + n ( n − 1 ) 2 = 1 2 ( n 2 + n + 2 ) ( 3 ) 1+n+\frac{n(n-1)}{2}=\frac{1}{2}(n^2+n+2) \qquad (3) 1+n+2n(n1)=21(n2+n+2)(3)

对于参数 ω i \omega_i ωi的训练,只要这个样本中对应的 x i x_i xi不为0,则可以完成一次训练。
但对于参数 ω i j \omega_{ij} ωij的训练,需要这个样本中的 x i x_i xi x j x_j xj同时不为0,才可以完成一次训练。
在数据稀疏的实际应用场景中,二次项 ω i j \omega_{ij} ωij的训练是非常困难的。因为每个 ω i j \omega_{ij} ωij都需要大量 x i x_i xi x j x_j xj都不为0的样本。但在数据稀疏性比较明显的样本中, x i x_i xi x j x_j xj都不为0的样本会非常稀少,这会导致 ω i j \omega_{ij} ωij不能得到足够的训练,从而不准确。

1.2 FM

1.2.1 FM基本原理

为了解决二项式模型中由于数据稀疏引起的训练不足的问题,我们为每个特征维度 x i x_i xi引入一个辅助向量:

V i = ( v i 1 , v i 2 , v i 3 , . . . , v i k ) T ∈ R k , i = 1 , 2 , 3 , . . . , n ( 4 ) V_i = (v_{i1},v_{i2},v_{i3},...,v_{ik})^T\in \mathbb R^k, i=1,2,3,...,n \qquad(4) Vi=(vi1,vi2,vi3,...,vik)TRk,i=1,2,3,...,n(4)
其中 k k k为辅助变量的维度,依经验而定,一般而言,对于特征维度足够多的样本, k &lt; &lt; n k&lt;&lt;n k<<n
ω i j \omega_{ij} ωij表示为:
ω i j = V i T V j = ∑ l = 1 k v i l v j l ( 5 ) \omega_{ij}=V_i^TV_j=\sum_{l=1}^kv_{il}v_{jl} \qquad(5) ωij=ViTVj=l=1kvilvjl(5)
简单的说,我们不再简单的使用样本训练具体的 ω i j \omega_{ij} ωij,而是先训练2个隐变量 V i V_i Vi以及 V j V_j Vj,然后使用式(5)求出最终的 ω i j \omega_{ij} ωij

具体而言, ω i j = V i T V j \omega_{ij}=V_i^TV_j ωij=ViTVj ω h i = V h T V i \omega_{hi}=V_h^TV_i ωhi=VhTVi有相同的项 V i V_i Vi,也就是只要样本中的 x i x_i xi不为0,且最少具有一个其它特征,则这个样本则可用于训练 V i V_i Vi,这就解决了数据稀疏性导致的问题。

于是,在FM中,模型可以表达为:
f ( x ) = ω 0 + ∑ i = 1 n ω i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n ( V i T V j ) x i x j ( 6 ) f(x) = \omega_0+\sum_{i=1}^n\omega_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n(V_i^TV_j)x_ix_j \qquad(6) f(x)=ω0+i=1nωixi+i=1n1j=i+1n(ViTVj)xixj(6)

1.2.2 数据分析

我们的目标是要求得以下交互矩阵W:
W = ( ω 11 ω 12 . . . ω 1 n ω 21 ω 22 . . . ω 2 n ⋮ ⋮ ⋱ ⋮ ω n 1 ω n 2 . . . ω n n ) n × n ( 7 ) W= \begin{pmatrix} \omega_{11} &amp; \omega_{12}&amp; ... &amp;\omega_{1n} \\ \omega_{21} &amp; \omega_{22}&amp; ... &amp;\omega_{2n} \\ \vdots &amp;\vdots &amp;\ddots &amp;\vdots\\ \omega_{n1} &amp; \omega_{n2}&amp; ... &amp;\omega_{nn} \\ \end{pmatrix}_{n\times n} \qquad(7) W=ω11ω21ωn1ω12ω22ωn2.........ω1nω2nωnnn×n(7)

由于直接求解W不方便,因此我们引入隐变量V:
V = ( v 11 v 12 . . . v 1 k v 21 v 22 . . . v 2 k ⋮ ⋮ ⋱ ⋮ v n 1 v n 2 . . . v n k ) n × k = ( V 1 T V 2 T ⋯ V n T ) ( 8 ) V= \begin{pmatrix} v_{11} &amp; v_{12}&amp; ... &amp;v_{1k} \\ v_{21} &amp; v_{22}&amp; ... &amp;v_{2k} \\ \vdots &amp;\vdots &amp;\ddots &amp;\vdots\\ v_{n1} &amp; v_{n2}&amp; ... &amp;v_{nk} \\ \end{pmatrix}_{n\times k}=\begin{pmatrix} V_1^T\\ V_2^T\\ \cdots \\ V_n^T\\ \end{pmatrix} \qquad(8)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值