首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

zdg/ 


共18个网摘 [ 1 ]   |  访问zdg的个人空间

CSDDN特约专稿:个性化推荐技术漫谈

zdg收录,使用标签:Recommend, filter,时间:2008-8-5 17:54:14 | 相关网摘我也收藏

迄今为止在个性化推荐系统中,协同过滤(Collaborative Filtering)技术是应用最成功的技术。目前国内外互联网上有许多大型网站已经应用这项技术为用户更加智能的推荐内容。如果你想要研究协同过滤,一定不能错过MovieLens(http://movielens.umn.edu/)。它是协同过滤最著名的研究项目之一。

第一代的协同过滤技术,又被称为基于用户(User-based)的协同过滤。相似用户通常被称为最近邻居(Nearest Neighbor)。用户之间的相似度是通过比较两个用户的行为选择矢量得到的。目前,比较行为选择矢量的相似度计算方法有许多种,比较经典的算法包括泊松相关系数(Person Correlation Coefficient)和余弦相似性(Cosine-based Similarity)。“最近邻居”产生后,我们就能够计算得到用户最可能感兴趣的内容集(也叫做TopN推荐集)。为了得到推荐集,分别统计“最近邻居”中的用户对不同内容的兴趣度,取其中排在最前面的内容作为推荐集。

基于用户的协同过滤技术在个性化推荐系统中获得了极大的成功,但它有自身的局限性。推荐集的产生方式意味着一个内容只有已经被用户选择(购买)后才有机会被推荐给其他用户。对于一个网上书店来说,新上架的书因为还没有被相当数量的用户购买或者评价的记录,便很少有机会被用户的“最近邻居”筛选进入推荐集。这个问题,也被称之为协同过滤的“冷启动”问题。

此外,因为计算用户的相似度时,是通过将目标用户的历史行为记录与其他每一个用户的记录相比较得出的,所以对于一个现实的推荐系统来说,扩展性将成为非常严重的问题。设想一下,对于一个拥有上百万用户的网站来说,每计算一个用户都将涉及到上百万次的比较,更不要说其中会带来的大量数据库IO操作的开销。

于是第二代基于内容项(Item-based)的协同过滤技术就产生了。与基于用户的技术不同的是,这种方法比较的是内容项与内容项之间的相似度。Item-based 方法同样需要进行三个步骤获得推荐:1)得到内容项(Item)的历史评分数据;2)针对内容项进行内容项之间的相似度计算,找到目标内容项的“最近邻居”;3)产生推荐。这里内容项之间的相似度是通过比较两个内容项上的用户行为选择矢量得到的。

和基于用户的推荐系统相比,基于内容项的推荐系统最大的改进是更具有扩展性。基于内容项的方法通过计算内容项之间的相似性来代替用户之间的相似性。对于通常的互联网应用来说,提供的内容项数量相对较为稳定。比如一个大型网上书店,可能出售的书籍数量也就在几十万上下,而用户数量就可能达到几百万。所以,比起用户,内容项之间的相似性计算需要的计算量要少很多,从而大大降低了在线计算量,提高系统性能。

大多数情况下,基于用户的推荐技术表现要略好于基于内容项的方法。这是因为基于内容的方法忽略了相似用户之间的组群特征。

为了解决用户数据的稀疏问题,最方便的办法就是将用户对没有选择过的内容项的评分设为一个固定的缺省值,例如用户的平均评分。针对如何预测遗漏的评分业内又提出了很多种方法,不过一般来说采用最简单的改进方法就可以有效地提高协同过滤推荐系统的准确度。

为了进一步解决协同过滤技术的扩展性能问题,目前比较有效的办法是在用户评分数据上做一次聚类分析(clustering)。聚类技术首先将具有相似兴趣爱好的用户分配到相同的分类中。聚类产生之后,它或者将“最近邻居”搜索对象限制在最相近的聚类中,根据类中其他用户的评价预测目标用户的评价,或者用聚类的中心作为近似提取推荐结果。由于用户之间的分类相对变化比较小,因此聚类过程往往可以离线进行,而无需实时计算,这样就大大降低了实时推荐的计算压力,提高推荐系统的速度。一般来说,聚类将用户分为多少个类,推荐系统的整体速度就能够提高多少倍。具体选择什么样的聚类算法,又会因应用领域和数据的分布特性而不同。如果聚类算法选择不当,反而会降低推荐的准确性。近年来,推荐系统的算法技术的发展也有了一些新的方向,比如SlopeOne,SVD等方法,就不一一列举了。


个性化技术相关资料

zdg收录,使用标签:个性化, Recommend, filter,时间:2008-3-24 10:37:43 | 相关网摘我也收藏

经常会有朋友发 email 问我,“研究个性化技术应该如何入手”?
这个问题其实挺让我为难的,因为以我目前的水平,尚不足以授人以渔。但又不好不作答,因此,整理了这份资料清单。我争取长期维护下去,力求授人以鱼吧。


对Google Reader减轻信息过载的设想

zdg收录,使用标签:google, filter, RSS,时间:2008-2-6 14:29:43 | 相关网摘我也收藏

Google Reader 能够意识到我有这些阅读习惯吗?我认为它技术上绝对可以实现。下面是我的设想:

我阅读了全文的文章,Google会分析文章出处、文章标题和正文里的关键字、甚至Tags(if any)等细节。一段时间之后,Google不难了解到:

* 魏武挥的文章我每篇必读
* 有关Twitter的新闻我一般都看
* 我对Vista的兴趣远高于Ubuntu,关心facebook多于MySpace
* 比起Engadget,同一款数码产品的消息,我更愿意从Gizmodo处了解
* 等等等等

这些都是我个人的Reading Trends。基于收集到的数据,Google Reader 能帮我筛选feed中的文章,筛选出来的结果(我更有可能愿意阅读的文章)归为A类,其余的是B类。平时我就只看A类内容,也许有空会看看B类的。我相信,随着收集到的数据一天一天增加,系统所作出的判断也会一天比一天精准,这应该会是一个能比较有效地减轻信息过载的手段。


Taste/Thoth:Taste Architecture 概览

zdg收录,使用标签:Recommend, filter, Taste,时间:2007-11-15 18:18:02 | 相关网摘我也收藏

Taste有着非常清晰的程序架构。看图说话,下面就是一个 User-based Recommender 的例图,说明了各个组件之间的关系。而对于一个 Item-basedRecommender,除了不需要使用 PreferenceInferrer 和 Neighborhood 之外,和下图描述的基本架构是非常类似的。


关于数据挖掘(协同过滤、关联推荐、聚类分类)一些资料

zdg收录,使用标签:DataMining, filter, Apriori, Arithmetic,时间:2007-11-14 18:53:01 | 相关网摘我也收藏

虽然Apriori算法自身已经进行了一定的优化,但是在实际的应用中,还是存在不令人满意的地方,于是人们相继提出了一些优化的方法。


数学之美系列二十一--布隆过滤器(Bloom Filter)

zdg收录,使用标签:Arithmetic, filter, 指纹,时间:2007-9-29 17:51:03 | 相关网摘我也收藏

布隆过滤器是由巴顿.布隆于一九七零年提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。我们通过上面的例子来说明起工作原理。

假定我们存储一亿个电子邮件地址,我们先建立一个十六亿二进制(比特),即两亿字节的向量,然后将这十六亿个二进制全部设置为零。对于每一个电子邮件地址 X,我们用八个不同的随机数产生器(F1,F2, ...,F8) 产生八个信息指纹(f1, f2, ..., f8)。再用一个随机数产生器 G 把这八个信息指纹映射到 1 到十六亿中的八个自然数 g1, g2, ...,g8。现在我们把这八个位置的二进制全部设置为一。当我们对这一亿个 email 地址都进行这样的处理后。一个针对这些 email 地址的布隆过滤器就建成了。

现在,让我们看看如何用布隆过滤器来检测一个可疑的电子邮件地址 Y 是否在黑名单中。我们用相同的八个随机数产生器(F1, F2, ..., F8)对这个地址产生八个信息指纹 s1,s2,...,s8,然后将这八个指纹对应到布隆过滤器的八个二进制位,分别是 t1,t2,...,t8。如果 Y 在黑名单中,显然,t1,t2,..,t8 对应的八个二进制一定是一。这样在遇到任何在黑名单中的电子邮件地址,我们都能准确地发现。

布隆过滤器决不会漏掉任何一个在黑名单中的可疑地址。但是,它有一条不足之处。也就是它有极小的可能将一个不在黑名单中的电子邮件地址判定为在黑名单中,因为有可能某个好的邮件地址正巧对应个八个都被设置成一的二进制位。好在这种可能性很小。我们把它称为误识概率。在上面的例子中,误识概率在万分之一以下。


推荐系统:协同过滤 之 Item-based Collaborative Filtering

zdg收录,使用标签:Recommend, Arithmetic, filter,时间:2007-7-25 23:56:23 | 相关网摘我也收藏

同 User-based 方法类似,Item-based 方法需要同样的三个步骤:1)得到User-item的评分数据;2)针对项的最近邻搜索,即对项进行相似度计算;3)产生推荐。但相对于 User-based 方法,Item-based 方法最大的改进是提高了协同过滤方法的扩展性及性能。

Item-based 方法通过计算项之间的相似性来代替用户之间的相似性。对于项来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而大大降低了在线计算量,提高推荐效率。

在 Item-based 方法中,要对 A 和 B 进行项相似性计算,通常分为两步:1)找出同时对 A 和 B 打过分的组合;2)对这些组合进行相似度计算,常用的算法包括:皮尔森相关系数、余弦相似性、调整余弦相似性和条件概率等。


推荐系统:协同过滤 之 User-based Collaborative Filtering

zdg收录,使用标签:Recommend, Arithmetic, filter,时间:2007-7-25 23:53:53 | 相关网摘我也收藏

协同过滤(Collaborative Filtering)技术,是推荐系统中应用最为广泛的技术之一。顾名思义,“Collaborative” 本身就已经说明了协同过滤算法的主要意思,它基于一组兴趣相同的用户进行推荐。协同过滤基于这样的假设:为用户找到他真正感兴趣的内容的好方法是,首先找他与他兴趣相似的用户,然后将这些用户感兴趣的内容推荐给此用户。

协同过滤技术可以分为三类:基于用户(User-based)的协同过滤;基于项目(Item-based)的协同过滤;基于模型(Model-based)的协同过滤。这篇文章针对基于用户(User-based)的协同过滤技术。建立一个基于用户的协同过滤系统通常需要三个步骤。

步骤一,收集可以代表用户兴趣的信息。
另外一种被认为更有效的方法是“隐式评分”方法。这种方法不需要用户直接输入评价数据,而是根据用户的行为特征由系统代替用户完成评价。一种研究得比较多的方法是 Web Mining 。

步骤二,最近邻搜索。
目前使用比较多的相似度算法包括,皮尔森相关系数(Person Correlation Coefficient)、余弦相似性(Cosine-based Similarity)以及调整余弦相似性(Adjusted Consine Similarity)。这里有一个试验,结论是“调整余弦相似性”算法的准确性较好。

步骤三,生成推荐结果。
最常见的推荐结果有两种,Top-N 推荐和关联推荐。
Top-N 推荐是针对单个用户产生的,它对每个人是不一样的:通过对你的最近邻用户进行统计,选择出现频率最高且在你的评分项目中不存在的项目作为推荐结果。


Only alpha:Feed Filter Service

zdg收录,使用标签:RSS, filter, Recommend,时间:2007-7-25 23:09:18 | 相关网摘我也收藏

简单的分析一下这四种方法。anthor decides 方法用处不大,作者当然希望越多人看到自己越多的文章最好。Digg 是 community decides 一个很好也是很成功的例子,但这种方法通常代表的是一个 Group 整体的观点,在一定程度上缺乏个性化。friends decides 肯定大有可为,也是我个人最为看好的方向,他的基本原理和推荐类似,“人以群分”,朋友的推荐通常是最有效的,但要走的路还很长。feed reader decides 是最可行的自动化方法,长时间的使用 reader,可以让它充分了解你的阅读习惯。


Taste/Thoth:开源的推荐系统引擎

zdg收录,使用标签:Recommend, filter, Taste,时间:2007-7-25 22:55:12 | 相关网摘我也收藏

Taste 是使用 Java 语言开发的一套灵活、快速的协同过滤引擎。他根据用户(Users)对某些项(Items)的偏好(Preferences),来推断用户对其他一些项的 偏好程度。举个例子,一个出售书籍或CD的在线零售商(比如amazon/dangdang/joyo),使用 Taste 引擎,可以方便地依据已有的购物篮数据,为用户推荐他可能感兴趣的书籍或CD。
Taste 提供了丰富的组件集,基于其中的算法,你可以定制出自己的推荐系统。Taste 从设计上就力求能够满足于企业级的要求,效率、可扩展性与灵活性是它的设计目标。它为基于 J2EE 的应用提供了一个标准的 EJB 接口。但 Taste 并不是仅限于 Java 平台。它能够以独立 Server 的形式运行,通过 Web Services 和 HTTP 方式向其它(语言开发的)应用程序提供推荐逻辑。


推荐系统:Amazon、Pandora 和 Del.icio.us

zdg收录,使用标签:Recommend, filter, Amazon,时间:2007-1-31 9:09:55 | 相关网摘我也收藏

Alex 总结了 3 种推荐模式,它完全是从应用的角度划分的,但基本是可以和我之前提到的学术界的 3 种划分相对应的。

个人化推荐(personalized recommendation)—— 基于个人以前的行为模式进行推荐。
社会化推荐(social recommendation)—— 基于和你相似用户以前的行为模式进行推荐。
项推荐(item recommendation)—— 基于项本身进行推荐。


协同推荐在控制信息质量上的应用

zdg收录,使用标签:社区, Recommend, filter,时间:2006-12-31 17:10:41 | 相关网摘我也收藏

最近在社区里面尝试了协同推荐的应用,通过"群众的智慧"来促进信息质量,初步成效不错,和大家分享。

要解决的问题:对于自由发布的信息(无论是分类,BBS,Wiki,还是现在"用户生成内容"),信息质量是一个关键问题,审核发布等办法工作量太大,对于非时效性信息(比如豆瓣),可以用鲜花、鸡蛋等定量的方式让最好的信息浮在上面;对于BBS这样的讨论相关的,可以用按最后回复时间倒序排列话题,让最"热"的(不见得是最好的)排在最上面;而对于分类等时效性非常高(1小时内的最重要),审核及时性要求非常高(希望在5分钟内判断),而且帖子的质量只有(发布/删除 )两种状态的网站,需要在以前的协同推荐基础上有些创新。


Web-Collaborative Filtering: Recommending Music by Crawling The Web

zdg收录,使用标签:Recommend, Filter,时间:2006-8-3 1:29:59 | 相关网摘我也收藏

We show that it is possible to collect data that is useful for collaborative filtering (CF) using an autonomous Web spider. In CF, entities are recommended to a new user based on the stated preferences of other, similar users. We describe a CF spider that collects from the Web lists of semantically related entities. These lists can then be used by existing CF algorithms by encoding them as "pseudo-users". Importantly, the spider can collect useful data without pre-programmed knowledge about the format of particular pages or particular sites. Instead, the CF spider uses commercial Web-search engines to find pages likely to contain lists in the domain of interest, and then applies previously-proposed heuristics [Cohen, 1999] to extract lists from these pages. We show that data collected by this spider is nearly as effective for CF as data collected from real users, and more effective than data collected by two plausible hand-programmed spiders. In some cases, autonomously spidered data can also be combined with actual user data to improve performance.


也说说信息过载问题

zdg收录,使用标签:Recommend, Filter, RSS, TechMeme,时间:2006-4-27 1:51:13 | 相关网摘我也收藏

根据阅读行为进行智能排序Findory的作者Greg Linden是Amazon的数据挖掘系统的负责人,这是他使用Amazon Recommendations技术在信息自动推荐上非常好的尝试。如果Bloglines采用这样的技术,将信息源限制在自己的订阅范畴,就可以实现我对Keso说的自动过滤了。根据反向链接数等因素对内容进行排序Memeorandum是典型,也可以称作Meme Engine,郑昀在系列文章中比较详细地介绍了Meme Engine的原理(一、二、三)。Memeorandum其实就是一个信息过滤器,可以迅速发现Blog圈内的热点新闻和事件。另外像Megite推出的个性化Tracker也是不错的尝试。


[杂谈碎说] 我碰见信息过载了

zdg收录,使用标签:rss, Filter,时间:2006-4-25 17:37:43 | 相关网摘我也收藏

于我而言,更个人化一些的信息过载,最近有两个突出的表现特征。一是rss feed订阅数量的增长处于平台状态,新订阅不多。这显然和blog数量的增长与质量的提高不成比例。从最初的好奇和“饥不择食”,到挑挑拣拣、专题定向,新增订阅的平台期是必然到来的,但在甚为关注的领域中同时出现这种疲态,肯定和信息过载不无关系。 二是忽然发现,一些很早就熟悉和“来往”的、也一直没有失去兴趣的blog,反而常常不自觉地疏于访问。原因也找到了——他们淹没在订阅来的rss feed当中,我没有学会一种平衡的阅读,要么只关注了所有订阅中最新的更新内容,要么采A-Z或Z-A的阅读顺序,“不幸”排在队伍中段的,竟成了恒久的忽略对象。 此外还有一个特征应该也算与信息过载相伴而来,那就是不少未提供全文甚至摘要的blog,似乎天然地被归于无暇眷顾的行列了——rss阅读尽管是一种聚合有余而组织不足的方式,可毕竟让人面对海量信息有所凭靠,非要破坏人家的阅读节奏,被放弃就是当然的自觉自愿了。甚至,有一些时常会直接输入网址去拜访的blog,由于忽然变成只提供标题,所以就实在懒得双击打开——我较真儿地以为,这种哪怕是不经意的或纯技术因素的对读者的“怠慢”,也属于信息过载中的噪声。


东拉西扯:Bloglines带来的郁闷及其他

zdg收录,使用标签:bloglines, RSS, Recommend, Filter,时间:2006-4-25 11:58:58 | 相关网摘我也收藏

登高谈到了解决信息过载的思路,这种思路不可能依靠某种单一方法,它必须综合考虑个性化阅读、群体阅读和链接关系等多种因素,为每个feed乃至每篇文章,给出针对每个用户的不同的权重。这样,你不会因为面对3000篇未读文章而精神崩溃,系统会为你选出100篇必读文章,300篇可读文章,以及2600篇可忽略文章。而且,在这样的系统中,你多做几个动作,就越有利于让自己从信息过载中脱身。而在整体上,你的自利行为,又会成为一种利他的行为。


RSS filter products

zdg收录,使用标签:rss, filter,时间:2006-4-20 0:19:54 | 相关网摘我也收藏

there's a similar product just released called ZapTXT - which seems more like a search subscription service a la PubSub. ZapTXT "allows you to define search criteria for your RSS feeds and then notifies you via email, SMS or IM when a new entry contains your search keywords."


Feeling dirty or clean after using Feed Rinse

zdg收录,使用标签:rss, filter,时间:2006-4-20 0:19:31 | 相关网摘我也收藏

Feedrinse plans to make money by limiting the number of filter criteria per feed. For a free account 3 filters are allowed, $5/month will get 20 filters and $8/month will get 300 filters.



共18个网摘 [ 1 ] 

zdg/相关标签



网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
Copyright © 2000-2008, CSDN.NET, All Rights Reserved