美文网首页
Factorization Machines with libF

Factorization Machines with libF

作者: xiiatuuo | 来源:发表于2018-11-05 22:34 被阅读0次

    前记

    上一篇文章描述了spark中实现的基于隐式反馈的协同过滤,不过很遗憾:

    目前基本上基于矩阵分解的方法都被FM取代了。
    https://tracholar.github.io/machine-learning/2017/03/10/factorization-machine.html

    那我们必须来看看FM是什么。

    libFM

    说到FM,不能不提LibFM,可以说是创始人的杰作,论文地址 http://www.libfm.org/#publications

    2010年,日本大阪大学(Osaka University)的 Steffen Rendle 在矩阵分解(MF)、SVD++ 、PITF 、FPMC 等基础之上,归纳出针对高维稀疏数据的因子机(Factorization Machine, FM)模型 。因子机模型可以将上述模型全部纳入一个统一的框架进行分析。并且,Steffen Rendle 实现了一个单机多线程版本的 libFM

    论文组成部分

    • FM是什么
    • 怎么来学习FM
    • FM和其他矩阵分解模型的关系
    • FM的一些应用
      和上一篇一样,在这里不重点说前两个部分(主要是数据公式还没看太懂,后续有时间再补上),重点就说FM和其他矩阵分解的关系以及FM的一些应用。不过,有一点提一下,就是LIBFM实现了SGD、ALS、MCMC三种学习的方法,其中MCMC作者一直强调非常简单好用,因为要调整的超参数非常少。

    FM和其他矩阵分解模型的关系

    • MF
      • 如果把user和item分别进行one-hot编码feed给FM,MF就变成了一个biased的FM模型
    • Pairwise Interation Tensor Factorization
      • 如果把user、item和Tags进行one-hot编码feed给FM,那么PITF和FM的区别就是FM含有低阶的交互关系并且共享了一个变量V
      • 这个感觉有点像FFM?(TODO)
    • SVD++ and FPMC
      • 如果将user、item分别one-hot,再将隐式的行为编码feed给FM,那FM跟SVD++几乎一样,只是加上了一个interactions(交互)
      • 如果将user、item分别one-hot,再将序列的数据编码feed给FM,那FM跟FPMC非常类似。
    • BPTF and TimeSVD++
      • 不解释(差不多)
    • Nearest Neighbor Models
      • 不解释(差不多)
    • Attribute-Aware Models
      • 这个比较重要,因为将user、item进行one-hot,同时还将user的属性特征、item的属性特征feed给FM的话,FM就基本上是一个feature-based的分解模型,只不过在user属性和item属性间加上了一些interactions。
    • SVDfeature
      • 优点:在限制条件下的情况可以有更高效的优化算法
      • 缺点:SVDfeature有限制只能对两个类别型的特征进行分解;只有SGD算法来优化,MCMC更好用
    • FM与polynamial Regression的关系
      • 对于两两的关系FM用分解来实现,但是polynomial用的是完全独立的参数来描述,这样计算量非常大,而且拟合效果也不好,可以说FM是对二元关系的MF

    使用注意事项

    • 建议一开始就使用MCMC,而且用比较低的维度(比如k=8),同时加上-init_stdev来进行初始化,加快MCMC的迭代
    • init_stdev需要进行调参选择(0.1,0.2,0.5,1.0),这样早期的迭代就能知道训练误差了
    • 等这个参数确定好之后,MCMC就可以跑更多的迭代轮数以及更高的特征维度
    • MCMC的有点就是没有啥超参数需要调整的,ALS和SGD有一堆。

    实验

    • Ranking Prediction
      • 对比了MF的原始实现和不同优化策略的libFM,发现libFM的MCMC效果最好
    • Nearest Neighbor Models
      • LibFM跟KNN和KNN++差不多达到了近似的效果
    • 上下文相关的推荐
      • Multiverse Recommendation比赛获得最优,这是个什么比赛为什么用RMSE来作为衡量标准?(TODO)
    • 标签推荐
      • 在ECML Discovery Challenge2009获得最好效果
    • 值得一提的是,这些不同的应用场景基本上只需要自己按照libFM的数据格式准备好就可以直接用了,也足以说明FM方法的强大

    总结

    FM给矩阵分解合并了易用的特征工程,作者说还有三个未来优化的方向:

    • 应用到更多预测的问题上
    • 效率有优化的空间
    • libFM可能扩展为更高阶的interactions(d>=3)

    不过后来FFM居上,下回分解。

    相关文章

      网友评论

          本文标题:Factorization Machines with libF

          本文链接:https://www.haomeiwen.com/subject/hzmexqtx.html