Tag Archives: collaborative filtering

Increasing serendipity by recommending items of users extraordinary interest

This paper “Anatomy of the Long Tail: Ordinary People with Extraordinary Tastes“ proves that every user has extraordinary tastes. Except for extraordinary tastes, users will also have social preferences. For example, I am a researcher on dataming, thus I will have extraordinary preference on dataming and read many article which is unknown by most of [...]

关于UserCF和ItemCF的那点事

UserCF和ItemCF是协同过滤中最为古老的两种算法,在top-N的推荐上被广泛应用。这两个算法之所以重要,是因为他们使用了两个不同的推荐系统基本假设。UserCF认为一个人会喜欢和他有相同爱好的人喜欢的东西,而ItemCF认为一个人会喜欢和他以前喜欢的东西相似的东西。这两个假设都有其合理性。根据我的测试,用UserCF和ItemCF做出的推荐列表中,只有50%是一样的,还有50%完全不同。但是这两个算法确有相似的精度。所以说,这两个算法是很互补的。 我一直认为这两个算法是推荐系统的根本,因为无论我们是用矩阵,还是用概率模型,我们都非常的依赖于前面说的两种假设。如果用户的行为不符合那两种假设,推荐系统就没必要存在了。因此我一直希望能够找出这两种算法的本质区别。他们有相似的精度,但是coverage相差很大,ItemCF coverage很大而UserCF很小。我还测试了很多其他指标,不过要从这些表象的指标差异找出这两个算法的本质区别还是非常困难。不过上周我基本发现了这两个算法推荐机理的本质区别。 我们做如下假设。每个用户兴趣爱好都是广泛的,他们可能喜欢好几个领域的东西。不过每个用户肯定也有一个主要的领域,对这个领域会比其他领域更加关心。给定一个用户,假设他喜欢3个领域A,B,C,同时A是他喜欢的主要领域。这个时候我们来看UserCF和ItemCF倾向于做出什么推荐。 结果如下,如果用UserCF, 它会将A,B,C三个领域中比较热门的东西推荐给用户。而如果用ItemCF,它会基本上只推荐A领域的东西给用户。因为UserCF只推荐热门的,所以UserCF在推荐长尾上能力不足。而ItemCF只推荐A领域给用户,这样他有限的推荐列表中就可能包含了一定数量的不热门item,所以ItemCF推荐长尾的能力比较强。不过ItemCF的推荐对某一个用户而言,显然多样性不足。但是对整个系统而言,因为不同的用户的主要兴趣点不同,所以系统的coverage会很大。 显然上面的两种推荐都有其合理性,但都不是最好的选择,因此他们的精度也会有损失。最好的选择是,如果我们给这个用户推荐30个item,我们既不是每个领域挑选10个最热门的给他,也不是推荐30个A领域的给他,而是比如推荐15个A领域的给他,剩下的15个从B,C中选择。 认识到这一点,可以给我们设计高精度的算法指明一个方向。就是当一个系统对个人推荐的多样性不足时,我们增加个人推荐的多样性可以提高精度。而当一个系统的整体多样性不足(比如只推荐popular的),我们增加整体的多样性同样可以提高精度。

用户忽视了什么?What are ignored by users?

当用户浏览一个网页的时候,他将面对很多信息,有些他选择点击观看了,有些则被他忽视了。传统的日志系统只会记录他点击了什么,而不会记录他忽视了什么。但忽视也是一种信息,而对这种信息的利用无疑可以改善推荐的性能。 当然有人会争辩,忽视的原因是多样的,不一定代表用户不感兴趣。比如用户可能真的就没看见。确实这是个问题,不过通过日志系统,我们可以拿到整个网站的click graph,那么如果从页面A到B有很多人都点击了,而user u没有点击,也就是说在页面A上,u忽视了B页面的链接,那这就说明u很可能是不感兴趣,而不是没有见到B。 当然,上面提到的方法还很粗糙,如果深入的做一下,还是可以获得不少启发。 When a user view a web page, she will see many links, and choose some to view while ignore others. Traditional log system will only record which links she clicks and will not record which links she ignores. However, ignore behavior is also a type of information and it can [...]

内容信息在推荐系统中的作用

TechnoCalifornia 新发表了一篇博客讨论内容信息在推荐系统的作用。可以在这里看到。 http://technocalifornia.blogspot.com/2009/12/on-uselessness-of-content-for.html 鉴于blogspot被封了,我转载一下他的博客,并讨论一下我的看法。 在NetflixPrize中,对于如何利用IMDB的内容信息有不少人有过研究,我也做过一些模型。我们的基本结果是,内容信息可以稍微改善一个单独模型的精度,但在最后的融合中基本不起作用。这篇文章就从这个出发点来讨论内容在推荐中究竟有没有用。 This is one of the hot discussions that has sparked as a result of the Netflix Prize. During the competition several teams reported trying to use movie metadata always with discouraging results. This is probably best summarized by a 2008 post by Pragmatic Theory, one of the leading teams. The [...]

item-based top-N问题中的一个公式

我觉得所有的item-based的方法其实是最大化如下的目标函数 sum_{i in N(u) , j in I\N(u)} w(i,j) x(j) 其中x(j) = 1表示j将被选作最终的N个结果集合中,所以有 sum(x(j)) = N I是所有item的集合, N(u)是u喜欢的物品集合, w(i,j)是i和j的相似度。

user-based和item-based算法,谁能产生多样化的结果

前一段时间和wendong聊天,他提到userbased算法的结果多样性不如itembased算法。对此,我觉得有几个问题 1) 我们知道所谓多样性,是指推荐结果两两都不怎么相似,从而不同的相似度度量其实产生不同的多样性度量。 2)常用的相似度有两种,一种是基于content的,一种是基于collaborative filtering的,那么根据我的实验,在这两种相似度的度量下,userbased的结果多样性都好于itembased的算法 3)但我觉得还是存在一种相似度,而这个相似度对应的多样性在item-based的方法下比较好 不知道大家对这个问题怎么看,在实际系统中userbased和itembased谁能产生多样的结果?

user-based推荐在GRSuggest中的应用

通过这几天设计google reader的推荐系统,我发现还是user-based算法比较实用,这主要是因为文章更新的太快,而用户增加的很慢。我现在的策略是,定期的算一下用户之间的相似度,然后对一个给定用户,找出和他最相似的100个用户,然后找出这100个用户最近3天share和like的文章,并对这些文章进行排序,选择前50个,作为最后的结果。 user-based算法非常适合于item快速更新的场合,在google reader上,每秒钟都会出现很多新的文章,所以实时计算文章直接的相似度是很困难的。

GRSuggest 添加相关文章功能

姑且把我上一篇文章中的推荐系统命名为GRSuggest吧,嘿嘿 今天加入了一个功能,就是在每篇文章的末尾加入了相关文章,就是看这篇文章的人还喜欢看什么文章。文章的相似度是根据collaborative filtering算的文章相似度,并没有用内容相似度,所以看起来文章说的不是一个事 下一个功能可能是好友推荐功能,给一个用户推荐和他有相同喜好的好友。 目前我还只用了最简单的一些算法,先让系统跑起来,再慢慢调整吧。 刚才加入了user-based的方法,同时将user-based和item-based的结果做了融合。感觉效果好了一些。

基于Item-based的GoogleReader文章推荐

我今天基于Item-based方法做了一个google reader的文章推荐系统。系统设计很简单: 1.找出5天内发表的所有的文章 2.提取用户和文章的喜好关系 3.利用喜好关系计算文章之间的相似度 4.对2天内的活跃用户(like 5个以上文章的用户)给出推荐 这个推荐系统的使用很简单,只要访问 http://xlvector.cn/gr/feed.php?u=[uid] 其中的uid是Google Reader中的user id。这个是一个rss的链接,可以在Google reader 中订阅。 比如这个系统给我的推荐是 http://xlvector.cn/gr/feed.php?u=05597061783814717014 个人感觉目前效果还很差,很多细节没有考虑

最近有关recommender system和collaborative filtering的会议

ACM Recommender Systems 2009Important Dates:Long and short papers due: May 8Author notification: June 19 (6 weeks)2nd round short papers: June 26Notification 2nd round: July 17Camera-ready copy: August 17 Web Intelligence 2009 IMPORTANT DATESWorkshop proposal submission: January 15, 2009Electronic submission of full papers: April 10, 2009Tutorial proposal submission: April 10, 2009Workshop paper submission: April 30, 2009Notification [...]