FM(factorization machine)

1. 模型提出背景
FM解决的是预测性问题。也就是说给定输入值,给出输出值。但是针对预测性问题的解决,目前有较多的模型可以用,针对factorization machine这篇文章,作者主要是抓住FM和支持向量机的优劣比较,支持向量机最终是解决数值优化问题,如果自变量是稠密的,那么使用支持向量机是有较大优势的。但是如果自变量有较多的类别变量(指示变量),从而导致数据比较稀疏,也就是说一个样本点的输入多数都是零,这种情况在推荐系统中有较多,这时候支持向量机的劣势就体现出来了。那么就出现了如何解决输入比较稀疏时的预测性问题。
2.例子描述
首先我们借用factorization machine中的例子,因为本人也是从事推荐系统相关工作,也比较喜欢这个例子。
这里写图片描述
上述描述性数据,其中S表示事务型数据,我们把转换成符号型数据,每条记录表示一个事务
这里写图片描述
首先上图中蓝框中的数据表示用户信息,是指示型数据,表示一条记录中的用户,蓝框中的第一列表示是否是用户A,第二列表示是否是用户B等等。橘红色框表示这个事务中用户看的是那部电影,橘红框中的每条记录只有一个是1,其他的都为零。黄色框中表示用户都对哪些电影评过分,比如A对TI,NH,SW三部电影评过分,那么前三列为0.3,0.3,0.3 ,这里是将数据标准化了,使得每条记录值相加为1,绿色框表示的是时间,确定一个起始时间,数值表示距离起始时间的时间,最后一个框表示用户在评过事务中的这不电影前,还评过其他的哪些电影,预测值为Y,最后一列,表示用户对这部电影的评分。
我们的输入就类似这种情况,如果用户量非常多,电影量也非常多,那么这个输入是相当稀疏的,使用支持向量机之类的模型就显得力不从心,所以作者引出了因子机。
3.模型描述
因子机有度的概念,其实就是表示是多少个自变量相互影响,我们先从2度开始描述 ,假设需要预测的变量为Y,我们需要通过一个预测值 Y^ 来对Y进行预测,然后给定一个损失函数,最小化Y和 Y^ 之间的差距。

Y^(x)=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj(1)

其中
w0R,wRn,VRnk

其中k是正整数,表示用k维的因子去表示一个变量,这个概念也是因子机名字的来源。
i=1nj=i+1n<vi,vj>xixj

表示两个变量之间的交互作用,这里使用的是向量 vi vj 的内积,而不是单纯使用一个参数 wij ,其
优势1,就是可以 vi 向量在衡量 xi 和其他变量的相互作用强度时
都可以用到,如果使用 wij ,我们需要估计 n(n1)/2 个参数,但是使用内积时我们只需要估计 kn 个参数,如果 k<n 的话,这个需要估计的参数也会减少很多。
优势2,如果使用 wij 时,训练集中没有出现过变量 xi,xj 同时不为零的情况,那么 wij 就会为零,但是测试集中出现了 xi,xj 同时不为零的情况,这样就无法衡量这两个变量之间的相互作用强度,但是使用内积便可以避免这种情况,只要 xi 有不为零的记录, xj 有不为零的记录,这样 <vi,vj> <script type="math/tex" id="MathJax-Element-8494"> </script>就不为零。
其中的第二个优势在推荐系统当中是相当有用的,比如说需要预测A对一部电影MN的评分,但是训练集中没有A对这不电影的评分,但是有A的对应变量对应的因子向量,有MN电影对应变量对应因子向量,这样就可以描述A和电影MN的相互作用,这对于预测评分是很重要的。
模型的求解
这里写图片描述
通过上述转换,我们将公式1转变成
Y^(x)=w0+i=1nwixi+1/2f=1k((i=1nvi,fxi)2i=1nv2i,fx2i)

涉及的就只有 nk 个变量 ,
这样我们套用一些损失函数,比如回归问题套用均方误差等等 ,二分类问题使用logit损失等.

FFM(Field-aware Factorization Machines)
YUChin Juan 在2016年对FM模型进行改进,提出了Field-aware Factorization Machines,接下来我将详细的介绍这种算法,针对推荐算法中的变量,其实是可以分成若干了类别的。比如用户相关的特征,商品相关的特征,场景相关的特征,这样就可以将特征分成若干个field,在FM模型中,一个特征,举个例子,用户的年龄特征 x ,被一个隐因子表示,即k维的向量vx,当我们表征x 和其他特征 y 的交互作用时,其系数为<vx,vy>,无论y是哪一个特征,都是用 vx ,但是我们有理由相信,用户相关的特征 和商品相关的特征的交互作用 与用户相关的特征和场景相关的特征的交互作用是不一样的,那么当y是商品相关的特征时,交互作用的系数为 <vx,item,vy,user> <script type="math/tex" id="MathJax-Element-8503"> </script> .如果y是场景相关的特征,交互作用的系数为 <vx,scene,vy,user> <script type="math/tex" id="MathJax-Element-8504"> </script>

Y^(x)=w0+i=1nwixi+j1=1nj2=j1+1n<vj1,f2,vj2,f1>xj1xj2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值