精华内容
下载资源
问答
  • FM算法详解

    万次阅读 多人点赞 2016-08-07 18:02:06
    1.FM背景在计算广告中,CTR预估(click-through rate)是非常重要的一个环节,因为DSP后面的出价要依赖于CTR预估的结果。...今天,我们就来讲讲FM算法。2.one-hote编码带来的问题FM(Factorization Machine)主要是为了

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
    欢迎大家star,留言,一起学习进步

    1.FM背景

    在计算广告中,CTR预估(click-through rate)是非常重要的一个环节,因为DSP后面的出价要依赖于CTR预估的结果。在前面的相关博文中,我们已经提到了CTR中相关特征工程的做法。对于特征组合来说,业界现在通用的做法主要有两大类:FM系列与Tree系列。今天,我们就来讲讲FM算法。

    2.one-hote编码带来的问题

    FM(Factorization Machine)主要是为了解决数据稀疏的情况下,特征怎样组合的问题。已一个广告分类的问题为例,根据用户与广告位的一些特征,来预测用户是否会点击广告。数据如下:(本例来自美团技术团队分享的paper)
    这里写图片描述
    clicked是分类值,表明用户有没有点击该广告。1表示点击,0表示未点击。而country,day,ad_type则是对应的特征。前面我们在http://blog.csdn.net/bitcarmanlee/article/details/51472816一文中专门提到过,对于这种categorical特征,一般都是进行one-hot编码处理。

    将上面的数据进行one-hot编码以后,就变成了下面这样
    这里写图片描述

    因为是categorical特征,所以经过one-hot编码以后,不可避免的样本的数据就变得很稀疏。举个非常简单的例子,假设淘宝或者京东上的item为100万,如果对item这个维度进行one-hot编码,光这一个维度数据的稀疏度就是百万分之一。由此可见,数据的稀疏性,是我们在实际应用场景中面临的一个非常常见的挑战与问题。

    one-hot编码带来的另一个问题是特征空间变大。同样以上面淘宝上的item为例,将item进行one-hot编码以后,样本空间有一个categorical变为了百万维的数值特征,特征空间一下子暴增一百万。所以大厂动不动上亿维度,就是这么来的。

    3.对特征进行组合

    普通的线性模型,我们都是将各个特征独立考虑的,并没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的。最简单的以电商为例,一般女性用户看化妆品服装之类的广告比较多,而男性更青睐各种球类装备。那很明显,女性这个特征与化妆品类服装类商品有很大的关联性,男性这个特征与球类装备的关联性更为密切。如果我们能将这些有关联的特征找出来,显然是很有意义的。

    一般的线性模型为:
    y=ω0+∑i=1nωixiy = \omega_0 + \sum_{i=1}^{n} \omega_i x_iy=ω0+i=1nωixi

    从上面的式子很容易看出,一般的线性模型压根没有考虑特征间的关联。为了表述特征间的相关性,我们采用多项式模型。在多项式模型中,特征xix_ixixjx_jxj的组合用xixj表示x_ix_j表示xixj。为了简单起见,我们讨论二阶多项式模型。具体的模型表达式如下:

    y=ω0+∑i=1nωixi+∑i=1n−1∑j=i+1nωijxixjy = \omega_0 + \sum_{i=1}^{n} \omega_i x_i + \sum_{i=1}^{n-1}\sum_{j=i+1}^{n} \omega_{ij}x_ix_jy=ω0+i=1nωixi+i=1n1j=i+1nωijxixj

    上式中,nnn表示样本的特征数量,xix_ixi表示第iii个特征。
    与线性模型相比,FM的模型就多了后面特征组合的部分。

    4.FM求解

    从上面的式子可以很容易看出,组合部分的特征相关参数共有n(n−1)2\frac{n(n-1)}{2}2n(n1)个。但是如第二部分所分析,在数据很稀疏的情况下,满足xix_ixi,xjx_jxj都不为0的情况非常少,这样将导致ωij\omega_{ij}ωij无法通过训练得出。

    为了求出ωij\omega_{ij}ωij,我们对每一个特征分量xix_ixi引入辅助向量Vi=(vi1,vi2,⋯ ,vik)V_i=(v_{i1},v_{i2},\cdots,v_{ik})Vi=(vi1,vi2,,vik)。然后,利用vivjTv_iv_j^TvivjTωij\omega_{ij}ωij进行求解。

    这里写图片描述

    那么ωij\omega_{ij}ωij组成的矩阵可以表示为:
    这里写图片描述
    上面的表达形式,就对应了一种矩阵的分解。对kkk值的限定,就反应了FM模型的表达能力。

    要求出<vi,vj><v_i,v_j><vi,vj>,主要是采用了如公式((a+b+c)2−a2−b2−c2((a+b+c)^2-a^2-b^2-c^2((a+b+c)2a2b2c2求出交叉项。具体过程如下:这里写图片描述

    展开全文
  • FM的总结:1、FM算法与线性回归相比增加了特征的交叉。自动选择了所有特征的两两组合,并且给出了两两组合的权重。2、上一条所说的,如果给两两特征的组合都给一个权重的话,需要训练的参数太多了。比如我们有N维的...

    FM的总结:

    1、FM算法与线性回归相比增加了特征的交叉。自动选择了所有特征的两两组合,并且给出了两两组合的权重。

    2、上一条所说的,如果给两两特征的组合都给一个权重的话,需要训练的参数太多了。比如我们有N维的特征,这样的话就需要N*N量级的参数。FM算法的一个优点是减少了需要训练的参数。这个也是参考了矩阵分解的想法。有N个特征,特征间的权重,需要一个N*N的权重矩阵。把这个N*N的矩阵分解成  K*N的矩阵V的乘积,权重矩阵W=VT*V。把每个特征用长度为K的向量来表示,此处应该是每个特征也有一个向量,而不是每个特征的值有一个向量。比如有一个长度为K的向量来表示性别这个特征。

    此处的K是自己设置的,K<

    3、FM算法的表示公式为:

    d128826357337fb7ac2cca82fe3966d0.png

    如果按这个直接算的话就是N2的复杂度了,比较高。然后针对后一部分进行化简,变成KN复杂度的。

    这部分的化简主要使用了 x*y  = 1/2( (x+y)2 - x2 - y2)。

    变换之后的是这个样子的:

    fe789ae8de4c70bd6bad1beebb29ec77.png

    4、然后是FM的训练。

    我们再来看一下FM的训练复杂度,利用SGD(Stochastic Gradient Descent)训练模型。模型各个参数的梯度如下

    7a373fb0e78a667be4d37d98f3ceaddc.png

    5992cdf95b8497c4fc7b24d09275b82f.png

    未完待续,等我看完论文再写点

    参考资料:https://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html

    展开全文
  • 豆瓣FM的推荐算法没有停止,反而是在不断演进当中,伴随着它成长的用户,会慢慢发现越来越多的惊喜与满意。豆瓣FM是中国互联网实践个性化服务的一个很好的土壤.单位换算及读法1微米(um)=1000纳米(nm); 1纳米(nm) =...

    在简单频率调制中,两个振荡器都只用正弦曲线(Sinusoidal)的波形。不过,由于. 这使得作曲家也不必用频谱过于复杂的波形完成FM合成。事实上,如用一个频谱成分.

    豆瓣FM的推荐算法没有停止,反而是在不断演进当中,伴随着它成长的用户,会慢慢发现越来越多的惊喜与满意。豆瓣FM是中国互联网实践个性化服务的一个很好的土壤.

    单位换算及读法

    1微米(um)=1000纳米(nm); 1纳米(nm) =1000 皮米(pm) 1皮米(pm)=1000飞米(fm) 长度单位还有兆米(Mm)、千米(km)、分米(dm)、厘米.

    计算挡板弯矩什么的

    高中物理公式总结 物理定理、定律、公式表 一、质点的运动(1)------直线运动 1)匀变速直线运动 1.平均速度V平=s/t(定义式) 2.有用推论Vt2-Vo2=2as 3.中间时刻.

    要详细的不要粘贴的那种,比如说IP为192.168.10.89 子网掩码255.255.255。.

    简单的算法:如果子网掩码是255.255.255.192,那么说明一个网络段的范围是256-192=64,那么说明每个子网有64个IP,其中第一个为子网号,最后一个为广播地址。就.

    1.批处理系统:增加系统吞吐量和提高系统资源的利用率;2.分时系统:保证每个分. 先来先服务队列 最短优先优先队列 高优先权优先调度算法 优先权调度算法的类型 高.

    模拟信号用周期t的理想冲激采样后得到一个离散时间信号,如果模拟域的频率是f,则在满足nyquist采样条件的情况下,数字域相应的频率是f'=f/fs。你所给出的模拟信号的.

    FM就是调频调制信号,通过电磁波来传递,波长你可以根据书中的公式自己来计算一下,或者; c=λf(f=c/λ) c:波速(这是一个常量,c约等于3*10^8m/s) 单位:m/s f:.

    FM可以是防盗门或者防火门,但是在建筑施工图中都是指防火门,防火门等级有甲,乙,丙等等级,例如甲FM08,意思是甲级防火门,门宽80cm 。建筑施工图中都有门.

    FM发射电路采用稳定频率的锁相环系统。这一部分由高频振荡器、高频放大器及锁相环频率合成器组成。调频由变容二极管组成的高频振荡器实现,高频振荡器是锁相环.

    林俊杰中 【听见幸福】歌词中的FM是什么意思a?

    FM是收音机的意思!!!

    向大家请教几个问题,假如收音机收到91.4这个台,是不是指发射台发射的频。

    收音机收到91.4这个台,就是指发射台发射的频率是91.4Mhz。当然,不排除你接收到的是谐波,不是电台的实际发射频率,不过那样信号质量会很差,很容易辨别。计算.

    窄带am、fm的带宽都是调制信号频率的两倍; 不同点是am是线性调制,频谱结构与基带相同,fm是非线性调制,频谱结构发生变化。 更主要的是,am调制是载波信号振.

    我家电脑设备管理器中CPU信息是Pentium(R)Dula-Core CPUT4200@2.00。

    双核就是有两个核心,每个的频率是2.00GHZ.它的综合频率不是简单的2x2=4,这个不是这样算的,但也没有一个准确的数,但可以从性能上来比较,也就是说它的性能比.

    频率=这个数出现的次数/总数 频数指这个数出现的次数

    假设模拟信号是a=sin(kt),以周期为T进行采样,得数字信号:d=sin(kT)n 式中n为整数,第二个式子不知道你能不能看懂,也就是说用周期为T的脉冲采样的话,数字信号.

    交流电流 40A/400A ±(2%+12) 0.3A值时要加减0.006+12还是0.006+0.012 应.

    福光电子fm 7系列高精度数字万用表: 仪表为便携的、专业的测量仪器,大屏幕液晶数字显示,并有背光源,便于读数,量程开关单手操作便于测量,具有过载保护和低电.

    根据你说的y应该是一个关于i的函数。 y与i的关系不知道我也只能写这些了 clc;clear; . fz=fz+(2000-i)*y; %分母计算方法 fm=fm+y; %分子计算方法 end Z=fz./fm; %Z的符.

    经常看到fm友们讨论球员的潜力达190,能力才70等等问题,搞的我一头雾水。

    潜力和能力是一种隐藏属性 一般潜力高而且能力低的球员成长空间会比较大 下个球探工具就可以查看能力值和潜力值了

    收听率/收视率除以人口基数等于你要的答案

    展开全文
  • 准确的估计 对于提高...业界常用的方法有人工特征工程 + LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree) + LR[1][2][3]、FM(Factorization Machine)[2][7]和FFM(Field-aware Factorization Mach...

    应用场景:

    点击预估。

    准确的估计

    equation?tex=ctr%2C+cvr 对于提高流量的价值,增加广告收入有重要的指导作用。业界常用的方法有人工特征工程 + LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree) + LR[1][2][3]、FM(Factorization Machine)[2][7]和FFM(Field-aware Factorization Machine)[9]模型。在这些模型中,FM和FFM近年来表现突出,分别在由Criteo和Avazu举办的CTR预测竞赛中夺得冠军[4][5]。

    在进行CTR预估时,除了单特征外,往往要对特征进行组合。对于特征组合来说,业界现在通用的做法主要有两大类:FM系列与Tree系列。今天来讲讲FM算法。

    目的:

    旨在解决稀疏数据下的特征组合问题。

    优势:高度稀疏数据场景;

    具有线性的计算复杂度。

    FM原理(个人理解属于:个性化特征)为什么进行特征组合?

    下面以一个示例引入FM模型。假设一个广告分类的问题,根据用户和广告位相关的特征,预测用户是否点击了广告。源数据如下:

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

    由上表可以看出,经过One-Hot编码之后,大部分样本数据特征是比较稀疏的。上面的样例中,每个样本有7维特征,但平均仅有3维特征具有非零值。实际上,这种情况并不是此例独有的,在真实应用场景中这种情况普遍存在。例如,CTR/CVR预测时,用户的性别、职业、教育水平、品类偏好,商品的品类等,经过One-Hot编码转换后都会导致样本数据的稀疏性。特别是商品品类这种类型的特征,如商品的末级品类约有550个,采用One-Hot编码生成550个数值特征,但每个样本的这550个特征,有且仅有一个是有效的(非零)。由此可见,数据稀疏性是实际问题中不可避免的挑战。

    One-Hot编码的另一个特点就是导致特征空间大。例如,商品品类有550维特征,一个categorical特征转换为550维数值特征,特征空间剧增。

    同时通过观察大量的样本数据可以发现,某些特征经过关联之后,与label之间的相关性就会提高。例如,“USA”与“Thanksgiving”、“China”与“Chinese New Year”这样的关联特征,对用户的点击有着正向的影响。换句话说:来自“China”的用户很可能会在“Chinese New Year”有大量的浏览、购买行为;而在“Thanksgiving”却不会有特别的消费行为。这种关联特征与label的正向相关性在实际问题中是普遍存在的,如,,品类偏好等。因此,引入两个特征的组合是非常有意义的。如何组合?

    多项式模型是包含特征组合的最直观的模型。在多项式模型中,特征

    equation?tex=x_i

    equation?tex=x_j 的组合采用

    equation?tex=x_ix_j 表示,即

    equation?tex=x_i

    equation?tex=x_j都非零时,组合特征

    equation?tex=x_ix_j 才有意义。从对比的角度,本文只讨论二阶多项式模型。模型的表达式如下:

    equation?tex=y%28X%29%3D%5Comega_0%2B%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7B%5Comega_ix_i%7D%2B%5Csum_%7Bi%3D1%7D%5E%7Bn-1%7D%7B%5Csum_%7Bj%3Di%2B1%7D%5E%7Bn%7D%7B%5Comega_%7Bij%7Dx_ix_j%7D%7D (1)

    其中,

    equation?tex=n 代表样本的特征数量,

    equation?tex=x_i是第

    equation?tex=i 个特征的值,

    equation?tex=%5Comega_0%2C+%5Comega_i%2C+%5Comega_%7Bij%7D 是模型参数。

    从公式来看,模型前半部分就是普通的LR线性组合,后半部分的交叉项即:特征的组合。单从模型表达能力上来看,FM的表达能力是强于LR的,至少不会比LR弱,当交叉项参数全为0时退化为普通的LR模型。

    从公式(1)可以看出,组合特征的参数一共有

    equation?tex=%5Cfrac%7Bn%28n-1%29%7D%7B2%7D 个,任意两个参数都是独立的。然而,在数据稀疏性普遍存在的实际应用场景中,二次项参数的训练是很困难的。其原因是:每个参数

    equation?tex=+%5Comega_%7Bij%7D 的训练需要大量

    equation?tex=x_i

    equation?tex=x_j都非零的样本;由于样本数据本来就比较稀疏,满足“

    equation?tex=x_i

    equation?tex=x_j都非零”的样本将会非常少。训练样本的不足,很容易导致参数

    equation?tex=+%5Comega_%7Bij%7D 不准确,最终将严重影响模型的性能。如何解决二次项参数的训练问题呢?

    矩阵分解提供了一种解决思路。在model-based的协同过滤中,一个rating矩阵可以分解为user矩阵和item矩阵,每个user和item都可以采用一个隐向量表示。比如在下图中的例子中,我们把每个user表示成一个二维向量,同时把每个item表示成一个二维向量,两个向量的点积就是矩阵中user对item的打分。

    补充:

    任意的 N×N 实对称矩阵都有 N 个线性无关的特征向量。并且这些特征向量都可以正交单位化而得到一组正交且模为 1 的向量。故实对称矩阵 A 可被分解成:

    equation?tex=A%3DQ%5Cwedge+Q%5ET

    其中Q为正交矩阵,Λ为实对角矩阵。

    类似地,所有二次项参数

    equation?tex=+%5Comega_%7Bij%7D 可以组成一个对称阵

    equation?tex=W (为了方便说明FM的由来,对角元素可以设置为正实数),那么这个矩阵就可以分解为

    equation?tex=W%3DV%5ETV

    equation?tex=V 的第

    equation?tex=j 列(

    equation?tex=v_j )便是第

    equation?tex=j 维特征(

    equation?tex=x_j )的隐向量。换句话说,特征分量

    equation?tex=x_i

    equation?tex=x_j 的交叉项系数就等于

    equation?tex=x_i对应的隐向量与

    equation?tex=x_j对应的隐向量的内积,即每个参数

    equation?tex=w_%7Bij%7D%3D%E2%9F%A8v_i%2Cv_j%E2%9F%A9 ,这就是FM模型的核心思想。

    为了求出

    equation?tex=+%5Comega_%7Bij%7D,我们需要求出特征分量

    equation?tex=x_i 的辅助向量

    equation?tex=v_i%3D%28v_%7Bi1%7D%2C+...%2Cv_%7Bik%7D%29 ,

    equation?tex=x_j 的辅助向量

    equation?tex=v_j%3D%28v_%7Bj1%7D%2C+...%2Cv_%7Bjk%7D%29 ,

    equation?tex=k 表示隐向量长度(实际应用中

    equation?tex=k%3C%3C+n ),转换过程如下图所示:

    equation?tex=W%5E%5Cstar%3D%5Cleft%5B+%5Cbegin%7Bmatrix%7D+%5Comega_%7B11%7D+%26+%5Comega_%7B12%7D+%26+...+%26+%5Comega_%7B1n%7D%5C%5C+%5Comega_%7B21%7D+%26+%5Comega_%7B22%7D+%26+...+%26+%5Comega_%7B2n%7D+%5C%5C+...+%26+...+%26+...+%26+...+%5C%5C+%5Comega_%7Bn1%7D+%26+%5Comega_%7Bn2%7D+%26+...+%26+%5Comega_%7Bnn%7D+%5Cend%7Bmatrix%7D+%5Cright%5D+%3DV%5ETV+%3D%5Cleft%5B+%5Cbegin%7Bmatrix%7D+V_1+%5C%5CV_2%5C%5C+...+%5C%5CV_n+%5Cend%7Bmatrix%7D+%5Cright%5D%5Ctimes+%5Cleft%5B+%5Cbegin%7Bmatrix%7D+V_1%2C+V_2%2C+...+%2CV_n+%5Cend%7Bmatrix%7D+%5Cright%5D

    equation?tex=%5C+%5C+%5C+%5C+%5C+%5C+%3D+%5Cleft%5B+%5Cbegin%7Bmatrix%7D+v_%7B11%7D+%26+v_%7B12%7D+%26+...+%26+v_%7B1k%7D+%5C%5C+v_%7B21%7D+%26+v_%7B22%7D+%26+...+%26+v_%7B2k%7D+%5C%5C+...+%26+...+%26+...+%26+...%5C%5C+v_%7Bn1%7D+%26+v_%7Bn2%7D+%26+...+%26+v_%7Bnk%7D+%5Cend%7Bmatrix%7D+%5Cright%5D+%5Ctimes+%5Cleft%5B+%5Cbegin%7Bmatrix%7D+v_%7B11%7D+%26+v_%7B21%7D+%26+...+%26+v_%7Bn1%7D+%5C%5C+v_%7B12%7D+%26+v_%7B22%7D+%26+...+%26+v_%7Bn2%7D+%5C%5C+...+%26+...+%26+...+%26+...%5C%5C+v_%7B1k%7D+%26+v_%7B2k%7D+%26+...+%26+v_%7Bnk%7D+%5Cend%7Bmatrix%7D+%5Cright%5D

    equation?tex=W%5E%5Cstar 矩阵对角线上面的元素即为交叉项的参数。

    FM的模型方程为(本文不讨论FM的高阶形式):

    equation?tex=%5Chat%7By%7D%28X%29%3A%3D%5Comega_0%2B%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7B%5Comega_ix_i%7D%2B%5Csum_%7Bi%3D1%7D%5E%7Bn-1%7D%7B%5Csum_%7Bj%3Di%2B1%7D%5E%7Bn%7D%7B%3Cv_i%2Cv_j%3Ex_ix_j%7D%7D+ (2)

    equation?tex=%3Cv_i%2Cv_j%3E%3A%3D%5Csum_%7Bf%3D1%7D%5E%7Bk%7D%7Bv_%7Bi%2Cf%7D%5Ccdot+v_%7Bj%2Cf%7D%7D

    其中,

    equation?tex=v_i 是第

    equation?tex=i 维特征的隐向量,

    equation?tex=%E2%9F%A8%E2%8B%85%2C%E2%8B%85%E2%9F%A9 代表向量点积。隐向量的长度为

    equation?tex=k%28k%3C%3Cn%29 ,包含

    equation?tex=k 个描述特征的因子。根据公式(2),二次项的参数数量减少为

    equation?tex=kn 个,远少于多项式模型的参数数量。另外,参数因子化使得

    equation?tex=x_hx_i 的参数和

    equation?tex=x_ix_j 的参数不再是相互独立的,因此我们可以在样本稀疏的情况下相对合理地估计FM的二次项参数。具体来说,

    equation?tex=x_hx_i

    equation?tex=x_ix_j的系数分别为

    equation?tex=%E2%9F%A8v_h%2Cv_i%E2%9F%A9

    equation?tex=%E2%9F%A8v_i%2Cv_j%E2%9F%A9 ,它们之间有共同项

    equation?tex=v_i 。也就是说,所有包含“

    equation?tex=x_i 的非零组合特征”(存在某个

    equation?tex=j%5Cne+i ,使得

    equation?tex=x_ix_j%E2%89%A00 )的样本都可以用来学习隐向量

    equation?tex=v_i,这很大程度上避免了数据稀疏性造成的影响。而在多项式模型中,

    equation?tex=w_%7Bhi%7D

    equation?tex=w_%7Bij%7D 是相互独立的。

    而且隐向量可以表示之前没有出现过的交叉特征,假如在数据集中经常出现 ,,但是没有出现过,,这时候如果用

    equation?tex=w_%7Bij%7D 表示 的系数,就会得到0。但是有了男特征和化妆品特征的隐向量之后,就可以通过来求解 <

    equation?tex=v 男,

    equation?tex=v 化妆品> 来求解。

    显而易见,公式(2)是一个通用的拟合方程,可以采用不同的损失函数用于解决回归、二元分类等问题,比如可以采用MSE(Mean Square Error)损失函数来求解回归问题,也可以采用Hinge/Cross-Entropy 损失来求解分类问题。当然,在进行二元分类时,FM的输出需要经过sigmoid变换,这与Logistic回归是一样的。直观上看,FM的复杂度是

    equation?tex=O%28kn%5E2%29 。但是,通过公式(3)的等式,FM的二次项可以化简,其复杂度可以优化到

    equation?tex=O%28kn%29 。由此可见,FM可以在线性时间对新样本作出预测。

    公式(2)推导如下:equation?tex=ab%2Bac%2Bbc+%3D+%5Cfrac%7B1%7D%7B2%7D%5Cleft%5B%28a%2Bb%2Bc%29%5E2-%28a%5E2%2Bb%5E2%2Bc%5E2%29+%5Cright%5D

    equation?tex=%5Cbegin%7Balign%2A%7D+%5Csum_%7Bi%3D1%7D%5E%7Bn-1%7D%7B%5Csum_%7Bj%3Di%2B1%7D%5E%7Bn%7D%7B%3Cv_i%2Cv_j%3Ex_ix_j%7D%7D+%26%3D+%5Cfrac%7B1%7D%7B2%7D%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7B%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%7B%3Cv_i%2Cv_j%3Ex_ix_j%7D%7D+-+%5Cfrac%7B1%7D%7B2%7D+%7B%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7B%3Cv_i%2Cv_i%3Ex_ix_i%7D%7D+%5C%5C+%26%3D+%5Cfrac%7B1%7D%7B2%7D+%5Cleft%28+%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7B%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%7B%5Csum_%7Bf%3D1%7D%5E%7Bk%7D%7Bv_%7Bi%2Cf%7Dv_%7Bj%2Cf%7Dx_ix_j%7D%7D%7D+-+%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7B%5Csum_%7Bf%3D1%7D%5E%7Bk%7D%7Bv_%7Bi%2Cf%7Dv_%7Bi%2Cf%7Dx_ix_i%7D%7D+%5Cright%29+%5C%5C+%26%3D+%5Cfrac%7B1%7D%7B2%7D%5Csum_%7Bf%3D1%7D%5E%7Bk%7D%7B%5Cleft%5B+%5Cleft%28+%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7Bv_%7Bi%2Cf%7Dx_i%7D+%5Cright%29+%5Ccdot+%5Cleft%28+%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%7Bv_%7Bj%2Cf%7Dx_j%7D+%5Cright%29+-+%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7Bv_%7Bi%2Cf%7D%5E2+x_i%5E2%7D+%5Cright%5D%7D+%5C%5C+%26%3D+%5Cfrac%7B1%7D%7B2%7D%5Csum_%7Bf%3D1%7D%5E%7Bk%7D%7B%5Cleft%5B+%5Cleft%28+%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7Bv_%7Bi%2Cf%7Dx_i%7D+%5Cright%29%5E2+-+%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7Bv_%7Bi%2Cf%7D%5E2+x_i%5E2%7D+%5Cright%5D%7D+%5Cend%7Balign%2A%7D解释:

    equation?tex=v_%7Bi%2Cf%7D 是一个具体的值;

    第1个等号:对称矩阵

    equation?tex=W 对角线上半部分;

    第2个等号:把向量内积

    equation?tex=v_i%2Cv_j 展开成累加和的形式;

    第3个等号:提出公共部分;

    第4个等号:

    equation?tex=i

    equation?tex=j 相当于是一样的,表示成平方过程。

    采用随机梯度下降法SGD求解参数

    equation?tex=%5Cbegin%7Bequation%7D+%5Cfrac%7B%5Cpartial+%5Chat%7By%7D%28x%29+%7D%7B%5Cpartial+%5Ctheta%7D+%3D+%5Cleft%5C%7B+%5Cbegin%7Barray%7D%7Blr%7D+1%2C+%26+if%5C+%5Ctheta%5C+is%5C+%5Comega_0+%5C%5C+x_i%2C+%26+if%5C+%5Ctheta%5C+is%5C+%5Comega_i%5C%5C+x_i%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%7Bv_%7Bj%2Cf%7Dx_j+-+v_%7Bi%2Cf%7Dx_i%5E2%7D+%26+if%5C+%5Ctheta%5C+is%5C+v_%7Bi%2Cf%7D+%5Cend%7Barray%7D+%5Cright.+%5Cend%7Bequation%7D+

    由上式可知,

    equation?tex=v_%7Bi%2Cf%7D的训练只需要样本的

    equation?tex=x_i 特征非0即可,适合于稀疏数据

    在使用SGD训练模型时,在每次迭代中,只需计算一次所有

    equation?tex=f

    equation?tex=%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%7Bv_%7Bj%2Cf%7Dx_j%7D

    就能够方便得到所有

    equation?tex=v_%7Bi%2Cf%7D的梯度,上述偏导结果求和公式中没有

    equation?tex=i ,即与

    equation?tex=i 无关,只与

    equation?tex=f 有关,显然计算所有

    equation?tex=f

    equation?tex=%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%7Bv_%7Bj%2Cf%7Dx_j%7D的复杂度是

    equation?tex=O%28kn%29 ,模型参数一共有

    equation?tex=nk+%2B+n+%2B+1 个。因此,FM参数训练的复杂度也是

    equation?tex=O%28kn%29。综上可知,FM可以在线性时间训练和预测,是一种非常高效的模型。

    关于隐向量V

    这里的

    equation?tex=v_i

    equation?tex=x_i 特征的低纬稠密表达,实际中隐向量的长度通常远小于特征维度N,在我做的实验中长度都是4。在实际的CTR场景中,数据都是很稀疏的category特征,通常表示成离散的one-hot形式,这种编码方式,使得one-hot vector非常长,而且很稀疏,同时特征总量也骤然增加,达到千万级甚至亿级别都是有可能的,而实际上的category特征数目可能只有几百维。FM学到的隐向量可以看做是特征的一种embedding表示,把离散特征转化为Dense Feature,这种Dense Feature还可以后续和DNN来结合,作为DNN的输入,事实上用于DNN的CTR也是这个思路来做的。

    参考资料:

    展开全文
  • 主要内容:动机FM算法模型FM算法VS 其他算法一、动机在传统的线性模型如LR中,每个特征都是独立的,如果需要考虑特征与特征直接的交互作用,可能需要人工对特征进行交叉组合;非线性SVM可以对特征进行kernel映射,...
  • 简介FM是Steffen Rendle在2010年提出的,FM算法的核心在于特征组合,以此来减少人工参与特征组合工作。对于FM,其优势可分以下三点:FM能处理数据高度稀疏场景,SVM则不能;FM具有线性的计算复杂度,而SVM依赖于...
  • FM(Factor Machine, 因子分解机)算法是一种基于矩阵分解的机器学习算法,是为了解决大规模稀疏数据中的特征组合问题。不同于传统的线性模型LR(Logistic Regression),其认为每个特征都是独立的。在FM中,考虑到特征...
  • 1. 什么是FMFM即Factor Machine,因子分解机。2. 为什么需要FM?1、特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接建模,很有可能会忽略掉特征与特征之间的关联信息,因此,可以通过构建新的交叉...
  • 1. 什么是FMFM即Factor Machine,因子分解机。2. 为什么需要FM?1、特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接建模,很有可能会忽略掉特征与特征之间的关联信息,因此,可以通过构建新的交叉...
  • DeepFM算法详解-推荐算法中的皇冠

    千次阅读 2019-08-14 22:28:42
    DeepFM是一种推荐领域炙手可热的算法,在非常多大家熟识的互联网公司都有落地场景。对于DeepFM最佳的阐述一定是来自于它的原始的论文。 地址:https://arxiv.org/pdf/1703.04247.pd 然后再介绍下推荐算法的本源...
  • 本文主要介绍了FM的详细推导过程,以及FM的优势和一些其他类似模型的区别。1. 基本概念 常见的线性表达式如下:其中为初始权值,或者理解为偏置项,为每个特征对应的权值。可以看到,这种线性表达式只描述了每个特征...
  • FM算法和前面我们介绍的LFM模型模型都是基于矩阵分解的推荐算法,但在大型稀疏性数据中FM模型效果也不错。本文首先将阐述FM模型原理,然后针对MovieLens数据集将FM算法用于推荐系统中的ranking...
  • 1. 什么是FMFM即Factor Machine,因子分解机。 任意的 N×N 实对称矩阵都有 N 个线性无关的特征向量。并且这些特征向量都可以正交单位化而得到一组正交且模为 1 的向量。故实对称矩阵 A 可被分解成: 其中,Q为...
  • 计算图领域建模3.DeepFM实现3.1SimpleInputLayer层3.2 BiInnerSumCross层3.3 SumPooling层3.4 Embedding层3.5 SimpleLossLayer层1.计算图模型系统的逻辑模型决定了容纳变化的多少。大学数据结构中大概介绍过结构体、...
  • 文章目录一、FM算法原理1、什么是FM2、为什么引入FM(FM优势)3、交叉项分解推导4、权值求解(迭代更新)二、Python实现 本文参考自:https://www.cnblogs.com/wkang/p/9588360.html,结合自身的理解和思考进行了...
  • BWT压缩算法及FM搜索算法详解

    千次阅读 2014-10-30 09:29:28
    BWT压缩算法其经典地位无可撼动, 关于数据
  • 目录1 介绍2 模型结构3 实验结果4 总结5 代码实践 1 介绍 DeepFM 是华为诺亚方舟实验室在 2017 年提出的模型。 论文传送门: A Factorization-Machine based Neural Network for...学 DeepFM 之前建议先了解 FM 与 Wide
  • 算法原理部分可以查看博客主线1.1FM算法原理详解 本文就直接上代码了,相关说明都在代码注释里。 # coding:UTF-8 from __future__ import division from math import exp from numpy import * from random import ...
  • 推荐系统 - DeepFM架构详解

    万次阅读 多人点赞 2019-08-15 16:43:20
    1.DeepFM可以看做是从FM基础上衍生的算法,将Deep与FM相结合,用FM做特征间低阶组合,用Deep NN部分做特征间高阶组合,通过并行的方式组合两种方法,使得最终的架构具有以下特点。 (1) 不需要预训练 FM 得到隐...
  • DeepFM详解和实现

    2020-04-30 14:22:58
    传统的LR算法是线性模型,想要提取非线性关系,要么通过GBDT来提取非线性特征,要么手动构建非线性特征。 FM直接显示的构建交叉特征,直接建模二阶关系: 公式如下: y(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1nwijxixj y(\...
  • FFM(Field-aware Factorization Machine)其实就是FM的进阶版,我们先来回顾一下FM的公式: 其中,样本x是n维向量,xi是第i个维度上的值。vi是xi对应的长度为K的隐向量,V是模型参数,所以所有样本都使用同一个V,...
  • 广告点击预测

    千次阅读 2016-07-29 22:14:07
    用机器学习对CTR预估建模(一) ... ...FM算法详解 FM算法能够学习到原始特征的embedding表示 点击率预估算法:FM与FFM 大数据下的逻辑回归训练模型方法论 用户在线广告
  • GBDT Boosted Trees & xgboost 介绍 FTRL 在线学习算法FTRL详解 点击率预估算法FM与FFM 在线最优化求解(Online Optimization)
  • fm的python实现

    2019-05-06 19:31:10
    参考gitlab上的代码,因为不能用...fm原理详解:这篇说的特别好。fm推荐算法原理。 代码如下 # encoding: utf-8 # Author: czw import numpy as np import sys from time import time from sklearn.model_se...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

fm算法详解