Factorization Machine的一些总结

Factorization Machine的一些小结

FM

  1. FM使用了矩阵分解的思想学习组合特征的系数
  2. 二阶FM可以通过公式化简将时间复杂度降低到O(kn),三阶及以上无法化简,时间复杂度较高
  3. FM的分解中factor因子一般取的比较小,一方面可以减少需要学习的参数,另外一方面可以提高泛化能力
  4. libFM是比较早出现的算法包,后面出现了Spark实现的FM

FM学习算法

  1. SGD算法可以求解分类和回归问题
  2. 应用多重共线性,回归问题可以使用ALS算法求解

FM与LR

  1. FM与LR都可以处理交叉特征,但是LR的参数更多,更容易过拟合,而且交叉的两个特征都不为0的样本比较少,对应的系数就很难学的准确
  2. 使用二阶交叉特征时,FM的时间复杂度可以降低到O(kn),LR时间复杂度还是O(N2)
  3. FM适合高维稀疏特征空间,LR适合不那么稀疏的特征组合
  4. 特征交叉是嵌入到FM模型中的,但是LR中如果有特征交叉不是嵌入的,可以自由选择部分交叉,也可以选择全部

FM与FFM

  1. FM是FFM的一种特殊形式,是所有特征都在一个特征域field里面
  2. 二阶FM参数有(kn+n+1)个,二阶FFM参数有(kfn+n+1)个,而且二阶FFM公式无法化简,时间复杂度为O(kn2)
  3. FFM把相同的特征归为一个field,比如年龄是一个field,性别也可以是一个field

FM实现

  1. libFM 这是最早实现的一个工具包,效率非常高
  2. alphaFM 这是单机多线程版本的实现
  3. Spark-FM 这是Spark分布式的一个实现

参考

  1. FM与FFM的区别
  2. 美团技术团队-深入FFM原理与实践
  3. Factorization Machines 学习笔记(一)预测任务
  4. Factorization Machines 学习笔记(二)模型方程
  5. Factorization Machines 学习笔记(三)回归和分类
  6. Factorization Machines 学习笔记(四)学习算法
  7. Factorization Machines with libFM
  8. libFM: Factorization Machine Library
  9. alphaFM
  10. Spark-FM

你可能感兴趣的:(机器学习,数据挖掘,Spark)