FM tensorflow实践

  • A+
所属分类:机器学习

因式分解机(Factorization Machine)是推荐系统中非常经典的算法,具体原理可以参见:

原论文

推荐系统召回四模型之:全能的FM模型-知乎

实践

本次笔者用tensorflow在movieLen-100k上面对FM进行了多次实验。

第一次实验

使用ua.base作为训练集,ua.test作为测试集,将user item进行onehot编码,得到特征维度为2625。向量V的k值设为10。具体代码参见https://github.com/lt-xu/recommender-system/blob/master/FM/FM.py

实验结果:

FM tensorflow实践

使用AdamOptimizer迭代了100次,每次batch大小为1000,在测试集上mse达到了1.014329051180369

第二次实验

在第一次实验基础上添加user特征和item特征,得到特征维度为3464, k仍设为10。具体代码参见:https://github.com/lt-xu/recommender-system/blob/master/FM/FM_more_feature.ipynb

实验结果:

使用与实验一相同参数的AdamOptimizer,迭代了2000次,每次batch大小为1000,但结果仍不如第一次实验,最终在测试集上的mse为4.199363818417809,loss下降图为:

FM tensorflow实践

第三次实验

去掉user item onehot后的特征,用user 和 item背后的属性特征来进行实验,特征维度为839,k仍为10,具体代码参见:https://github.com/lt-xu/recommender-system/blob/master/FM/FM_2.py

实验结果:

参数与前两次实验相同,迭代了1000次,在测试集上mse为:5.278886678507681

FM tensorflow实践

第四次实验

与第2次实验参数设置相同,但向量V的k值设为5。在在1000次迭代后,测试集的mmse得到:1.2746433,接近第一次实验结果。可见在特征维度较大时,k值要设为较小值,因为没有足够的数据来估计复杂的交互作用。同时,user或item的总体的属性特征(即考虑一个user/item所有的属性)与user_id和item_id有很强的相关性,所以将属性特征添加到预测函数中,不是很合适,但如果出现一个新的user/item时会有用。

FM tensorflow实践

LTXU

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: