FM算法:(Factorization Machines),因子分解机模型
- 本文仅作为一个简单介绍,关于推理和代码部分可以见参考资料
1 模型提出背景:
- 在传统的线性模型中,每个特征都是独立的,如果需要考虑特征与特征之间的相互作用,可能需要人工对特征进行交叉组合。非线性SVM可以对特征进行核变换,但是在特征高度稀疏的情况下,并不能很好的进行学习。推荐系统是一个高度稀疏的数据场景,由此产生了FM系列算法。
- FM提出主要是为了解决数据稀疏的情况下,特征怎样组合的问题。可用于回归任务,二分类任务、排名任务,特别是在数据稀疏场景下,效果明显,广泛应用于推荐系统、广告系统等领域。
2 FM模型公式推导过程(见最下方链接,公式较多不再重复粘贴)
3 FM模型所用损失函数(本文不做详解)
- 回归任务:最小平方误差
- 二分类任务:对数损失函数,交叉熵损失函数
- 排序任务:成对分类函数
4 FM模型训练方法:(本文不做详解)
- 随机梯度下降法 SGD
- 参考资料:梯度下降法与反向传播法 - 知乎 (zhihu.com)
- 交替最小二乘法 ALS
- 马尔科夫链蒙特卡洛法 MCMC
5 关于FM模型特征工程构建的解释书名
- FM模型对特征两两组合是自动的,不需要人工参与
- FM模型对类别特征进行One-hot编码,然后才能参与计算
6 FM模型二分类问题实例(代码可运行,见最下方链接)
-
注1:数据源为皮马人糖尿病数据集
-
注2:数据源Github下载地址:Machine-Learning-with-Python/diabetes.csv at master · susanli2016/Machine-Learning-with-Python · GitHub
-
FM实例实现方法:TensorFlow + Sklearn 实现(已运行,无问题,链接包含与运行代码,运行结果展示以及使用的安装包版本)