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

时间: 2024-10-14 19:49:14

SVD推荐算法(一)的相关文章

SVD推荐算法(二)

这次讲解的是model-based的SVD推荐算法. 跟ALS推荐算法一样,都是矩阵分解的推荐算法,只不过求解的方式不同而已. 假如评分矩阵是R,那么我们希望拟合这样一个模型 R=U*M 其中U是user特征,M是item特征. 假如一个user的特征是u,一个item的特征是i,那么这个user对这个item的评分就是 u*i(两个特征的内积). 损失函数是: 然后我们的目标就是最小化这个E了. 这是SVD矩阵分解预测评分最基本的一种方法. 基于这个思想,各种最优化的方式和损失函数的改造也随之

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情.简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口:困难是因为我们不了解算法细节,很难去根据业务的场景进行算法配置和调优. 本文将深入算法API去解释Mahout推荐算法底层的一些事. 1. Mahout推荐算法介绍 Mahoutt推荐算法,从数据处理能力上,可以划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下运行的算法

Mahout推荐算法API详解【一起学Mahout】

阅读导读: 1.mahout单机内存算法实现和分布式算法实现分别存在哪些问题? 2.算法评判标准有哪些? 3.什么会影响算法的评分? 1. Mahout推荐算法介绍 Mahout推荐算法,从数据处理能力上,可以划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下运行的算法,是由cf.taste项目实现的,像我们熟悉的UserCF,ItemCF都支持单机内存运行,并且参数可以灵活配置.单机算法的基本实例,请参考文章:用Maven

Mahout推荐算法API具体解释【一起学Mahout】

阅读导读: 1.mahout单机内存算法实现和分布式算法实现分别存在哪些问题? 2.算法评判标准有哪些? 3.什么会影响算法的评分? 1. Mahout推荐算法介绍 Mahout推荐算法,从数据处理能力上,能够划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下执行的算法,是由cf.taste项目实现的,像我们熟悉的UserCF,ItemCF都支持单机内存执行.而且參数能够灵活配置.单机算法的基本实例.请參考文章:用Maven

[转]Mahout推荐算法API详解

Mahout推荐算法API详解 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等. 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占

微博推荐算法学习(Weibo Recommend Algolrithm)

原文:http://hijiangtao.github.io/2014/10/06/WeiboRecommendAlgorithm/ 基础及关联算法 作用:为微博推荐挖掘必要的基础资源.解决推荐时的通用技术问题.完成必要的数据分析.为推荐业务提供指导. 分词技术与核心词提取:是微博内容推荐的基础,用于将微博内容转化为结构化向量,包括词语切分.词语信息标注.内容核心词/实体词提取.语义依存分析等. 分类与anti-spam:用于微博内容推荐候选的分析,包含微博内容分类和营销广告/色情类微博识别:内

从分类,排序,top-k多个方面对推荐算法稳定性的评价

介绍 论文名: "classification, ranking, and top-k stability of recommendation algorithms". 本文讲述比较推荐系统在三种情况下, 推荐稳定性情况. 与常规准确率比较的方式不同, 本文从另一个角度, 即推荐算法稳定性方面进行比较. 详细 参与比较的推荐算法 包括: baseline 传统基于用户 传统基于物品 oneSlope svd 比较方式 比较的过程分为两个阶段: 阶段一, 将原始数据分为两个部分, 一部分

【转】有哪些较为熟知的推荐算法

链接:http://www.zhihu.com/question/20326697/answer/58148605 推荐算法大致可以分为三类:基于内容的推荐算法.协同过滤推荐算法和基于知识的推荐算法. 基于内容的推荐算法,原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你,这种方法可以避免Item的冷启动问题(冷启动:如果一个Item从没有被关注过,其

当推荐算法开源包多如牛毛,为什么我们还要专门的推荐算法工程师

作为一个推荐系统业余爱好者,在机器学习领域的鄙视链中,我感觉一直地位不高,时常被搞NLP CV语音等高科技技术的朋友鄙视. 最近甚至被人问,推荐算法开源包多如牛毛,我们为什么还要专门的推荐算法工程师?(难道想要辞退我!?惊) 不得不说,我想吐槽这个观点很久了.事实上搞推荐的工作不等于 import IBCF 或者 import time SVD++ import tensor啊摔! 于是找回帐号打开N年不用的博客,写一篇随想,其中含有大量主观臆断以及学术错误,尽量不中英夹杂术语之外的英文,如果有