[置顶] SVD推荐算法(一)

SVD推荐算法(一)

 

看了不少论文,总结起来用SVD做推荐主要有两种不同的方式。

1 本质上是memory-based,只不过先用SVD对user-item的评分矩阵做降维,得到降维后的user特征和item特征,可以分别做userbased的协同过滤和itembased的协同过滤。

2  本质上是model-based,跟传统数学意义的SVD没有太大关系,只不过借鉴了SVD分解R=U*S*V这个形式,通过最优化方法进行模型拟合,求得R=U*V。

 

本文主要讲解第一种情况,第二种情况下次再讲。

可以参考的论文:

《Applying SVD on Generalized Item-based Filtering 》

《Application of Dimensionality Reduction in Recommender System -- ACase Study》

 

 

memory-based的userbased和itembased关键点之一,是user相似度和item相似度的计算。

而相似度的计算依赖于特征。

 

最原始的做法,一个user的特征就是她对所有item的打分,而一个item的特征就是所有user对她的打分。

 

在数学意义上,SVD是这样子的,一个M*N矩阵的R可以分解成为三个矩阵相乘的形式,

R=U*S*V

(U是M*M矩阵,S是M*N的对角矩阵,V是N*N的矩阵)。

这是严格相等的。

S的对角元素称之为奇异值。

如果我们减少奇异值的数量,可以得到一个逼近相等的分解。

R约等于U*S*V

(U是M*k矩阵,S是k*k的对角矩阵,V是k*N的矩阵)

于是我们可以拿这个维度减少的U作为user特征,

V作为item特征。

然后拿这些降维后的特征去计算相似度。

 

然后又有人发现,我们上面的R其实是用0来填补那些未知评分的,感觉这样不太好。因为未知评分可能是高分,可能是低分。直接用0来填补就表示低分了。然后提出了一种填补缺失评分的方法,使得更加合理一些。先用该item的平均打分作为所有没有对item打分user的评分,得到一个填充矩阵,然后对于每个user,该user的对所有item的打分减去该user已知打分的平均值。得到这个矩阵后,再做SVD分解,再利用新特征做相似度计算。

最后再用userbased或者itembased预测评分。

 

 

参考资料:

 

Applying SVD on Generalized Item-basedFiltering

http://www.tmrfindia.org/ijcsa/v3i34.pdf

 

Application of Dimensionality Reduction inRecommender System -- A Case Study

http://ai.stanford.edu/~ronnyk/WEBKDD2000/papers/sarwar.pdf

 

A Singular Value Decomposition Approach ForRecommendation Systems

http://blog.csdn.net/yuzhongchun/article/details/40779371

 

SVD 笔记

http://my.oschina.net/zenglingfan/blog/178906

 


本文作者:linger

本文链接:http://blog.csdn.net/lingerlanlan/article/details/45250805



 


本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

redis主从同步 - 2015-05-14 20:05:12

Redis 主从复制简介 Redis 支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。 1) master 可以有多个slave。 2) 除了多个slave 连到相同的master 外,slave 也可以连接其它slave 形成图状结构。 3) 主从复制不会阻塞master。也就是说当一个或多个slave 与master 进行初次同步数据 时,master 可以继续处理客户端发来的请求。相反slave 在初次同步数据时则会阻塞 不能处理客户端的请求。 4) 主从复制可以用来提高系统的可伸缩性,
现在让我们开始一天的建站之旅。 本文是《快速创建网站》系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文。 1. 网站管理平台WordPress和云计算平台Azure简介 2.1 在Azure上创建网站及网站运行机制 2.2 域名绑定操作和Azure负载均衡机制 2.3 WordPress 初始化和网站管理功能 3.1 WordPress 数据导入 3.2 WordPress 多站点支持和Azure在线代码编辑器 3.3 WordPress 多语言支持 Multi
命令行 hadoop fsck /user/filename   -files  -blocks   -locations  -racks -files  文件分块信息, -blocks    在带-files参数后才显示block信息 -locations   在带-blocks参数后才显示block块所在datanode的具体IP位置, -racks       在带-files参数后显示机架位置 结果 Connecting to namenode via http://master:50070 FS
http:// blog.csdn.net/pipisorry/article/details/44705051 机器学习Machine Learning - Andrew NG courses 学习笔记 Dimensionality Reduction降维 {a second type of unsupervised learning problem called dimensionality reduction.as data compression not only allows us to com

Hazelcast源码剖析之Eviction - 2015-05-14 14:05:05

1 奇怪的现象 在使用 Hazelcast 的 Eviction 时,发现观察到的现象与想象的不同。按照官方文档介绍, Eviction 有这样几个配置选项: hazelcast   map name = "default"     ...     time-to-live-seconds 0 /time-to-live-seconds     max-idle-seconds 0 /max-idle-seconds     eviction-policy LRU /eviction-policy    

Hadoop大数据面试--Hadoop篇 - 2015-05-14 14:05:39

本篇大部分内容参考网上,其中性能部分参考:http://blog.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performance/、http://www.idryman.org/blog/2014/03/05/hadoop-performance-tuning-best-practices/ 原理篇: 1. Hadoop2.X的各个模块一句话简介    1)Hadoop Common:为Hadoop其他模块提供支持的公共工具包;  

hive创建表语句详解 - 2015-05-14 14:05:22

创建表的语句: Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name  [(col_name data_type [COMMENT col_comment], ...)]  [COMMENT table_comment]  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (c
Python scikit-learn 学习笔记—环境篇     近来闲来无事,也面临毕业季。这段时间除了做毕业设计,和同学再多吃几顿饭玩玩游戏之外。剩下的时间浪费着实可惜。想着以后研究生还要读三年,不如现在多看看书或者别的资料。正逢最近参加阿里巴巴大数据比赛,趁机学了一阵Python 数据挖掘包scikit learn,估计以后说不定会用到,所以先行记录下来,分享给大家。      先说一下这段时间对sklearn的理解。这一个数据挖掘包给我最直观的感觉就是简易。这个挖掘包的一些算法核心编码部分是借鉴别
声明: 本人阅读笔记,翻译类文章仅作意译。如有不对之处,请指出。 需要更本源的理解,请自行阅读英文。 本博客欢迎转发,但请保留原作者信息! 博客地址: http://blog.csdn.net/halcyonbaby    新浪微博:寻觅神迹 内容系本人学习、研究和总结,如有雷同,实属荣幸! 基于docker、kubernetes部署openstack到atomic系统上 openstack的服务定义,是不是看起来很简洁? openstack的实际组件构成,是不是看起来很复杂? 所有的openstack服

什么是HDFS? - 2015-05-14 09:05:15

         HDFS:HDFS是一个分布式文件系统。因为HDFS具有高容错性(fault-tolerent)的特点,所以可以部署到低廉的硬件上。它可以通过提高吞吐率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了对可移植操作系统接口(POSIX,portable Operating System Interface)的要求。这样可以实现以流的形式访问文件系统中的数据。HDFS原本是开源的Apache项目Nutch的基础结构,最后它却成为了Hado