CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解

广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码) CTR预估早期使用最多的方案是逻辑回归(LR),LR 性能非常高,但是其效果十分依赖于大量的特征工程。但是手动构造许多有用特征费时费力,因此需要有更自动化的方法来发现有效特征并构造组合特征。 2004 年Facebook 在论文 Practical Lessons from Predicting Clicks on Ads at Facebook 中提出的 GBDT + LR 模型给出了一个可行的解决方案。 GBDT + LR 模型 基本思想 GBDT 基于集成学习中的boosting思想,每次迭代都在减少 阅读详情

CTR 系列文章:

  1. 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码)
  2. CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解
  3. CTR深度学习模型之 DeepFM 模型解读
  4. 【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)
  5. CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读
  6. 【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 实现与实战(附代码+数据)
  7. 【CTR模型】TensorFlow2.0 的 xDeepFM 实现与实战(附代码+数据)

FM

在计算广告领域,因子分解机(Factorization Machines,FM)是很经典的模型,面对量大且稀疏的数据,此算法仍然可以取得比较优秀的效果。

假设有下面的数据:

Clicked?CountryDayAd_type
1USA26/11/15Movie
0China1/7/14Game
1China19/2/15Game

其中,Clicked? 是label,Country、Day、Ad_type是特征。由于三种特征都是类别型的,需要经过独热编码(One-Hot Encoding)转换成数值型特征:

Clicked?Country=USACountry=ChinaDay=26/11/15Day=1/7/14Day=19/2/15Ad_type=MovieAd_type=Game
11010010
00101001
10100101

经过编码之后,数据变的非常稀疏,在工业界这也是很难避免的一个问题。在这些稀疏的特征中,如果将其中一些特征加以关联,就可能得到与label管理更紧密的特征。例如对于 China 而言,19/2/15(即2015年2月19日)这天是春节,可能存在大量浏览和购买行为,广告点击率自然也会上升。

为了不错过任何有意义的特征组合,我们将所有特征两两组合起来形成新的特征,比较简单直接的实现方法是使用二阶多项式模式进行特征组合。例如将特征 x i , x j x_i,x_j xi​,xj​ 的组合可以用 x i x j x_ix_j xi​xj​ 表示,当且仅当 x i , x j x_i,x_j xi​,xj​都为1时得到的组合特征才有意义。需要注意的是,原本的特征在onehot编码之后已经很稀疏了,再对特征进行两两组合,那么得到的特征就更稀疏了。

在得到特征之后,假设我们用线性模型进行预测,则预测值的表达式可能是这样的:
y ^ = w 0 + ∑ i = 1 n w i x i + ∑ i n ∑ j = i + 1 n w i j x i x j \hat{y}=w_0+\sum_{i=1}^n{w_ix_i}+\sum_i^n{\sum_{j=i+1}^n{w_{ij}x_ix_j}} y^​=w0​+i=1∑n​wi​xi​+i∑n​j=i+1∑n​wij​xi​xj​
式子中 n 代表特征数量, w 0 , w i , w i j w_0, w_{i}, w_{ij} w0​,wi​,wij​ 是模型的参数。其中组合特征参数 w i j w_{ij} wij​ 共有 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n−1)​个,需要大量的非零组合特征 x i x j x_ix_j xi​xj​才容易学习到合适的参数值。如何解决二次项参数 w i j w_{ij} wij​的学习问题?

矩阵分解提供了一种解决方法,由于特征组合后的系数可以构成对称矩阵 W n × n W_{n \times n} Wn×n​,因此可以对矩阵进行分解为 W n × n = V n × k V n × k T W_{n\times n}=V_{n\times k}V_{n\times k}^T Wn×n​=Vn×k​Vn×kT​,即 w i , j = < v i , v j > w_{i,j}=<v_i,v_j> wi,j​=<vi​,vj​>,其中 k ≪ n k\ll n k≪n。于是,原本需要训练 n × n n \times n n×n 个特征,现在只需要训练 n × k n \times k n×k个:
y ^ = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j < v i , v j > = ∑ f = 1 k v i f v j f \hat{y}=w_0+\sum_{i=1}^n{w_ix_i}+\sum_{i=1}^n{\sum_{j=i+1}^n{<v_i,v_j>x_ix_j}} \\ <v_i,v_j>=\sum_{f=1}^k{v_{if}v_{jf}} y^​=w0​+i=1∑n​wi​xi​+i=1∑n​j=i+1∑n​<vi​,vj​>xi​xj​<vi​,vj​>=f=1∑k​vif​vjf​
次数计算的时间复杂度为 O ( k n 2 ) O(kn^2) O(kn2) ,能不能进一步优化一下?注意到 ∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j \sum_{i=1}^n{\sum_{j=i+1}^n{<v_i,v_j>x_ix_j}} ∑i=1n​∑j=i+1n​<vi​,vj​>xi​xj​ 实际上只是矩阵 W n × n W_{n \times n} Wn×n​ 中不包含对角线的上三角的部分,可以用 W n × n W_{n \times n} Wn×n​ 减去对角线元素后再除以2来得到:
∑ 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 ∑ j = 1 n v j f 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{<v_i,v_j>x_ix_j}} \\ & = \frac{1}{2}\sum_{i=1}^n{\sum_{j=1}^n{<v_i,v_j>x_ix_j}}-\frac{1}{2}\sum_{i=1}^n{<v_i,v_i>x_ix_i}\\ & = \frac{1}{2}\left(\sum_{i=1}^n{\sum_{j=1}^n{\sum_{f=1}^k{v_{if}v_{jf}x_ix_j}}}-\sum_{i=1}^n{\sum_{f=1}^k{v_{if}v_{if}x_ix_i}}\right) \\ & = \frac{1}{2}\left(\sum_{f=1}^k{\sum_{i=1}^n{v_{if}x_i\sum_{j=1}^n{v_{jf}x_j}}}-\sum_{i=1}^n{\sum_{f=1}^k{v_{if}v_{if}x_ix_i}}\right) \\ &= \frac{1}{2}\sum_{f=1}^k\left(\left(\sum_{i=1}^n{v_{if}x_i}\right)^2-\sum_{i=1}^n{v_{if}^2x_i^2}\right) \end{aligned} ​i=1∑n​j=i+1∑n​<vi​,vj​>xi​xj​=21​i=1∑n​j=1∑n​<vi​,vj​>xi​xj​−21​i=1∑n​<vi​,vi​>xi​xi​=21​⎝⎛​i=1∑n​j=1∑n​f=1∑k​vif​vjf​xi​xj​−i=1∑n​f=1∑k​vif​vif​xi​xi​⎠⎞​=21​⎝⎛​f=1∑k​i=1∑n​vif​xi​j=1∑n​vjf​xj​−i=1∑n​f=1∑k​vif​vif​xi​xi​⎠⎞​=21​f=1∑k​⎝⎛​(i=1∑n​vif​xi​)2−i=1∑n​vif2​xi2​⎠⎞​​
这样一来,是复杂度就降低为: O ( k n ) O(kn) O(kn)

引入二次项的FM模型,可以采用不同的损失函数用于解决回归、二元分类等问题,比如可以采用MSE(Mean Square Error)损失函数来求解回归问题,也可以采用Hinge/Cross-Entropy损失来求解分类问题。

(1)回归问题loss取最小平方误差
l o s s R ( y ^ , y ) = ( y ^ − y ) 2 loss^R(\hat y,y) = (\hat y - y)^2 lossR(y^​,y)=(y^​−y)2
所以:
∂ l o s s R ( y ^ , y ) ∂ θ = 2 ( y ^ − y ) ∂ y ^ ∂ θ \frac{\partial loss^R(\hat y,y)}{\partial \theta} = 2 (\hat y - y)\frac{\partial \hat y }{\partial\theta} ∂θ∂lossR(y^​,y)​=2(y^​−y)∂θ∂y^​​

(2)二分类问题loss取logit函数
l o s s C ( y ^ , y ) = − ln ⁡ σ ( y ^ y ) loss^C(\hat y ,y) = -\ln \sigma(\hat y y) lossC(y^​,y)=−lnσ(y^​y)
所以:
∂ l o s s C ( y ^ , y ) ∂ θ = [ ( σ ( y ^ y ) − 1 ] y ∂ y ^ ∂ θ \frac{\partial loss^C(\hat y,y)}{\partial \theta} = [(\sigma(\hat y y) - 1]y \frac{\partial \hat y }{\partial\theta} ∂θ∂lossC(y^​,y)​=[(σ(y^​y)−1]y∂θ∂y^​​

其中:
∂ ∂ θ y ^ ( x ) = { 1 , if    θ    is    w 0   x i , if    θ    is    w i   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 \\ \ 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​, xi​∑j=1n​vj,f​xj​−vi,f​xi2​,​ifθisw0​ifθiswi​ifθisvi,f​​

为了避免过拟合,也引入正则化。所以,FM的最优化问题就变成了:
θ ∗ = arg ⁡ min ⁡ θ ∑ i = 1 N ( l o s s ( y ^ ( x i ) , y i ) + ∑ λ θ θ 2 ) \theta ^* = \mathop{\arg\min}_{\theta} \sum_{i=1}^N\left(loss(\hat y(x_i) ,y_i)+ \sum \lambda_\theta \theta^2\right) θ∗=argminθ​i=1∑N​(loss(y^​(xi​),yi​)+∑λθ​θ2)
注: λ θ \lambda_\theta λθ​是正则化系数。

FFM

在FFM(Field-aware Factorization Machines )中每一维特征(feature)都归属于一个特定的field。对于进行onehot编码后的类别特征都属于同一个field。对于连续特征,一个特征就对应一个Field。例如:

在这里插入图片描述

当然也可以对连续特征离散化,一个分箱成为一个特征。例如:

在这里插入图片描述

不论是连续特征还是离散特征,它们都有一个共同点:同一个field下只有一个feature的值不是0,其他feature的值都是0。

FFM模型认为 v i v_i vi​不仅跟 x i x_i xi​有关系,还跟与 x i x_i xi​相乘的 x j x_j xj​所属的Field有关系。于是FFM模型的公式如下:
y ^ = ∑ i = 1 n ∑ j = i + 1 n v i , f j ⋅ v j , f i x i x j \hat{y}=\sum_{i=1}^n{\sum_{j=i+1}^n{v_{i,f_j}\cdot v_{j,f_i}x_ix_j}} y^​=i=1∑n​j=i+1∑n​vi,fj​​⋅vj,fi​​xi​xj​
与FM的公式相比,它只保留了二次项。如何理解这种二次项系数的变化?可以通过下面的图片来理解 FM 与 FFM 在计算二次项系数时的区别:

在这里插入图片描述

FM 在计算二次项系数的时候,任意两个特征的组合都需要两个一维的隐含向量(分别对应图中上半部分棕色一维向量 v i v_i vi​ 和蓝色的一维向量 v j v_j vj​ )的内积来表示。

而在FFM中,计算二次项系数的时候,把一维向量扩充了F倍(F表示所有特征对应了F个field,在本例中F取值为3,即field1年龄、field2城市,field3性别),构成“field隐含矩阵”,即图中下半部分棕色的矩阵 v i j v_{ij} vij​ 和蓝色的矩阵 v j i v_{ji} vji​。当计算 x i , x j x_i, x_j xi​,xj​这个二次项的系数时,则需要:

1,从 v i j v_{ij} vij​ 中取出 x j x_j xj​ 特征对应的field所在的行向量 v i f j v_{if_j} vifj​​:

在这里插入图片描述

2,从 v j i v_{ji} vji​ 中取出 x i x_i xi​ 特征对应的field所在的行向量 v j f i v_{jf_i} vjfi​​:

在这里插入图片描述

然后将取出的向量计算内积作为 x i x j x_ix_j xi​xj​系数。

总的来说,这个过程可以描述为:每个特征对应了一组隐向量,当 x i x_i xi​ 与 x j x_j xj​ 特征进行组合时, x i x_i xi​会从 x i x_i xi​那组隐向量中选择出与特征 x j x_j xj​的域 f j f_{j} fj​对应的隐向量 v i , f j v_{i, f_{j}} vi,fj​​ 进行交叉。同理, x j x_j xj​ 也会选择与 x i x_i xi​ 的域 f i f_i fi​ 对应的隐向量 v j , f i v_{j, f_i} vj,fi​​ 进行交叉。

如果隐向量的长度为 k,那么FFM的二次参数有 n F k nFk nFk 个,远多于FM模型的 nk 个。此外,由于隐向量与field相关,FFM二次项并不能够化简,其预测复杂度是 O ( k n 2 ) O(k n^2) O(kn2)。

以上文的第一个表格数据为例:

在这里插入图片描述

计算用户1的 y ^ \hat y y^​过程为:
y ^ = ∑ i = 1 n ∑ j = i + 1 n v i , f j ⋅ v j , f i x i x j = v 1 , f 2 ⋅ v 2 , f 1 x 1 x 2 + v 1 , f 2 ⋅ v 3 , f 1 x 1 x 3 + v 1 , f 2 ⋅ v 4 , f 1 x 1 x 4 + ⋯ \begin{aligned} \hat{y}&=\sum_{i=1}^n{\sum_{j=i+1}^n{v_{i,f_j}\cdot v_{j,f_i}x_ix_j}} \\ &=v_{1,f_2}\cdot v_{2,f_1}x_1x_2+v_{1,f_2}\cdot v_{3,f_1}x_1x_3+v_{1,f_2}\cdot v_{4,f_1}x_1x_4+\cdots \end{aligned} y^​​=i=1∑n​j=i+1∑n​vi,fj​​⋅vj,fi​​xi​xj​=v1,f2​​⋅v2,f1​​x1​x2​+v1,f2​​⋅v3,f1​​x1​x3​+v1,f2​​⋅v4,f1​​x1​x4​+⋯​
于是 y ^ \hat y y^​ 对 v 1 , f 2 v_{1,f2} v1,f2​ 的偏导为:
∂ y ^ ∂ v 1 , f 2 = v 2 , f 1 x 1 x 2 + v 3 , f 1 x 1 x 3 + v 4 , f 1 x 1 x 4 \frac{\partial{\hat{y}}}{\partial{v_{1,f_2}}}=v_{2,f1}x_1x_2+v_{3,f1}x_1x_3+v_{4,f1}x_1x_4 ∂v1,f2​​∂y^​​=v2,f1​x1​x2​+v3,f1​x1​x3​+v4,f1​x1​x4​
注意 x 2 , x 3 , x 4 x_2,x_3,x_4 x2​,x3​,x4​是同一个属性的one-hot表示,即 x 2 , x 3 , x 4 x_2,x_3,x_4 x2​,x3​,x4​中只有一个为1,其他都为0。在本例中 x 3 = x 4 = 0 , x 2 = 1 x_3=x_4=0,x_2=1 x3​=x4​=0,x2​=1,所以:
∂ y ^ ∂ v 1 , f 2 = v 2 , f 1 x 1 x 2 \frac{\partial{\hat{y}}}{\partial{v_{1,f_2}}}=v_{2,f_1}x_1x_2 ∂v1,f2​​∂y^​​=v2,f1​​x1​x2​
推广到一般情况:
∂ y ^ ∂ v i , f j = v j , f i x i x j \frac{\partial{\hat{y}}}{\partial{v_{i,f_j}}}=v_{j,f_i}x_ix_j ∂vi,fj​​∂y^​​=vj,fi​​xi​xj​
实际项目中 x 是非常高维的稀疏向量,求导时只关注那些非0项即可。另外,在执行点击率预测时,会在 y ^ \hat y y^​ 外面再套上一层 sigmoid 函数。接下来,我们用 z 来表示 y ^ \hat y y^​:
z = y ^ = ∑ i = 1 n ∑ j = i + 1 n v i , f j ⋅ v j , f i x i x j z=\hat y=\sum_{i=1}^n{\sum_{j=i+1}^n{v_{i,f_j}\cdot v_{j,f_i}x_ix_j}} z=y^​=i=1∑n​j=i+1∑n​vi,fj​​⋅vj,fi​​xi​xj​
用 α 表示对点击率的预测值:
a = σ ( z ) = 1 1 + e − z = 1 1 + e − ϕ ( v , x ) a=\sigma(z)=\frac{1}{1+e^{-z}}=\frac{1}{1+e^{-\phi(v,x)}} a=σ(z)=1+e−z1​=1+e−ϕ(v,x)1​
二分类问题常用的交叉熵损失函数:
C = − [ y l n a + ( 1 − y ) l n ( 1 − a ) ] , a = σ ( z ) C = -[ylna+(1-y)ln(1-a)], a=\sigma(z) C=−[ylna+(1−y)ln(1−a)],a=σ(z)
其中,σ 为 sigmoid 函数,则有:
∂ C ∂ z = ∂ C ∂ a σ ′ ( z ) = − y a σ ′ ( z ) + 1 − y 1 − a σ ′ ( z ) = a − y a ( 1 − a ) σ ′ ( z ) = a − y \frac{\partial C}{\partial z}=\frac{\partial C}{\partial a}\sigma'(z)=-\frac{y}{a}\sigma'(z)+\frac{1-y}{1-a}\sigma'(z)=\frac{a-y}{a(1-a)}\sigma'(z)=a-y ∂z∂C​=∂a∂C​σ′(z)=−ay​σ′(z)+1−a1−y​σ′(z)=a(1−a)a−y​σ′(z)=a−y

进而可以得到:
∂ C ∂ z = a − y = { − 1 1 + e z i f   y 是 正 样 本 1 1 + e − z i f   y 是 负 样 本 \frac{\partial C}{\partial z}=a-y=\left\{\begin{matrix}-\frac{1}{1+e^z} & if\ y是正样本 \\ \frac{1}{1+e^{-z}} & if\ y是负样本\end{matrix}\right . ∂z∂C​=a−y={−1+ez1​1+e−z1​​if y是正样本if y是负样本​
结合上面求出的 ∂ y ^ ∂ v i , f j \frac{\partial{\hat{y}}}{\partial{v_{i,f_j}}} ∂vi,fj​​∂y^​​ 和 ∂ C ∂ z \frac{\partial C}{\partial z} ∂z∂C​,代入下面的公式即可求得梯度值:
∂ C ∂ v i , f j = ∂ C ∂ z ∂ z ∂ v i , f j \\ \frac{\partial C}{\partial{v_{i,f_j}}}=\frac{\partial C}{\partial z}\frac{\partial{z}}{\partial{v_{i,f_j}}} ∂vi,fj​​∂C​=∂z∂C​∂vi,fj​​∂z​
然后就可以使用梯度下降算法对参数进行优化了。

双线性 FFM(Bilinear-FFM)

就像前面提到的,FFM 引入了更多的参数,在提升精度的同时也带来了巨大的计算量。国内的微博团队对FFM加以改进,得到了双线性 FFM(Bilinear-FFM)模型。

由于FFM每个特征都需要维护一个 n × F n \times F n×F 大小的矩阵,如果可以使部分特征共享参数,就能大幅度减少参数,这就是双线性 FFM 的核心思想。如下图所示:

在这里插入图片描述

具体的参数共享方法又可以分为下面三种方式:

在这里插入图片描述

就结果而言,改进后的 Bi-FFM 与FFM精度差距不大:

在这里插入图片描述

但是参数个数少了很多:

在这里插入图片描述

这意味着以更少的计算量得到近似于FFM的效果,优化还是很明显的。

参考文章:

从 FFM 到 DeepFFM,推荐排序模型到底哪家强?

深入FFM原理与实践

FM在特征组合中的应用

FFM原理及公式推导

分解机(Factorization Machines)推荐算法原理

FFM算法原理及Bi-FFM算法实现

CTR深度学习模型之 DeepFM 模型解读 上一篇文章讲了一些比较经典的 CTR 模型:CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解,从这一篇文章开始将会陆续介绍一些使用深度学习完成CTR预估的模型,本文主要讲的是DeepFM模型。 之前讲的 FM、FFM、Bi-FFM 本质上都是要学习户点击行为背后隐含的特征组合,不过这些经典模型主要是进行二阶特征组合。理论上也可以进行更高阶的特征组合,但是会造成特征维度指数级增长以及数据稀疏等问题。对于高阶特征组合问题不难想到可以用多层的神经网络解决。 DeepFM 的整体结构 对于类 阅读详情

相关推荐

FM系列算法解读(FM+FFM+DeepFM)

https://blog.youkuaiyun.com/jiangjiang_jian/article/details/80631180

数据喵的博客 7万+

FFM及DeepFFM模型及其在推荐系统中的应用

大纲 今天我们主要介绍一下,FFM模型和它的深度学习模型版本,以及我们在这个基础上改造的两个模型。首先,介绍大规模推荐系统的整个流程框架和其中一些比较核心的技术点。第二,介绍推荐系统的两大类Rank模型:传统模型和深度学习模型的发展历程和各自的特点。第三,介绍FFM模型的优缺点,针对缺点,提出一个改进的版本,即“双线性FFM模型”。另外,大致介绍,典型的深度学习模型的特点及使用场景。最后,介...

Yasin的博客 4590

软件无线电安全之HackRF One初探

在这一小节中,我们初步了解了HackRF的接收和发送信号的功能。并通过指定操作进行了接收和发送,并以GPS欺骗实验为例,对HackRF One的信号发送有了一定程序的理解。在后续的小节中,我们会以GNU Radio相关实验为例深入了解HackRF One的信号接收和发送能力。

蛇矛实验室 1万+

推荐系统3--FM和FFM

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_41403341的博客 884

TEA685X 车机 收音机模块

TEA685X 车机 收音机模块

汽车AM/FM有源天线LNA解决方案

本应用笔记介绍AM/FM汽车天线的一个参考设计(RD)。设计采用了适用于有源天线模块的高度集成AM/FM低噪声放大器(LNA)MAX2180。LNA在AM和FM信号通路上均集成了Maxim的自动增益控制技术,带有用户可选设置点。

手机FM LNA方案设计

关于手机FM的使用,较为传统的则是在打开FM应用前先插入有线耳机才能使用FM应用。然而随着智能手机的进步以及有线耳机日益被无线蓝牙耳机所代替,内置FM LNA方案被应用的越来越多,无需插入有线耳机,复用例如GSM天线也能实现FM功能。

weixin_43772512的博客 2287

windows10家庭版输入loadrunner注册码时报“License security violation. Operation isnot allowed”的解决办法

有可能出现2个错误第一个可能是第二个可能是“License security violation. Operation isnot allowed”ok,在此我在百度找了很多方法,大部分的方法都是删除注册表,但我根本就找不到这个注册表,而后又是管理中心找本地用户和组,但我依旧找不到这个玩意,然后可能是windows10家庭版本来就没有这个。再然后又以管理员身份去运行填写,好的,依旧报错,依旧未解决...

qq_30990097的博客 2558

双线性ffm

https://max.book118.com/html/2019/0122/5034004134002003.shtm 转载于:https://www.cnblogs.com/zhangbojiangfeng/p/10773595.html

weixin_30512785的博客 488

引入 CloudWeGo 后飞书管理后台平台化改造的演进史

飞书管理后台是飞书套件专为企业管理员提供的信息管理平台,它通过引入 Kitex 泛化调用对飞书管理后台进行平台化改造,成为了企业统一数字化管理平台。本文将从三个方面为大家讲解 Kitex 泛化调用在飞书管理后台平台化改造过程中的落地实践。...

weixin_44186218的博客 1762

单像素成像技术原理与Matlab仿真实现

傅里叶变换是数字图像处理的核心数学工具,它将图像从空间域转换到频率域表示。基于傅里叶频谱分析的成像技术通过采集关键频率分量实现图像重建,这种原理催生了单像素成像这一创新技术。单像素成像利用空间光调制器和单个探测器直接测量傅里叶系数,结合压缩感知算法实现高效成像,在红外、太赫兹等特殊波段展现出独特优势。通过Matlab仿真可以验证傅里叶基测量矩阵的构建、压缩感知重建等关键技术环节,为实际系统开发提供理论基础。该技术在弱光环境成像、显微观测等领域具有重要应用价值,其低成本特性也大大降低了特殊波段成像的门槛。

weixin_29061425的博客 344

FFM算法原理及Bi-FFM算法实现

1. FFM算法来源FFM(Field-aware Factorization Machine)算法是FM(Factorization Machine)算法的升级版,FM算法的公式如下:...

Tak-Wah Blog 2711

绕过限制?实测修改UA在PC端运行微信小程序的可行性及风险

本文探讨了通过修改User-Agent(UA)在PC端运行微信小程序的技术可行性及风险。分析了小程序设备限制的技术原理,包括`wx.getSystemInfo`API和UA检测机制,并提供了多种修改方案及其局限性。同时强调了潜在的安全和法律风险,推荐使用官方模拟器或安卓模拟器等更安全的替代方案。

weixin_30879169的博客 362

【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)

本篇文章讲解 DeepFM 的 tensorflow2.0 实现,并使用 Criteo 数据集的子集加以实践。如果在看本文时有所困惑,可以看看DeepFM的相关理论: CTR深度学习模型之 DeepFM 模型解读 。 本文使用的数据下载地址于代码获取地址在文末获取。 首先了解一下 Criteo数据集,它由有39个特征,1个label列,其中以I开头的为数值型特征,以C开头的为类别特征: 可以看到数据中有缺失值需要填充,并且类别变量需要进行类别编码(onehot 编码的任务交给模型),这部分预处理的代码不详

VariableX的博客 4476

Qt/C++编写自定义控件49-飞机仪表盘

一、前言 飞行仪表是测定和表示飞机数据的工具,飞机中必不可少的一部分,飞行员根据飞行仪表表示的数据才能正确地做出判断。一般飞机仪表包括高度表+空速表+垂直速率表+姿态仪+航向指示表+转弯协调表。 这次要绘制的是其中的姿势仪,显示飞机相对于地平线的姿态,看姿态仪,飞行员能判断飞机姿态为偏左偏右,及偏上和偏下。姿态仪作用原理为一高度旋转的陀螺,不论飞机的姿态如何变化,此陀螺的定轴性在空间保持相同,因而...

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 7024

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲Yocto开发专栏前言

fulinux的博客 3万+

CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读

本篇文章讲解 CTR 经典模型 Deep & Cross (DCN) 与 xDeepFM,之所以把这两个模型放一起讲是因为它们有很近的“血缘关系”。理解了 DCN 的思想,再去理解 xDeepFM 就不觉得困难了。 以下文章对这两个模型的讲解很到位: 首先了解揭秘 Deep & Cross : 如何自动构造高阶交叉特征 推荐系统遇上深度学习(二十二)–DeepFM升级版XDeepFM模型强势来袭! xDeepFM:名副其实的 ”Deep” Factorization Machine 因此,本

VariableX的博客 2401

025、Zephyr RTOS设备树覆盖与修改

本文分享了在Zephyr RTOS中使用设备树覆盖(overlay)的实战经验。作者通过一个工业数据采集项目中GPIO无法拉高的调试案例,揭示了设备树覆盖的"叠加"本质而非简单替换。文章详细介绍了覆盖文件的正确编写方式,包括节点引用、pinctrl配置等技巧,并总结了常见陷阱如状态设置不完整、别名冲突等问题。特别强调了条件覆盖的用法和调试方法,最后提出了覆盖文件管理的五项实用原则,强调设备树覆盖是硬件与软件之间的重要契约,需要谨慎对待。全文以实际项目为背景,提供了可操作性强的技术建议。

m0_50546716的博客 33

【CTR模型】TensorFlow2.0 的 xDeepFM 实现与实战(附代码+数据)

本篇文章讲解 xDeepFM 的 tensorflow2.0 实现,并使用 Criteo 数据集的子集加以实践。如果在看本文时有所困惑,可以看看 xDeepFM 的相关理论:CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读。 本文使用的数据下载地址于代码获取地址在文末获取。 首先了解一下 Criteo数据集,它由有39个特征,1个label列,其中以I开头的为数值型特征,以C开头的为类别特征: 可以看到数据中有缺失值需要填充,并且类别变量需要进行类别编码(onehot

VariableX的博客 2646

【DaVinci Developer专题】-23-IDT高阶应用:结构体类型的数组

共8页 目录 1 创建一个Record IDT 2 创建一个Array IDT 3 创建一个S/R Port Interface 4 创建一个Constant 5 导入CFG生成代码的总结 6 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键字: 缩略语/术语 含义 DEV DaVinci Developer .

「汽车电子助手」的博客 1667

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 实现与实战(附代码+数据)

本篇文章讲解 DeepFM 的 tensorflow2.0 实现,并使用 Criteo 数据集的子集加以实践。如果在看本文时有所困惑,可以看看DeepFM的相关理论:CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读。 本文使用的数据下载地址于代码获取地址在文末获取。 首先了解一下 Criteo数据集,它由有39个特征,1个label列,其中以I开头的为数值型特征,以C开头的为类别特征: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pTS

VariableX的博客 2537

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

FFM—线性回归

FFM公式模型: 基于隐式反馈: cui=1+αruic_{ui} = 1+\alpha r_{ui}cui​=1+αrui​ 其中rui表示动作的频率,比如购买、加购物车、收藏、点击的次数,或者观看/收听视频/音频的时长等等,α是置信度系数,cui表示信任度,按照这种方式,我们存在最小限度的信任度,并且随着我们观察到的正偏向的证据越来越多,信任度也会越来越大。 FFM模型公式为: cui=w0...

Rainbow_DCH的博客 953

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【转载】深入FFM原理与实践

原文地址:http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html 深入FFM原理与实践 del2z, 大龙 ·2016-03-03 09:00 FM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,仍然能够得到优秀的性能和效果的特性,屡

xceman1997的专栏 1万+

FM,FMM,deepFFM模型总结,深度排序模型

微博团队张俊林 https://zhuanlan.zhihu.com/p/67795161 如果你是 liblinear、libfm、libffm 的用户,那么现在 xLearn 将会是你更好的选 https://xlearn-doc-cn.readthedocs.io/en/latest/index.html 一般我们做LR,会在上面求和基础上,套一个sigmoid函数,也就是上图中...

u013385018的专栏 3279

FFM原理及公式推导

上一篇讲了FM(Factorization Machines),今天说一说FFM(Field-aware Factorization Machines )。 回顾一下FM: \begin{equation}\hat{y}=w_0+\sum_{i=1}^n{w_ix_i}+\sum_{i=1}^n{\sum_{j=i+1}^n{v_i\cdot v_jx_ix_j}}\label{fm}\end...

weixin_34081595的博客 758

ctr/cvr预估之FM模型

因子分解机(Factorization Machines, FM)是一种先进的机器学习模型,专为处理具有大量特征的稀疏数据集而设计。FM模型最初由Steffen Rendle在2010年提出,它结合了线性模型的可解释性和因子分解模型的泛化能力。

LUyan10086的博客 1811
上一篇: 【推荐系统(二)】协同过滤之隐语义模型(LFM)
下一篇: CTR深度学习模型之 DeepFM 模型解读
VariableX
博客等级 码龄7年 142粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值