FM算法模型评估
目录一、FM算法简介 接下来将简单的介绍一下什么是FM模型?以及FM模型决解什么问题?
一、FM算法简介
二、评估方法
三、参数指标分析
1.误差分析
2.ndcg指标分析
3.查准率分析
4.查全率分析
四、分析结果总结
传统的二阶多项式模型:
文章图片
二阶多项式模型
FM模型:
文章图片
FM模型
Xi*Xj表示一个样本里两个互异的特征组合的二阶特征,Wij表示二阶特征的一个交叉系数,因为在现实的应用场景中Wij的学习是非常困难,所以FM模型就是用矩阵分解的方法让Wij=
1.数据的稀疏性,导致Wij的训练非常困难。FM模型的思想用Xi对应的隐向量Vi,Xj对应的隐向量Vj的内积来替代Wij,决解了Wij难训练的问题。
2.学习Wij需要大量的特征分量Xi,Xj都是非零的。
3.由于数据样本的稀疏,所以很难满足Xi*Xj不等于0
详细的分析请参考https://www.jianshu.com/p/8d792422e582
二、评估方法 首先,评估一个模型的步骤:
1、看数据集的划分方法是否合理。1、数据集较大,一般采用留出法和交叉验证法,本模型采用留出法。
2、调参,调节出模型对数据分类的最优参数,比如学习率、迭代次数等。
3、分析在最优参数下的模型评价指标,比如查全率,查准率、误差等。
2、调参,本模型可调参数有学习率、迭代次数、隐向量的维度K、分数划分的阈值。为了降低评估难度,本次评估仅仅调节学习率和迭代次数这两个参数。
图1和图2分别是300次迭代过程中随着学习率的测试集对应的误差和NDCG指标值的变化情况
文章图片
文章图片
图1
从图1可以看出,在迭代次数不变时,随着学习率的降低,测试集误差随着学习率的下降而下降。在学习率不变时,在迭代次数1-5次中,随着迭代次数的增加,测试集误差有所下降,在5-300次中,随着迭代次数增加,误差几乎保持不变。
接下来分析,在固定学习率下,随着迭代次数的上升,四个指标的变化情况,并试图找出最优迭代区间。
文章图片
文章图片
图2
从图2可以看出,在迭代次数不变时,随着学习率的降低,测试集NDCG指标数值随着学习率的下降几乎没什么规律。而在学习率不变时,随着迭代次数的增加,试集NDCG指标数值保持上升的趋势。
三、参数指标分析 我们通过四个指标来反映FM模型对数据分类的效果,四个指标分别是误差、NDCG、查准率、查全率。我们通过包含2万个数据样本的电影评分数据集,迭代300次,学习率为0.001下,得出每次迭代中训练集和测试集对应四个指标的一个数值。如图3
文章图片
图3
我们接下来将不同迭代次数下的每个指标生成一个折线图来进行分析。
1.误差分析
【FM算法模型评估】我们300次迭代中测试集的误差和训练集的误差在图像上展示出来,如图4,由于此数据集是二分类数据集,所以采用logit函数计算误差。
2.ndcg指标分析
文章图片
图4
从误差角度看训练集和测试集的误差相差不大,几乎可以说是近似相等,而迭代数在大于10次以上,误差值几乎是处于水平的一个状态,说明模型没有出现过拟合的现象,从误差指标来看模型的最优迭代次数为10-25次左右,误差值在0.67左右(根据损失函数的计算,误差取值范围为[0.313-1.313])。
图5为300次迭代过程中测试集和训练集NDCG指标,NDCG表示的是一个注重排序的一个指标,即相关性越大样本,排序位置越靠前则NDCG指标数值越大。
3.查准率分析
文章图片
图5
从图像可以看出,在这300次迭代过程中前200次迭代训练集和测试集的NDCG指标比较不稳定,波动频率比较高,波动范围在0.1以内,超过200次迭代中波动频率较低,而测试的波动趋于稳定,我们主要关注的是测试集的NDCG指标,当迭代次数200-300之间为测试集最优的迭代次数区间,但是为了降低计算机的运算,我们选取NDCG最优的迭代次数区间为200-220之间,NDCG指标数值在0.375左右(NDCG的取值范围[0-1])。
查准率即我们所谓的精度,图6为300次迭代过程中训练集和测试集查准率的变化过程。
4.查全率分析
文章图片
图6
当迭代次数在20以上,FM模型的精度都在50%以上,说明模型的分类效果是远远大于随机分类,测试样本为6000个,若是随机分类,则精度为0.5 6000。
在迭代20以上精度在0.55左右,而0.55远远大于0.5 6000,所以我们选取查准率最优迭代次数区间为[20-30]。
查全率是指分类正确的样本数/数据集正确类的所有样本的一个比值。数据集中参与分类的样本越多查全率就越大,查全率越大,则查准率就会越低。然而我们看一个模型的优劣,不能说查准率需要越高,就把查全率越低的模型看作越优的模型,我们要根据我们的需求来判断查全率对我们想要效果的影响。图7是FM模型的查全率变化过程。
四、分析结果总结 我们根据以上四个指标的一个要求,在学习率为0.001下,找到一个最优的迭代次数,如果是要综合四个参数分析,必须找出一个最优的区间,设一个公式(f=查准率+ncdg-查全率-误差),如果我们的目的是查准率和ndcg的值越大模型越优,而误差和查全率越小模型越优,则我们可以设一个像f这样的公式,我们所有的参数都经过了归一化处理,然后我们可以对每个指标设一个权重(注重程度),在这个模型中我个人认为查全率的注重程度比较低,其他三个参数就平分(个人观点),所以我们的指标公式f=0.3 x 查准率+0.3 x ncdg-0.1 x 查全率-0.3 x 误差,接下来就是用公式f去计算学习率为0.001下,300次迭代过程中,每次迭代对应的f指标。
文章图片
图7
查全率大小的注重程度,例如垃圾短信分类,如果我们把越多短信分类为垃圾短信,那么我们垃圾短信的查全率就越高,相对而言,我们非垃圾短信被分到垃圾短信的可能性就越大,但是我们常常都是宁愿多看几条垃圾短信,也不愿有一封好邮件被拦截了,所以这样的情况下,我们更注重查准率,而不是查全率。
从图7可以看出,迭代次数在100次左右查全率几乎达到一个水平,所以查全率参数指标的最优迭代次数在100左右。
图8为f公式计算出来的前20个数值以及对应的迭代次数
从整体的FM模型分析结果来看,虽然精度达不到90%以上,但是相对于随机分类,确实有了很大的进步,以上是我个人的分析,接下来会将FM模型与SVM等其他算法模型做一个比较。
文章图片
图8
以上是本次对FM算法模型的评估分析。参考资料如下:
代码与数据来源于github: https://gith
文章来源于: https://www.
推荐阅读
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- 一个选择排序算法
- SG平滑轨迹算法的原理和实现
- 《算法》-图[有向图]
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- 心理工作要不断的评估现实事件对来访者心理造成的影响是什么
- 虚拟DOM-Diff算法详解
- Flutter的ListView
- 《数据结构与算法之美》——队列