####好好好#######FM实现(tensorflow版)
来源:互联网 发布:天气预报数据来源 编辑:程序博客网 时间:2024/05/17 01:08
今天在看了一下FM算法,就试着用tensorflow实现了一下,数据集用的是sklearn中的iris,我将target=2的删除掉了,保留了target=0 or 1的做一个二分类的测试.
首先来扯一下FM算法的思路,我感觉FM和MF是完全相反的思路,MF矩阵分解的大体思路是直接用两个矩阵相乘去拟合一个用户-商品的矩阵,然后将这两个矩阵作为用户和商品的特征矩阵,想要预测用户是否喜欢某个商品的时候就将这用户和商品的特征矩阵相乘,之后的话就是不断的细化这个模型,例如SVD,SVD++,通过添加时间属性和用户商品偏好去更好的描述出用户和物品的特征.当然MF缺点也很致命,数据稀疏导致的效果不好或者矩阵太大运行起来内存吃不消(实验室的硬件一直都折磨着我~.~)
相比之下,FM走的我更熟悉的机器学习方法,根据特征制作一个模型得到结果,比如给出一个常用的商品购买表,将是否购买这些商品作为用户特征,然后预测用户是否会点击这个商品的广告或者购买商品.好吧,扯得有的远了,先上波公式,普通的线性回归
从上面的式子很容易看出,一般的线性模型压根没有考虑特征间的关联(组合)。在生活中,这个可以说影响很大,例如一个男人和女人都是30岁,那么他们喜欢购买的东西可能有很大的区别,然而年龄这个特征都是30,普通的线性回归完全忽视了这种组合
为了求出ωij,我们对每一个特征分量xi引入辅助向量Vi=(vi1,vi2,⋯,vik)。然后,利用vivTj对ωij进行求解。对k值的限定,反映了FM模型的表达能力。
那么ωij组成的矩阵可以表示为:
则FM的模型方程为:
FM算法的求解过程
公式部分引用了一下这个博客:http://www.cnblogs.com/ljygoodgoodstudydaydayup/p/6340129.html
多的不说,直接上代码
编码环境是tensorflow1.0,本来想加正则的,后来发现居然没有什么区别,在测试集上直接就到了1.0的准确度了,参数n为输入特征的size,参数k为特征交互矩阵的列数- ####好好好#######FM实现(tensorflow版)
- FM实现(tensorflow版)
- 好好好好好好好好好好好跟哥哥
- Android实现FM收音机
- 好想好好爱你
- ##########(好好好)xgboost原理########
- ######好好好好好######常见计算广告点击率预估算法总结
- day2:gnuradio 实现fm发射机
- LimeSDR实现小型FM广播台
- FM
- FM
- FM
- 调整好你的舌头,好好试试。
- 调整好你的舌头,好好试试。
- 该好好干行规划刚刚好
- 今天不好好睡觉,明天好好睡长觉
- ##好好好####知识图谱的应用#######
- ######好好好#######DStream 生成 RDD 实例详解
- 第13周【项目3
- 第二周 项目3—汉诺塔
- 百度富文本ueditor的使用
- Android 使用SharedPreferences对象保存账号密码
- 洛谷 P2788 数学1(math1)- 加减算式
- ####好好好#######FM实现(tensorflow版)
- VMware下安装CentOS
- 编写自己的代码库(javascript常用实例的实现与封装)
- 使用jsencrypt实现参数的前端加密
- json(3)---java中对象、数组、list、map转换为json对象
- 用httpd构建本地镜像站
- SAX EntityResolver 的作用
- 使用公式Ack(m,n)=Ack(m-1,Ack(m,n-1)),依次递归计算,递归结束条件n=0时,Ack(m,n)=Ack(m-1,1);m=0时,Ack(m,n)=n+1
- 智能合约语言Solidity教程系列2