简单易学的机器学习算法——因子分解机(Factorization Machine)
来源:互联网 发布:苹果软件破解版 编辑:程序博客网 时间:2024/05/17 00:54
一、因子分解机FM的模型
因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法。
1、因子分解机FM的优势
对于因子分解机FM来说,最大的特点是对于稀疏的数据具有很好的学习能力。现实中稀疏的数据很多,例如作者所举的推荐系统的例子便是一个很直观的具有稀疏特点的例子。
2、因子分解机FM的模型
对于度为2的因子分解机FM的模型为:
其中,参数,,。表示的是两个大小为的向量和向量的点积:
其中,表示的是系数矩阵的第维向量,且,称为超参数。在因子分解机FM模型中,前面两部分是传统的线性模型,最后一部分将两个互异特征分量之间的相互关系考虑进来。
因子分解机FM也可以推广到高阶的形式,即将更多互异特征分量之间的相互关系考虑进来。
二、因子分解机FM算法
因子分解机FM算法可以处理如下三类问题:
- 回归问题(Regression)
- 二分类问题(Binary Classification)
- 排序(Ranking)
1、回归问题(Regression)
在回归问题中,直接使用作为最终的预测结果。在回归问题中使用最小均方误差(the least square error)作为优化的标准,即
其中,表示样本的个数。
2、二分类问题(Binary Classification)
与Logistic回归类似,通过阶跃函数,如Sigmoid函数,将映射成不同的类别。在二分类问题中使用logit loss作为优化的标准,即
其中,表示的是阶跃函数Sigmoid。具体形式为:
三、因子分解机FM算法的求解过程
1、交叉项系数
在基本线性回归模型的基础上引入交叉项,如下:
若是这种直接在交叉项的前面加上交叉项系数的方式在稀疏数据的情况下存在一个很大的缺陷,即在对于观察样本中未出现交互的特征分量,不能对相应的参数进行估计。
对每一个特征分量引入辅助向量,利用对交叉项的系数进行估计,即
令
则
这就对应了一种矩阵的分解。对值的限定,对FM的表达能力有一定的影响。
2、模型的求解
这里要求出,主要采用了如公式求出交叉项。具体过程如下:
3、基于随机梯度的方式求解
对于回归问题:
对于二分类问题:
而
四、实验(求解二分类问题)
1、实验的代码:
2、实验结果:
五、几点疑问
在传统的非稀疏数据集上,有时效果并不是很好。在实验中,我有一点处理,即在求解Sigmoid函数的过程中,在有的数据集上使用了带阈值的求法:
欢迎更多的朋友一起讨论这个算法。
参考文章
1、Rendle, Factorization Machines.
2、Factorization Machines with libFM
0 0
- 简单易学的机器学习算法——因子分解机(Factorization Machine)
- 简单易学的机器学习算法——因子分解机(Factorization Machine)
- #####好######简单易学的机器学习算法——因子分解机(Factorization Machine)
- 简单易学的机器学习算法——SVD奇异值分解
- 简单易学的机器学习算法——Apriori算法
- 简单易学的机器学习算法——Apriori算法
- 简单易学的机器学习算法——EM算法
- 隐因子分解机Factorization Machine
- 隐因子分解机Factorization Machine
- 简单易学的机器学习算法——朴素贝叶斯
- 简单易学的机器学习算法——Logistic回归
- 简单易学的机器学习算法——lasso
- 简单易学的机器学习算法——Softmax Regression
- 简单易学的机器学习算法——lasso
- 简单易学的机器学习算法——kMeans
- 简单易学的机器学习算法——AdaBoost
- 简单易学的机器学习算法——Gibbs采样
- 简单易学的机器学习算法——Softmax Regression
- 深入理解MyBatis框架——SqlSession
- MD5数据加密小记
- uc/os操作系统读书笔记
- 第一篇:c#数据库从sql改为mysql
- git fetch将远程分支信息获取到本地
- 简单易学的机器学习算法——因子分解机(Factorization Machine)
- 粒子系统基本原理 给出粒子中心点的坐标和粒子的大小,则很容易计算出粒子所需要的4个顶点的位置坐标。粒子系统由大量的粒子构成。每个粒子具有一组属性例如位置大小纹理颜色透明度运动速度加速度生命周期等属性。
- 215. Kth Largest Element in an Array
- 【华为练习题】 闯迷宫(高级)
- 7.6 EPOJ 1700Crossing River
- git 大全
- 尝试使用 AccessibilityService 解决应用安装提示
- android之androidstudio如何导入SlidingMenu
- μC/OS-Ⅱ的终端