FM和FFM

FM和FFM

FM(Factorization Machines)和FFM(Field-aware Factorization Machines)主要应用于稀疏特征矩阵中的CTR预估。本文对其进行简单介绍,希望对大家有所帮助。

1.FM

FM模型使用因子分解的方式计算变量之间的交互项,能够解决特征交互所带来的稀疏问题(像推荐系统),其计算的复杂度是线性的。

1.1问题描述

前提假设:特征向量 X X X是非常稀疏的,例如: x \text{x} x中大多数元素 x i x_i xi都为0,设 m ( x ) m(x) m(x)为向量中非零向 x \text{x} x量的个数, m ˉ D \bar{m}_{D} mˉD m ( x ) m(x) m(x)在特征矩阵 D D D个数的平均值。在推荐系统和文本分析的过程中,有些类别变量值是非常稀疏的, m ˉ D ≪ n \bar{m}_{D} \ll n mˉDn,其中: n n n为样本的数量。

举例说明:

在这里插入图片描述

上图1来自交易的稀疏矩阵向量x的例子,每行代表一个特征向量$ x^{i}$ 及其对应的标签$ y^{i}$,前4列蓝色代表用户,接下来5列红色代表看过的电影,5列黄色代表对看过电影的评分,绿色代表看电影的时间,以月份数表示,褐色代表在Target y时间之前所评价的最后一部电影。

我们有一份关于电影评价的交易数据,这份数据描述用户 u ∈ U u\in U uU在某个时间 t ∈ R t\in \mathbb{R} tR对电影 i ∈ I i\in I iI进行评价为 r ∈ { 1 , 2 , 3 , 4 , 5 } r\in\{1,2,3,4,5\} r{1,2,3,4,5},其中,用户 U U U和电影 I I I描述 如下:
U = Alice (A),Bob (B),Charlie (C),... I = Titanic (TI),Notting Hill (NH),Star Wars (SW), Star Trek (ST),... \text{U = {Alice (A),Bob (B),Charlie (C),...}}\\ \text{I = {Titanic (TI),Notting Hill (NH),Star Wars (SW), Star Trek (ST),...}} U = Alice (A),Bob (B),Charlie (C),...I = Titanic (TI),Notting Hill (NH),Star Wars (SW), Star Trek (ST),...
原始数据 S \text{S} S如下:
S = {(A,TI,2010-1,5),(A,NH,2010-2,3),(A,SW,2010-4,1), (B,SW,2009-5,4), (B,ST,2009-8,5), (C,TI,2009-9,1),(C,SW,2009-12,5)} \text{S = \{(A,TI,2010-1,5),(A,NH,2010-2,3),(A,SW,2010-4,1), (B,SW,2009-5,4),}\\ \text{(B,ST,2009-8,5), (C,TI,2009-9,1),(C,SW,2009-12,5)\}} S = {(A,TI,2010-1,5),(A,NH,2010-2,3),(A,SW,2010-4,1), (B,SW,2009-5,4),(B,ST,2009-8,5), (C,TI,2009-9,1),(C,SW,2009-12,5)}
利用以上数据进行模型训练,预测用户在某个时间对电影的评价情况。

上图1显示从原始数据 S \text{S} S转化为特征矩阵的例子,上图 ∣ U ∣ |U| U(蓝色部分)代表事务的活跃的用户,在每个事务 ( u , i , t , r ) ∈ S (u, i, t, r) \in S (u,i,t,r)S描述一个活跃的用户。用户Alice在蓝色部分用 x A 1 = 1 x_A^{1}=1 xA1=1表示。接下来,红色部分的二值变量用于表示活跃的事项(是否看过该电影),例如: x T I ( 1 ) x_{TI}^{(1)} xTI(1)。黄色部分代表用户对已经看过电影的评分,对于每个用户的评分进行标准化,所有的评分和为1。绿色部分表示用户看电影的时间与2009年1月的时间差,用月份数表示。褐色部分表示在Target y评分前所看过最后一部电影。在本节中,将介绍如何使用因子分解机(FMs)对偏好的电影进行推荐。

1.2因子分解机(FMs)

在本节中,我们介绍 因子分解机,讨论这个模型等式是如何应用于推荐任务的。

1.2.1 因子分解机模型

1)模型等式:假设如下模型等式的度为2(即两个变量之间的交叉),定义如下:
y ^ ( x ) : = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n ⟨ v i , v j ⟩ x i x j ( 1 ) 其 中 , w 0 ∈ R , w ∈ R n , V ∈ R n × k ( 2 ) ⟨ ⋅ , ⋅ ⟩ 是 两 个 长 度 为 k 向 量 之 间 的 乘 积 , 如 下 表 示 : ⟨ v i , v j ⟩ : = ∑ f = 1 k v i , f ⋅ v j , f ( 3 ) \hat{y}(\mathbf{x}):=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle x_{i} x_{j} \qquad(1)\\ 其中,w_{0} \in \mathbb{R}, \quad \mathbf{w} \in \mathbb{R}^{n}, \quad \mathbf{V} \in \mathbb{R}^{n \times k}\qquad(2)\\ \langle\cdot, \cdot\rangle是两个长度为k向量之间的乘积,如下表示:\\ \left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle:=\sum_{f=1}^{k} v_{i, f} \cdot v_{j, f}\qquad(3) y^(x):=w0+i=1nwixi+i=1nj=i+1nvi,vjxixj(1)w0R,wRn,VRn×k(2),kvi,vj:=f=1kvi,fvj,f(3)
在度为2的FM模型中捕获所有单个变量和两个变量交叉与y之间因果关系:

  • w 0 w_0 w0是全局偏置项(常数项)。
  • w i w_i wi为第 i i i特征的变量的贡献度。
  • w ^ i , j : = ⟨ v i , v j ⟩ \hat{w}_{i,j}:=\langle v_i,v_j\rangle w^i,j:=vi,vj是第 i i i个特征和第 j j j个特征交互项。FM模型采用因子化的形式代替 ⟨ v i , v j ⟩ \langle v_i,v_j\rangle vi,vj代替 w i , j w_{i,j} wi,j,这一操作能够解决高阶交互项 ( d ≥ 2 ) (d \geq 2) (d2)的稀疏数据问题。
1.2.2 计算复杂度

我们直到对于任何正定矩阵 W \text{W} W,存在矩阵 V \text{V} V和足够大的 k k k使得 W=V ⋅ V t \text{W=V}\cdot{\text{V}^t} W=VVt。只要我们选择的 k k k足够大,FM模型能够表示任何交互项。然而在稀疏的数据上,由于没有足够的数据构建高阶交互项,我们一般选择比较小的 k k k。低阶 k k k降低FM模型在复杂性,提高模型在稀疏数据的泛化能力。

1.2.3 稀疏情况下的参数估计

在稀疏数据的情况下,由于没有足够的数据,无法直接和独立地估计变量之间的交互项。因子分解机通过因子化交互项打破交互参数估计的独立性问题。这意味着一个交互项的参数估计能够帮助相关相关交互项进行估计。我们通过上图1数据的例子进行解释一下。假设我们想估计交互项 A l i c e ( A ) Alice(A) Alice(A) S t a r   T r e k ( S T ) Star\ Trek(ST) Star Trek(ST)来预测目标 y y y。显然,在训练数据中,不存在非零的 x A x_A xA x S T x_{ST} xST,所以无法直接估计交互项 w A , S T w_{A,ST} wA,ST。我们可以通过因子化交互参数 ⟨ v A , v ST ⟩ \langle \text{v}_{A},v_{\text{ST}}\rangle vA,vST来估计交互项 w A , S T w_{A,ST} wA,ST。首先,由于 B o b Bob Bob C h a r l i e Charlie Charlie对电影 S t a r   W a r s ( v S W ) Star\ Wars(\text{v}_{SW}) Star WarsvSW的评分相似,也就是说 ⟨ v B , v S W ⟩ \langle \text{v}_B,\text{v}_{SW}\rangle vB,vSW ⟨ v C , v S W ⟩ \langle \text{v}_C,\text{v}_{SW}\rangle vC,vSW相似,所以拥有相似的因子项 v B \text{v}_B vB v C \text{v}_C vC。由于 A l i c e ( v A ) Alice(\text{v}_A) Alice(vA) C h a r l i e ( v C ) Charlie(\text{v}_C) Charlie(vC) T i t a n i c Titanic Titanic S t a r   W a r s Star\ Wars Star Wars的评分不同,所以, A l i c e ( v A ) Alice(\text{v}_A) Alice(vA) C h a r l i e ( v C ) Charlie(\text{v}_C) Charlie(vC)的因子向量不同。由于 B o b Bob Bob对电影 S t a r   T r e k Star\ Trek Star Trek S t a r   W a r s Star\ Wars Star Wars有相似的评价,所以电影 S t a r   T r e k Star\ Trek Star Trek S t a r   W a r s Star\ Wars Star Wars拥有相似的因子向量。总之,直观感觉 A l i c e Alice Alice S t a r   T r e k Star\ Trek Star Trek的交互项与 A l i c e Alice Alice S t a r   W a r s Star\ Wars Star Wars的交互项相似。

1.2.4 计算过程

由于所有的两两交互项都会被计算,公式(1)计算的复杂度为 O ( k n 2 ) O(kn^2) O(kn2),但是我们可以将其调整为线性 O ( k n ) O(kn) O(kn)

证明过程:由于对交互项的参数进行因子化处理,不存在模型参数直接依赖于两个交互的变量,因此交互项可以做如下处理 :
∑ i = 1 n ∑ j = i + 1 n ⟨ v i , v j ⟩ x i x j = 1 2 ∑ i = 1 n ∑ j = 1 n ⟨ v i , v j ⟩ x i x j − 1 2 ∑ i = 1 n ⟨ v i , v i ⟩ x i x i = 1 2 ( ∑ i = 1 n ∑ j = 1 n ∑ f = 1 k v i , f v j , f x i x j − ∑ i = 1 n ∑ f = 1 k v i , f v i , f x i x i ) = 1 2 ∑ f = 1 k ( ( ∑ i = 1 n v i , f x i ) 2 − ∑ i = 1 n v i , f 2 x i 2 ) \begin{aligned} & \sum_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle x_{i} x_{j} \\ =& \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle x_{i} x_{j}-\frac{1}{2} \sum_{i=1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{i}\right\rangle x_{i} x_{i} \\ =& \frac{1}{2}\left(\sum_{i=1}^{n} \sum_{j=1}^{n} \sum_{f=1}^{k} v_{i, f} v_{j, f} x_{i} x_{j}-\sum_{i=1}^{n} \sum_{f=1}^{k} v_{i, f} v_{i, f} x_{i} x_{i}\right) \\ =& \frac{1}{2} \sum_{f=1}^{k}\left(\left(\sum_{i=1}^{n} v_{i, f} x_{i}\right)^{2}-\sum_{i=1}^{n} v_{i, f}^{2} x_{i}^{2}\right) \end{aligned} ===i=1nj=i+1nvi,vjxixj21i=1nj=1nvi,vjxixj21i=1nvi,vixixi21i=1nj=1nf=1kvi,fvj,fxixji=1nf=1kvi,fvi,fxixi21f=1k(i=1nvi,fxi)2i=1nvi,f2xi2
以上等式的复杂度是线性的为 O ( k n ) O(kn) O(kn)

在稀疏特征矩阵中,向量 x \text{x} x的元素大部分是0, m ( x ) m(\text{x}) m(x)很小,由于计算是基于非零元素。因此,在稀疏矩阵的应用中,FM计算的复杂度为 O ( k m ˉ D ) O(k\bar{m}_D) O(kmˉD)

1.2.5 因子分解机进行预测

FM可以应用于各种预测任务:

  • 回归: y ^ ( x ) \hat{y}(x) y^(x)可以直接应用于预测,使用最小均方误差进行优化。
  • 二分类: 采用hinge loss和逻辑损失函数进行优化。
  • 排序: 利用 y ^ ( x ) \hat{y}(x) y^(x) 的分数对特征向量 x \text{x} x进行排序,优化方式是基于特征向量 ( x ( a ) , x ( b ) ) ∈ D (\text{x}^{(a)},\text{x}^{(b)}) \in D (x(a),x(b))D的交互项及分类损失函数。

在以上案例中,经常加入正则项以避免优化过程中的过拟合问题。

1.2.6 因子分解机的学习方式

在上文中,我们证明FMs的模型计算是线性的,因此,模型的参数( w 0 w_0 w0 w 和 \text{w}和 w V \text{V} V )可以采用梯度下降的方式进行有效学习,例如:随机梯度下降(SGD),损失函数可以采用平方损失、逻辑损失、hinge损失函数。FM模型的梯度计算如下:
∂ ∂ θ y ^ ( x ) = { 1 ,  if  θ  is  w 0 x i ,  if  θ  is  w i ( 4 ) x i ∑ j = 1 n v j , f x j − v i , f x i 2 ,  if  θ  is  v i , f \frac{\partial}{\partial \theta} \hat{y}(\mathbf{x})=\left\{\begin{array}{ll} {1,} & {\text { if } \theta \text { is } w_{0}} \\ {x_{i},} & {\text { if } \theta \text { is } w_{i}} \qquad(4) \\ {x_{i} \sum_{j=1}^{n} v_{j, f} x_{j}-v_{i, f} x_{i}^{2},} & {\text { if } \theta \text { is } v_{i, f}} \end{array}\right. θy^(x)=1,xi,xij=1nvj,fxjvi,fxi2, if θ is w0 if θ is wi(4) if θ is vi,f
∑ j = 1 n v j , f x j \sum_{j=1}^{n} v_{j, f} x_{j} j=1nvj,fxj是独立于 i i i,因此,在计算 y ^ ( x ) \hat{y}(x) y^(x)的过程中可以被提前计算。通常,每个梯度的计算时间是常数 O ( 1 ) O(1) O(1)。所有参数更新复杂度为 O ( k n ) O(kn) O(kn),在稀疏矩阵的情况下,计算的复杂度为 O ( k m ( x ) ) O(km(x)) O(km(x))

1.2.7 对于多阶的因子分解机

用如下公式表示:
y ^ ( x ) : = w 0 + ∑ i = 1 n w i x i + ∑ l = 2 d ∑ i 1 = 1 n ⋯ ∑ i l = i l − 1 + 1 n ( ∏ j = 1 l x i j ) ( ∑ f = 1 k l ∏ j = 1 l v i j , f ( l ) ) ( 5 ) \begin{aligned} \hat{y}(x) &:=w_{0}+\sum_{i=1}^{n} w_{i} x_{i} \\ &+\sum_{l=2}^{d} \sum_{i_{1}=1}^{n} \cdots \sum_{i_{l}=i_{l-1}+1}^{n}\left(\prod_{j=1}^{l} x_{i_{j}}\right)\left(\sum_{f=1}^{k_{l}} \prod_{j=1}^{l} v_{i_{j}, f}^{(l)}\right)\qquad(5) \end{aligned} y^(x):=w0+i=1nwixi+l=2di1=1nil=il1+1n(j=1lxij)f=1klj=1lvij,f(l)(5)

2.FFM

CTR(Click-through rate ) \text{CTR(Click-through rate )} CTR(Click-through rate )在计算广告中扮演着重要的角色 。基于二阶的多项式映射和因子分解机( FMs \text{FMs} FMs)广泛应用于这个任务。最近, FMs \text{FMs} FMs FFMs \text{FFMs} FFMs在CTR预估竞赛中优于其他模型。

2.1介绍

逻辑回归广泛地应用于点击预估中。给定一个样本量为m的数据 ( y i , x i ) , i = 1 , . . . , m (y_i,x_i),i=1,...,m (yi,xi),i=1,...,m,其中, y i y_i yi是标签, x i x_i xi n n n维的特征向量,模型参数 w w w

可以通过下面的逻辑损失函数优化得到:
min ⁡ w λ 2 ∥ w ∥ 2 2 + ∑ i = 1 m log ⁡ ( 1 + exp ⁡ ( − y i ϕ L M ( w , x i ) ) ) ( 1 ) \min _{\boldsymbol{w}} \frac{\lambda}{2}\|\boldsymbol{w}\|_{2}^{2}+\sum_{i=1}^{m} \log \left(1+\exp \left(-y_{i} \phi_{\mathrm{LM}}\left(\boldsymbol{w}, \boldsymbol{x}_{i}\right)\right)\right)\qquad (1) wmin2λw22+i=1mlog(1+exp(yiϕLM(w,xi)))(1)
在这里插入图片描述

表1:上图表示模拟的点击数据,其中,+(-)数值项表示点击(不点击)的意愿。

在公式(1)中, λ \lambda λ是正则项,我们考虑以下线性的预测模型:
ϕ L M ( w , x ) = w ⋅ x \phi_{\mathrm{LM}}(\boldsymbol{w}, \boldsymbol{x})=\boldsymbol{w} \cdot \boldsymbol{x} ϕLM(w,x)=wx
特征的交互效应在CTR预估中非常的重要。根据表1中的数据,我们会对特征交互有更好的理解。来自广告主Gucci的广告在Vogue媒体有良好得点击率。但是,这个信息很难被学习到,因为Gucci和Vogue的权重是相互独立的。为解决这个问题,模型需要学习特征的交互项。首先引入第一个模型,二阶多项式映射模型可以学习特征的交互效应。第二个模型是因子分解机模型,通过引入两个隐藏向量的乘积学习特征的交互效应。

在个性化推荐中,引入了FM衍生模型叫做双变量交互因子分解机(PITF)。在2012KDD Cup中,PITF被叫做“Team Opera Solutions”使用,叫做因子分解机。为 避免混淆,在本文中,我们将其称作FFMs。PITF模型和FFM模型不同在于PITF考虑三个特定的领域用户、属性和标签,但是,FFM更加泛化。

2.2 Poly2和FM

二阶映射多项式能够有效地捕捉特征之间的交互项,在模型训练和测试的表现方面,使用线性模型比使用核函数的方法更加高效。公示如下:
ϕ P o l y 2 ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n w h ( j 1 , j 2 ) x j 1 x j 2 ( 2 ) \phi_{\mathrm{Poly} 2}(\boldsymbol{w}, \boldsymbol{x})=\sum_{j_{1}=1}^{n} \sum_{j_{2}=j_{1}+1}^{n} w_{h\left(j_{1}, j_{2}\right)} x_{j_{1}} x_{j_{2}}\qquad(2) ϕPoly2(w,x)=j1=1nj2=j1+1nwh(j1,j2)xj1xj2(2)
其中, h ( j 1 , j 2 ) h(j_1,j_2) h(j1,j2)是将 j 1 j_1 j1 j 2 j_2 j2编码自然数值的函数,计算复杂度为 O ( n ˉ 2 ) O(\bar{n}^2) O(nˉ2) n ˉ \bar{n} nˉ为每个样本中非零特征的个数。

FMs学习每个特征隐向量,每个隐向量包含 k k k个隐因子, k k k是用户设定的参数。特征的交互效应是通过两个隐向量的内积表示的:
ϕ F M ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n ( w j 1 ⋅ w j 2 ) x j 1 x j 2 ( 3 ) \phi_{\mathrm{FM}}(\boldsymbol{w}, \boldsymbol{x})=\sum_{j_{1}=1}^{n} \sum_{j_{2}=j_{1}+1}^{n}\left(\boldsymbol{w}_{j_{1}} \cdot \boldsymbol{w}_{j_{2}}\right) x_{j_{1}} x_{j_{2}}\qquad (3) ϕFM(w,x)=j1=1nj2=j1+1n(wj1wj2)xj1xj2(3)
参数的个数为 n × k n\times k n×k,计算的复杂度为 O ( n ˉ 2 k ) O(\bar{n}^2k) O(nˉ2k),接下来,我们可以重写公式(3)为
ϕ F M ( w , x ) = 1 2 ∑ j = 1 n ( s − w j x j ) ⋅ w j x j 其 中 : s = ∑ j ′ = 1 n w j ′ x j ′ \phi_{\mathrm{FM}}(\boldsymbol{w}, \boldsymbol{x})=\frac{1}{2} \sum_{j=1}^{n}\left(\boldsymbol{s}-\boldsymbol{w}_{j} x_{j}\right) \cdot \boldsymbol{w}_{j} x_{j}\\ 其中:s=\sum_{j^{\prime}=1}^{n} \boldsymbol{w}_{j^{\prime}} x_{j^{\prime}} ϕFM(w,x)=21j=1n(swjxj)wjxjs=j=1nwjxj
计算的复杂度为 O ( n ˉ k ) O(\bar{n}k) O(nˉk)

为什么当数据是稀疏状态时,FMs的表现优于Poly2。接下来,我们使用表1的数据集对其进行说明。在上表中,训练数据中只有(ESPN,Adidas)一个样本对。对于Poly2,负样本的权重可能从这对样本中学习。对于FMs,因为 (ESPN,Adidas)的预测是由 w E S P N ⋅ w A d i d a s w_{ESPN}\cdot w_{Adidas} wESPNwAdidas,由于 w E S P N w_{ESPN} wESPN w A d i d a s w_{Adidas} wAdidas也可以从(ESPN,Nike)和(NBC,Adidas)学习,预测可能更加准确。另一个例子,(NBC,Gucci)组合在训练数据中不存在,对于Poly2,这对预测是很困难的,但是对于FMs,因为 w N B C w_{NBC} wNBC w G u c c i w_{Gucci} wGucci可以从其他组合中学习到,因此,预测更加准确。

2.3 FFM

FFM的思想来自于个性化推荐系统PITF模型。在PITF模型中,在可分离的特征空间中,他们假设给定 三个域(fields),包括:用户、属性、标签和因子交叉部分(用户、属性),(用户、标签)和(属性、标签)。由于他们的目标是推荐系统应用被局限于特定的域中(用户、属性、标签)。在本节中,我们对FFMs在CTR场景预测方面进行更加全面的研究。将表1中的特征分组几个域(fields)中,在我们这个例子中,ESPN,Vogue和NBC属于媒体方,其他的三个特征Nike,Gucci和Adidas属于广告主。FFM是FM基于这些域信息应用的变形。为解释FFM模型的原理,我们举一个 新的例子:

在这里插入图片描述

回忆一下FMs, ϕ F M ( w , x ) \phi_{\mathrm{FM}}(w, x) ϕFM(w,x)是如下公式:
w E S P N ⋅ w N i k e + w E S P N ⋅ w M a l e + w N i k e ⋅ w M a l e \boldsymbol{w}_{\mathrm{ESPN}} \cdot \boldsymbol{w}_{\mathrm{Nike}}+\boldsymbol{w}_{\mathrm{ESPN}} \cdot \boldsymbol{w}_{\mathrm{Male}}+\boldsymbol{w}_{\mathrm{Nike}} \cdot \boldsymbol{w}_{\mathrm{Male}} wESPNwNike+wESPNwMale+wNikewMale
在这里插入图片描述

表2:LM, Poly2, FM, FFM使用参数的个数及其计算的复杂度

在FM模型中,每个特征只存在一个隐向量,可以和其他特征的隐向量一个学习。以ESPN为例, w E S P N w_{ESPN} wESPN可以从Nike( w E S P N ⋅ w N i k e w_{ESPN}\cdot w_{Nike} wESPNwNike)和 Male( w E S P N ⋅ w M a l e w_{ESPN}\cdot w_{Male} wESPNwMale)两个特征中学习到。然而,Nike和Male属于不同的域,(ESPN,Nike)和(ESPN,Male)之间的影响是不同的。

在FFM中,每个特征有多个隐向量,这依赖于其他特征所属的域,其中一个特征与其他特征做内积,在我们的例子中, ϕ F F M ( w , x ) \phi_{FFM}(w,x) ϕFFM(w,x)如下所示:
w E S P N , A ⋅ w N i k e , P + w E S P N , G ⋅ w M a l e , P + w N i k e , G ⋅ w M a l e , A \boldsymbol{w}_{\mathrm{ESPN}, \mathrm{A}} \cdot \boldsymbol{w}_{\mathrm{Nike}, \mathrm{P}}+\boldsymbol{w}_{\mathrm{ESPN}}, \mathrm{G} \cdot \boldsymbol{w}_{\mathrm{Male}, \mathrm{P}}+\boldsymbol{w}_{\mathrm{Nike}, \mathrm{G}} \cdot \boldsymbol{w}_{\mathrm{Male}, \mathrm{A}} wESPN,AwNike,P+wESPN,GwMale,P+wNike,GwMale,A
我们看到,(ESPN,NIKE)的效应取决于 w E S P N , A w_{ESPN,A} wESPN,A w N i k e , P w_{Nike,P} wNike,P w E S P N , A w_{ESPN,A} wESPN,A中A表示的Nike属于广告主, w N i k e , P w_{Nike,P} wNike,P中的P表示ESPN属于媒体方。又例如(ESPN,Male)组合, w E S P N , G w_{ESPN,G} wESPN,G中的G表示Male属于Gender域, w M a l e , P w_{Male,P} wMale,P中P表示媒体方。数学表示如下:
ϕ F F M ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n ( w j 1 , f 2 ⋅ w j 2 , f 1 ) x j 1 x j 2 ( 4 ) \phi_{\mathrm{FFM}}(\boldsymbol{w}, \boldsymbol{x})=\sum_{j_{1}=1}^{n} \sum_{j_{2}=j_{1}+1}^{n}\left(\boldsymbol{w}_{j_{1}, f_{2}} \cdot \boldsymbol{w}_{j_{2}, f_{1}}\right) x_{j_{1}} x_{j_{2}}\qquad (4) ϕFFM(w,x)=j1=1nj2=j1+1n(wj1,f2wj2,f1)xj1xj2(4)
f 1 f_1 f1 f 2 f_2 f2分别表示 j 1 j_1 j1 j 2 j_2 j2的域。如果 f f f表示域的数量,那么FFMs参数的个数是 n f k nfk nfk,其中,计算的复杂度为 O ( n ˉ 2 k ) O(\bar{n}^2k) O(nˉ2k)。值得注意的是,在FFMs中,因为只需要学习特定的域,通常:
k F F M ≪ k F M k_{\mathrm{FFM}} \ll k_{\mathrm{FM}} kFFMkFM
表2对比参数的个数和计算复杂度。

2.4解决最优化问题

在最优化的处理问题和(1)比较相似,只是将 ϕ L M ( w , x ) \phi_{LM}(w,x) ϕLM(w,x)替换为 ϕ F F M ( w , x ) \phi_{FFM}(w,x) ϕFFM(w,x)。我们使用随机梯度下降的优化方法求解参数。针对学习率的问题,我们采用AdaGrad的处理技巧,这种处理方式在因子分解是非常有效的。

在SG每步处理过程中,更新公式(4)中的参数 w j 1 , f 2 w_{j_1,f_2} wj1,f2 w j 2 , f 1 w_{j_2,f_1} wj2,f1。由于 x x x是高度稀疏,我们只更新非零值。首先,他们的次梯度是:
g j 1 , f 2 ≡ ∇ w j 1 , f 2 f ( w ) = λ ⋅ w j 1 , f 2 + κ ⋅ w j 2 , f 1 x j 1 x j 2 ( 5 ) g j 2 , f 1 ≡ ∇ w j 2 , f 1 f ( w ) = λ ⋅ w j 2 , f 1 + κ ⋅ w j 1 , f 2 x j 1 x j 2 ( 6 ) \boldsymbol{g}_{j_{1}, f_{2}} \equiv \nabla_{\boldsymbol{w}_{j_{1}, f_{2}}} f(\boldsymbol{w})=\lambda \cdot \boldsymbol{w}_{j_{1}, f_{2}}+\kappa \cdot \boldsymbol{w}_{j_{2}, f_{1}} x_{j_{1}} x_{j_{2}}\qquad(5)\\ \boldsymbol{g}_{j_{2}, f_{1}} \equiv \nabla_{\boldsymbol{w}_{j_{2}}, f_{1}} f(\boldsymbol{w})=\lambda \cdot \boldsymbol{w}_{j_{2}, f_{1}}+\kappa \cdot \boldsymbol{w}_{j_{1}, f_{2}} x_{j_{1}} x_{j_{2}}\qquad(6)\\ gj1,f2wj1,f2f(w)=λwj1,f2+κwj2,f1xj1xj2(5)gj2,f1wj2,f1f(w)=λwj2,f1+κwj1,f2xj1xj2(6)
其中:
κ = ∂ log ⁡ ( 1 + exp ⁡ ( − y ϕ F F M ( w , x ) ) ) ∂ ϕ F F M ( w , x ) = − y 1 + exp ⁡ ( y ϕ F F M ( w , x ) ) \kappa=\frac{\partial \log \left(1+\exp \left(-y \phi_{\mathrm{FFM}}(\boldsymbol{w}, \boldsymbol{x})\right)\right)}{\partial \phi_{\mathrm{FFM}}(\boldsymbol{w}, \boldsymbol{x})}=\frac{-y}{1+\exp \left(y \phi_{\mathrm{FFM}}(\boldsymbol{w}, \boldsymbol{x})\right)} κ=ϕFFM(w,x)log(1+exp(yϕFFM(w,x)))=1+exp(yϕFFM(w,x))y
在这里插入图片描述

其次, w j , f w_{j,f} wj,f的向量维度为 k k k,梯度的累计求和公式如下:
( G j 1 , f 2 ) d ← ( G j 1 , f 2 ) d + ( g j 1 , f 2 ) d 2 ( 7 ) ( G j 2 , f 1 ) d ← ( G j 2 , f 1 ) d + ( g j 2 , f 1 ) d 2 ( 8 ) \left(G_{j_{1}, f_{2}}\right)_{d} \leftarrow\left(G_{j_{1}, f_{2}}\right)_{d}+\left(g_{j_{1}, f_{2}}\right)_{d}^{2}\qquad(7)\\ \left(G_{j_{2}, f_{1}}\right)_{d} \leftarrow\left(G_{j_{2}, f_{1}}\right)_{d}+\left(g_{j_{2}, f_{1}}\right)_{d}^{2}\qquad(8) (Gj1,f2)d(Gj1,f2)d+(gj1,f2)d2(7)(Gj2,f1)d(Gj2,f1)d+(gj2,f1)d2(8)
最后, ( w j 1 , f 2 ) d (w_{j_1,f_2})_d (wj1,f2)d ( w j 2 , f 1 ) d (w_{j_2,f_1})_d (wj2,f1)d的更新公式如下:
( w j 1 , f 2 ) d ← ( w j 1 , f 2 ) d − η ( G j 1 , f 2 ) d ( g j 1 , f 2 ) d ( 9 ) ( w j 2 , f 1 ) d ← ( w j 2 , f 1 ) d − η ( G j 2 , f 1 ) d ( g j 2 , f 1 ) d ( 10 ) \left(w_{j_{1}, f_{2}}\right)_{d} \leftarrow\left(w_{j_{1}, f_{2}}\right)_{d}-\frac{\eta}{\sqrt{\left(G_{j_{1}, f_{2}}\right)_{d}}}\left(g_{j_{1}, f_{2}}\right)_{d}\qquad(9)\\ \left(w_{j_{2}, f_{1}}\right)_{d} \leftarrow\left(w_{j_{2}, f_{1}}\right)_{d}-\frac{\eta}{\sqrt{\left(G_{j_{2}, f_{1}}\right)_{d}}}\left(g_{j_{2}, f_{1}}\right)_{d}\qquad(10) (wj1,f2)d(wj1,f2)d(Gj1,f2)d η(gj1,f2)d(9)(wj2,f1)d(wj2,f1)d(Gj2,f1)d η(gj2,f1)d(10)
其中, η \eta η是用户指定的学习率。 w w w的初始值是来自 [ 0 , 1 / k ] [0,1/\sqrt{k}] [0,1/k ]的均匀分布的随机值。为了防止 ( G j 1 , f 2 ) d − 1 2 \left(G_{j 1}, f_{2}\right)_{d}^{-\frac{1}{2}} (Gj1,f2)d21的值过大,初始值设定为1。整体的流程在上图Algorithm1进行相关描述。

实验发现: 对每个样本进行标准化后,模型的准确率稍微所有提升,同时降低了模型对参数的敏感性。

2.5在内存共享机制上并行操作

现在机器都是多核CPU。如果这些CPU都能充分利用,训练的时间会显著缩短。针对随机梯度下降提出了很多并行的处理方法。在本文中,我们采用HOGWILD的方法,这个方法允许在没有线程锁的独立运行。在上图Algorithm1中的line3行循环实现并行操作。

2.6 添加域(Filed)信息

考虑到广泛使用的LIBSVM数据格式:
label feat:val1 feat2:val2 ..., \text{label feat:val1 feat2:val2 ...,} label feat:val1 feat2:val2 ...,
其中, (feat, val) \text{(feat, val)} (feat, val)对意味着特征索引和特征数值。对于FFMs,我们延伸以上的数据格式为:
 label filed1:feat1:val1 filed2:feat2:val2 ..., \text{ label filed1:feat1:val1 filed2:feat2:val2 ...,}  label filed1:feat1:val1 filed2:feat2:val2 ...,
这样的话,我们必须为每个特征分配一个相对应的域(field)。对于有些特征,这个分配对应域是非常容易的,但对于有些特征,可能有些困难了。接下来,我们讨论各种类型的特征。

类别特征

对于线性模型,类别特征通常转化为二值特征。例如,对如下数据样本:
Yes P:ESPN A:Nike G:Male \text{Yes P:ESPN A:Nike G:Male} Yes P:ESPN A:Nike G:Male
我们对应的LIBSVM转化为以下数据格式:
Yes P:P-ESPN:1 A:A-Nike:1 G:G-Male:1 \text{Yes P:P-ESPN:1 A:A-Nike:1 G:G-Male:1} Yes P:P-ESPN:1 A:A-Nike:1 G:G-Male:1
根据类别特征中类别的个数产生对应数量的二值特征变量,二值变量对应的数值为1,(ps:就是onehot编码操作)。在LIBSVM数据格式中,不存储特征为0的值,我们采用同样的处理方式。每个类别转化为二值变量,添加变量对应的域信息,我们将每个类别变量看做一个域。因此,上述数据样本可以重写为:

数值特征

假设,我们以论文是否会被会议接收为例子讲解。我们使用三个 数值变量(1)会议接收论文的比率(AR)(2)作者的h-index(Hidx) (3)作者引用的数量(Cite)

在这里插入图片描述

有两种方式处理这种类别特征。简单的处理方式就是每个特征作为一个虚拟域,采用以下数据格式:
Yes AR:AR:45.73 Hidx:Hidx:2 Cite:Cite:3 \text{Yes AR:AR:45.73 Hidx:Hidx:2 Cite:Cite:3} Yes AR:AR:45.73 Hidx:Hidx:2 Cite:Cite:3
但是,这种虚拟域的处理方式只是对特征的简单复制,可能不能提供有效的信息。

另一种处理方式是将数值变量离散成类别变量。然后,我们利用类别变量的处理方式添加域信息。产生的数据格式如下:
Yes AR:45:1 Hidx:2:1 Cite:3:1, \text{Yes AR:45:1 Hidx:2:1 Cite:3:1,} Yes AR:45:1 Hidx:2:1 Cite:3:1,
在这里,AR的特征被近似为整数。这个数值离散化的主要问题在于最佳分割点的确定。例如,我们可以将45.73转化为“45.7”,“45”,“40”或者int(log(45.73))。而且,数值离散化后我们 可能会丢失一些信息。

单域特征

在有些数据集中,所有的特征属于单个域,因此,很难对特征分配相应的域。最典型的是发生在NLP的数据集中。接下来,我们以预测一句话是否是好心情为例:

在这里插入图片描述

在这个例子中,我们只有一个域是句子。如果我们将这个域分配到所有的单词中,那么FFMs将会被简化为FMs。读者可能会考虑到数值特征中的虚拟域的问题。考虑到FFMs模型的复杂度是 O ( n f k ) O(nfk) O(nfk)。虚拟域导致 f = n f=n f=n的问题,通常 n n n是非常大的,因此,是不适用的。

2.7模型实验

在这节中,我们会对实验的设置进行说明,调研各参数对模型的影响。**我们发现LM、Poly2、FFM对迭代次数非常的敏感。**下面我们详细讨论下提前停止的的技巧和并行加速问题进行研究。

模型评估

模型评估,我们考虑逻辑损失函数,如下所示:
log ⁡ loss ⁡ = 1 m ∑ i = 1 m log ⁡ ( 1 + exp ⁡ ( − y i ϕ ( w , x i ) ) ) 其 中 , m 为 测 试 样 本 的 数 量 \log \operatorname{loss}=\frac{1}{m} \sum_{i=1}^{m} \log \left(1+\exp \left(-y_{i} \phi\left(\boldsymbol{w}, \boldsymbol{x}_{i}\right)\right)\right)\\ 其中,m为测试样本的数量 logloss=m1i=1mlog(1+exp(yiϕ(w,xi)))m

2.8参数的影响

我们实验了 k , λ , η k,\lambda,\eta k,λ,η三个参数对模型的影响。结果显示如下:

  • 在表Figure 1a中显示,参数 k k k对损失函数的影响不大。
  • 在Figure 1b中显示,如果 λ \lambda λ设置的参数过大,模型效果不好。相反,如果 λ \lambda λ设置参数较小,模型获得较好的效果,但是,容易过拟合。
  • 对于参数 η \eta η,较小的 η \eta η,模型的收敛速度较慢。对于较大的 η \eta η,模型收敛速度较快,但是,容易过拟合。

在这里插入图片描述

2.9 提前停止

提前停止是指在训练集上达到最好的效果,为避免过拟合而提前终止训练。对于FFM模型,可以使用以下策略:

  1. 将数据划分为训练集和验证集。
  2. 在每轮迭代结束,计算验证集上的损失。
  3. 如果损失上升,记录迭代的轮数,停止训练或者直接进入步骤4.
  4. 如果需要,利用第3步最佳迭代次数在整个数据集重新训练模型。

提前停止迭代在 应用上存在一些困难。主要 在于验证集上的最优迭代次数不一定是测试集上的最佳迭代次数。

2.10并行训练

因为随机梯度的并行训练可能存在收敛问题,我们对不同的线程数进行实验,如Figure2所示,我们的并行存在类似的收敛问题。加速的含义 定义如下:
加 速 定 义 = 单 线 程 每 轮 的 运 行 时 间 多 线 程 每 轮 的 运 行 时 间 加速定义=\frac{单线程每轮的运行时间}{多线程每轮的运行时间} =线线
如Figure3所示,当使用少量的多线程时,有较好的加速效果,然而,当使用更多的线程时,并不能提升太多的速度。其中的一个解释是,当使用更多的线程时,他们需要访问同一内存地址,因此,其中的一个必须等待。这种寻址冲突在多线程时时长发生。

在这里插入图片描述

参考资料

  1. https://analyticsconsultores.com.mx/wp-content/uploads/2019/03/Factorization-Machines-Steffen-Rendle-Osaka-University-2010.pdf

  2. http://ntucsu.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值