论文笔记: Matrix Factorization Techniques For Recommender Systems
Recommender system strategies
通过例子简单介绍了一下 collaborative filtering 以及latent model,这两个方法在之前的博客里面介绍过,不累述.
Matrix factorization methods
许多成功的LFM都是基于MF的.推荐系统的输入数据需要一定显示反馈信息,例如一个用户给电影的评论.通常包含反馈信息的矩阵都是稀疏的,因为用户不会对所有的电影都作出点评.显示反馈信息并不是一直有效的,推荐系统往往需要使用一些隐式的反馈(例如用户的浏览行为,点击行为)来协助作出一些推断.加入了隐性反馈的矩阵往往是很稠密的,需要很大的空间,矩阵分解在这里就能派上用场了.
A BASIC MATRIX FACTORIZATION MODEL
这部分内容在阅读项亮的<<推荐系统实践>>提及过,在此不重复记录.
论文中提到了两个学习算法,分别是随机梯度下降(Stochastic gradient descent )以及交替最小二乘法(Alternating least squares ),这里简单记录一下ALS.
输入:损失函数f(x,y),这里f(x,y)
输出:x,y的最优解
流程:
(1) 随机初始化x
(2) 求损失函数f关于y的导数,令其为零获取y的一个当前情况下的最优值$y^*$
(3) 用(2)求得的$y^*$固定y,求f关于x的导数,令其为零获取x的一个当前情况下的最优值$x^*$
(4) 用(3)求得的$x^*$固定x,重复(2),(3),(4)直到收敛
SGD和ALS的一个对比:SGD通常(对于数据集合不大的情况?)比ALS更容易实现也更快的收敛,ALS在以下两种情况下是有效的,一是可以并行计算的系统,二是训练的数据集合不是稀疏数据的情况.SGD需要遍历所有的训练数据集,当训练集变得很大的时候,SGD就变的不切实际了.
ADDING BIASES
$\hat{r_{ui}} = q_{i}^T*p_u$获取的是user和item之间互相相互的关系(可以理解为边的联系),并没有考虑到用户和物品本身固有的价值.因此这里要加上一些bias来表示一些固有的信息,这部分在推荐系统实践笔记(八)记录过,不累述.记录一下优化的公式:

ADDITIONAL INPUT SOURC
这部分讨论解决冷启动问题.论文中通过添加一些额外的信息来解决冷启动问题.文章主要提到两个属性.
> 第一个属性为用户没有明确表明喜欢的数据集.定义物品集合N(u)为用户隐式偏好的项目集,$x_i$为物品i对应的特征,那么用户对N(u)的关注度可以表示为:$\sum_{i{\in}N(u)} x_i$,通常需要需要对求和归一化
> 第二个属性为用户个人的属性,比如人口统计学的一些数据,定义A(u)为用户u对应的属性集合,$y_a$为每个属性对应的权重.一个用户的个人属性可以表示为:$\sum_{a{\in}A(u)}y_a$
添加了上述两个信息之后的预测公式为:

TEMPORAL DYNAMICS
引入时间的因素,在前面<<推荐系统实践笔记中>>有对于时间因素的描述,这里不重复描述,公式如下:

INPUTS WITH VARYING CONFIDENCE LEVELS
每个反馈的权重不应该是一样的,引入置信水平可以表示一个行为的频率(原始的反馈是一个简单的二进制,有或者没有),论文用$C_{ui}$来描述$r_{ui}$的置信度水平,改进后的公式如下所示:

论文笔记: Matrix Factorization Techniques For Recommender Systems的更多相关文章
- 【RS】Matrix Factorization Techniques for Recommender Systems - 推荐系统的矩阵分解技术
[论文标题]Matrix Factorization Techniques for Recommender Systems(2009,Published by the IEEE Computer So ...
- Recommender Systems中Yehuda Koren 和 Ma Hao的paper
以前读了Yehuda Koren和Ma Hao的论文,感觉非常不错,这里分享一下.如果想着具体了解他们近期发的论文,可以去DBLP去看看. Yehuda Koren也是Netflix Prize的冠军 ...
- 论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives
(聊两句,突然记起来以前一个学长说的看论文要能够把论文的亮点挖掘出来,合理的进行概括23333) 传统的推荐系统方法获取的user-item关系并不能获取其中非线性以及非平凡的信息,获取非线性以及非平 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统
Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...
- 机器学习技法笔记:15 Matrix Factorization
Roadmap Linear Network Hypothesis Basic Matrix Factorization Stochastic Gradient Descent Summary of ...
- Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
9.5 Predicting Movie Ratings9.5.1 Problem Formulation推荐系统.推荐系统的问题表述:电影推荐.根据用户对已看过电影的打分来推测用户对其未打分的电影将 ...
- 【论文笔记】SamWalker: Social Recommendation with Informative Sampling Strategy
SamWalker: Social Recommendation with Informative Sampling Strategy Authors: Jiawei Chen, Can Wang, ...
- Self-paced Clustering Ensemble自步聚类集成论文笔记
Self-paced Clustering Ensemble自步聚类集成论文笔记 2019-06-23 22:20:40 zpainter 阅读数 174 收藏 更多 分类专栏: 论文 版权声明 ...
- 《Non-Negative Matrix Factorization for Polyphonic Music Transcription》译文
NMF(非负矩阵分解),由于其分解出的矩阵是非负的,在一些实际问题中具有非常好的解释,因此用途很广.在此,我给大家介绍一下NMF在多声部音乐中的应用.要翻译的论文是利用NMF转录多声部音乐的开山之作, ...
随机推荐
- Linux下查看文件和文件夹大小 删除日志
场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...
- kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里)
阿里太注重原理了:阿里问kafka如何实现高并发存储-如何找到一条需要消费的数据,kafka用了稀疏索引的方式,使用了二分查找法,其实很多索引都是二分查找法 二分查找法的时间复杂度:O(logn) ...
- Vue/小程序/小程序云+Node+Mongo开发微信授权、支付和分享
大家好,我是河畔一角,今天给大家介绍我的第三门实战课程:基于微信开发的H5.小程序和小程序云的授权.支付和分享专项课程. 一.这一次为什么会选择微信支付和分享的课题呢? 金庸的小说中曾提到:有人的地方 ...
- Transform the vot dataset into 4 corner format
Transform the vot dataset into 4 corner format Matlab code to change the 8 value ground truth into 4 ...
- phpstudy 首次安装后打开网站 数据库内容 中文乱码
首次安装完成 phpstudy 后,默认的 my.ini 配置只有数据库文件位置,其他的都没有设置,这时如果想要输出数据库中的中文后,显示到页面上就会变成中文乱码 解决方法: 打开 phpstudy ...
- JS的base64编码解码
Unicode问题解法 有个小坑是它只支持ASCII. 如果你调用btoa("中文")会报错: Uncaught DOMException: Failed to execute ' ...
- List containsKey 和Map contains 判断集合中是否包含某个值
map集合 //1.第一种 HashMap map = new HashMap(); map.put("1", "value1"); map.put(" ...
- jzy3D从入门到弃坑_3使用jzy3D0.9画2D散点图--多条线条
jzy3D从入门到弃坑_3 使用jzy3D0.9画2D散点图--多条线条 觉得有用的话,欢迎一起讨论相互学习~Follow Me 主要思路 将多个线条的二维数组读入Scatter对象 存入到同一个画布 ...
- 在 Python 中使用定时器
今天看到一个比较人性化的定时模块 schedule,目前 star 数为 6432,还是非常的受欢迎,这个模块也是秉承这 For Humans 的原则,这里推荐给大家.地址 https://githu ...
- 新手學python之新體驗
1. 使用縮進方式做為程式塊開始結束的標示,程式換行在行末尾加 "\" 2. 元祖(Tuple)數據類型,和List的不同是Tuple不能修改,優點是執行速度比List快,因為不能 ...