Collaborative filtering, 即协同过滤,是一种新颖的技术。最早于1989年就提出来了,直到21世纪才得到产业性的应用。应用上的代表在国外有Amazon.com,Last.fm,Digg等等。

     最近由于毕业论文的原因,开始研究这个题目,看了一个多星期的论文与相关资料之后,决定写篇总结来总结一下最近这段时间资料收集的成果。
 在微软1998年的那篇关于协同过滤的论文[1]中,将协同过滤分成了两个流派,一个是Memory-Based,一个是Model-Based。关于Memory-Based的算法,就是利用用户在系统中的操作记录来生成相关的推荐结果的一种方法,主要也分成两种方法,一种是User-Based,即是利用用户与用户之间的相似性,生成最近的邻居,当需要推荐的时候,从最近的邻居中得到推荐得分最高的几篇文章,用作推荐;另外一种是Item-Based,即是基于item之间的关系,针对item来作推荐,Amazon.com即是使用这种方法,使用一种基本的方法来得到不俗的效果。而实验结果也表明,Item-Based的做法比User-Based更有效[2]。而对于Model-Based的算法,即是使用机器学习中的一些建模算法,在线下对于模型进行预计算,在线上能够快速得出结果。主要使用的算法有 Bayesian belief nets , clustering , latent semantic , 最近几年又出现了使用SVM 等的CF算法。最近几年又提出一种新的分类,content-based,即是对于item的内容进行分析,从而进行推荐。而现阶段,比较优秀的一些应用算法,则是将以上几种方法,混合使用。比较说Google News[3],在它的系统中,使用了一种将Memory-Based与Model-Based两种方法混合的算法来处理。在Google的那篇论文里面,它提到了如何构建一个大型的推荐系统,其中Google的一些高效的基础架构如:BigTable,MapReduce等得到很好的应用。
     在这篇总结中,主要论及最基本的Memory-Based算法。对于Memory-Based算法,主要有两个步骤,第一个是计算相似性,另外一个是进行推荐。
 
     对于第一步,主要是于线下计算item-item或者user-user之间的相似性,主要使用的算法有Correlation-Based,如Pearson correlation [4], Jaccard coefficient[5]等,与Vector Cosine-Based Similarity , 和在实验中被验证具有最好效果的Regression 。 第二步,则是生成相关的推荐项目的过程。主要是根据上一步得出的最近邻,从其中得出最相关的Top-N个推荐的项目作为结果。这种方法被沿用多年,大多数的推荐系统都是使用这种方法构建的。
 
而对于大多数的项目而言,推荐系统都不可避免地面临以下几个问题[6]:
 
1.数据过度松散,当应用变得庞大,数据集开始增大的时候,就会出现这个问题了。可能大量的用户只是评价了一小部分的项目,而大多数的项目是没有进行评分的。 这个时候就会出现数据过度松散的问题。
2.同义项目问题,对于同义的项目,在系统中可能具有不同的标识符,对于这些项目之间的相关性就会被忽略。
3.垃圾攻击,对于一些利用系统进行恶意传播的用户,可能会制造一些虚假的评价,造成系统推荐的不正确行为。
4.冷启动问题,对于新使用系统的用户,系统中并没有相关的操作记录,没法生成相关的推荐。
总体而言,现在的推荐系统还是面临不少的问题。而在产业界的成功也会促使这项技术会继续发展。
 
收集到一些相关资料:
书籍:
[1]《Programming Collaborative Intelligence》,中文译名为《集体智慧编程》。是一本理论与实践的好书,手把手教你如何写一个推荐系统,不过其中的算法比较简单,但是对于入门是一本好书。
[2]《AlgorithmsIntelligentWeb》,也是非常浅显,重于实践的书,其中第二单,讲解了一个简单的推荐系统的搭建,并提供了源码,供学习。
组织:
[1]Resys Group,国内一个关于推荐引擎的小组,其中不乏牛人,定期也会举办活动。
[2]GroupLens,老字号的推荐引擎研究小组,它们的主页上有很多的资讯,推荐。
博客:
[1]Beyond.Search, Resys Group的创始人之一,里面有不少不错的博文,可以获得大量关于推荐系统发展的资讯。
[2]Daniel Lemire's blog ,一个研究人员的博客,推荐。
开源软件库:
[1] Taste,已经整合到Apache里的Mahout里面了,一个非常经典的推荐系统库。
 
参考文献:
【1】John S. Breese ,David Heckerman , Carl Kadie.Empirical Analysis of Predictive Algorithms for Collabrative Filtering 
【2】 Badrul Sarwar , George Karypis , Joseph Konstan , John Riedi.Item-Based Collaborative Filtering Recommendation Algorithm
【3】Abhinandan Das , Mayur Datar , Ashutosh Garg.Google News Personalization : Scalable Online Collaborative Filtering ,  
【4】Paul Resnick , Neophytos lacovou , Mitesh Suchak , Peter Bergstrom , John Riedl .GroupLens: An Open Architecture For Collaborative Filtering of Netnews 
【5】A.Broder..On the resemblance and containment of documents 
【6】XiaoYuan Su , Taghi M.Khoshgoftaar.A Survey of Collaborative Filtering Techiniques , 
 

Collaborative filtering的更多相关文章

  1. 协同滤波 Collaborative filtering 《推荐系统实践》 第二章

    利用用户行为数据 简介: 用户在网站上最简单存在形式就是日志. 原始日志(raw log)------>会话日志(session log)-->展示日志或点击日志 用户行一般分为两种: 1 ...

  2. mahout算法源码分析之Collaborative Filtering with ALS-WR (四)评价和推荐

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 首先来总结一下 mahout算法源码分析之Collaborative Filtering with AL ...

  3. mahout算法源码分析之Collaborative Filtering with ALS-WR拓展篇

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 额,好吧,心头的一块石头总算是放下了.关于Collaborative Filtering with AL ...

  4. mahout算法源码分析之Collaborative Filtering with ALS-WR 并行思路

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. mahout算法源码分析之Collaborative Filtering with ALS-WR 这个算 ...

  5. 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms” .

    ligh@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3 基于物品的协同过滤推荐算法--读"Item-Based ...

  6. 【RS】Sparse Probabilistic Matrix Factorization by Laplace Distribution for Collaborative Filtering - 基于拉普拉斯分布的稀疏概率矩阵分解协同过滤

    [论文标题]Sparse Probabilistic Matrix Factorization by Laplace Distribution for Collaborative Filtering  ...

  7. 【RS】Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model - 当因式分解遇上邻域:多层面协同过滤模型

    [论文标题]Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model   (35th-ICM ...

  8. 亚马逊 协同过滤算法 Collaborative filtering

    这节课时郭强的三维课.他讲的是MAYA和max .自己对这个也不怎么的感兴趣.而且这个课感觉属于数字媒体.自己对游戏,动画,这些东西一点都不兴趣,比如大一的时候刚开学的时候,张瑞的数字媒体的导论课.还 ...

  9. collaborative filtering协同过滤

    每次我想看电影的时候,都会去问我的朋友,小健.一般他推荐的电影,我都比较喜欢.显然不是所有人都有小健这样的能力.因为我碰巧和小健有类似的品味. 这个生活中的经验,实际上有着广泛的用途. 当系统需要为某 ...

随机推荐

  1. CDN缓存策略FAQ

    1.CDN加速原理通过动态域名解析,网友的请求被分配到离自己最快的服务器.CDN服务器直接返回缓存文件或通过专线代理原站的内容.网络加速+内容缓存,有效提供访问速度 2.CDN节点数量全国多个机房,每 ...

  2. C# 枚举显示中文

    转自:http://www.cnblogs.com/yank/archive/2011/09/08/EnumDisplayInChinese.html   using System; using Sy ...

  3. Add, remove, shuffle and sort

    To deal cards, we would like a method that removes a card from the deck and returns it. The list met ...

  4. svn执行clean up命令时报错

    svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”.无论你到那个父 ...

  5. (Hibernate进阶)Hibernate搭建开发环境+简单实例(二)

    hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和 ...

  6. Winserver2008R2 .netframework4.5 asp.netmvc 访问出现的是文件列表。

    Winserver2008R2 .netframework4.5 asp.netmvc 访问出现的是文件列表,服务器需要安装如下的补丁,才可正常访问. http://www.microsoft.com ...

  7. 洛谷P1467 循环数 Runaround Numbers

    P1467 循环数 Runaround Numbers 89通过 233提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 循环数是 ...

  8. Andriod项目开发实战(1)——如何在Eclipse中的一个包下建新包

    最开始是想将各个类分门别类地存放在不同的包中,所以想在项目源码包中新建几个不同功能的包eg:utils.model.receiver等,最后的结果应该是下图左边这样的:   很明显建立项目后的架构是上 ...

  9. sql server安装程序无法验证服务账户是什么原因

    为了帮助网友解决“sql server安装程序无法验证服务”相关的问题,中国学网通过互联网对“sql server安装程序无法验证服务”相关的解决方案进行了整理,用户详细问题包括:能是尚未向所有要安装 ...

  10. Oracle笔记 四、增删改、事务

    1.插入 insert into dept values(50, 'soft', 'Guangzhou'); insert into dept(deptno, dname) values(60, 's ...