论文连接: https://www.csie.ntu.edu.tw/~b97053/paper/Factorization%20Machines%20with%20libFM.pdfgit
libFM网站:http://www.libfm.org/github
libFM github地址:https://github.com/srendle/libfmweb
libFM manual中文版:http://d0evi1.com/libfm/算法
在MF的基础上,为了兼容MF模型不支持的非类别型(categorical)特征、自动组合线性模型的高阶特征,提出了FM:函数
目标label表示成各阶特征的线性组合。post
文中也提到k<<p,由于FM为了用低维参数拟合高维稀疏数据。学习
等价表示为:优化
计算目标y时可简化二次项(参考FM初始论文https://cseweb.ucsd.edu/classes/fa17/cse291-b/reading/Rendle2010FM.pdf,符号略有变化):网站
时间复杂度O(kn^2) -> O(kn)spa
目标函数L2正则化
- SGD梯度降低算法:
向loss降低的方向每读一个样本走一小步。
- ALS/CD坐标降低算法:
每次读入全部样本并更新一个参数,令导数为0,结合公式6获得每步的最新取值:
cache策略:
ALS相对SGD:没有学习率,不作额外工做只能求解回归问题。
- MCMC马尔科夫链蒙特卡洛算法:
几率解释:
ALS和SGD都是参数的点估计。MCMC与ALS相似都是逐个维度优化参数,可是属Bayes派别,用采样方法(Gibbs采样)模拟出参数的分布。
超参数符号解释:
When comparing the conditional posterior of model parameters for MCMC (Eq. (30)) and the ALS solution (Eq. (22)), it can be seen that both are very similar, that is, θ ∗ = μ ̃ θ with α = 1 and μ· = 0. The difference is that MCMC samples from the posterior distribution, while ALS uses the expected value.
“MCMC在后验分布上采样模拟后统计获得参数的估计值,而ALS是直接使用参数的数学指望求解。”
MCMC方法有个优点是正则项能够做为超参数进入Bayes模型,用一个超先验参数决定超参数,从而避免对正则项调参。代价是引入了超先验参数及其分布。可是超先验参数少于正则项个数,并且最终效果受超先验参数的选择不敏感。
参考文献 Bayesian Factorization Machines https://pdfs.semanticscholar.org/a8b9/ff1c5b8600ef63baa5de0999a0d986661d7d.pdf
模型预测效果对超参数先验参数不敏感,经验较优值:
用MCMC在条件后验几率分布上采样:
- 算法总结
三种算法比较:
新手建议先用最简单的MCMC。分解维度k初始设置低维,逐步调整初始方差init_stdev,分解维度k和迭代次数iter。
- Netflix challenge: rating prediction
- recommendation