Author Archives

中关村,北京,中国

1.1 Main Problem of recommender system 推荐系统的主要问题

最早进行推荐系统研究的是GroupLens,他们在1994年发表的论文[1]中提出了最早的协同过滤(Collaborative Filtering)方法。一般认为,推荐系统的主要任务是通过分析用户的行为,找到用户行为中的常见模式,同时利用这些模式从大量的item中选择用户可能会感兴趣的item推荐给用户。所以,推荐系统是解决信息过载的一种方法。 推荐系统的设计依赖于用户行为数据。目前的用户行为数据有两种。第一种是显性反馈数据,比如评分数据(rating data),评分数据很多,比如Netflix让我们对电影打分,Youtube让我们对视频反馈Like还是Dislike。这种数据直接表示了用户的喜好。第二种是隐性反馈数据,这个主要包含了很多日志。比如在一个视频网站,用户看了什么video,搜索过什么video,浏览过什么页面,都属于隐性反馈。从这种反馈并不能直接得出用户对他们浏览/搜索/观看过的item的喜好程度。但是通过分析这种数据,我们可以得到用户潜在感兴趣的item。 所有,推荐系统的主要问题有两个: 1> 评分预测问题 (Rating Prediction Problem) : 这个问题是推荐系统最早研究,也是研究的最系统的问题,他的代表数据集有MovieLens和Netflix[2]。这个问题的输入数据一般是一个user-item的稀疏矩阵,每一项代表了一个用户对一个item的评分。而这个问题的目的是,给定一个用户和一个item,如果这个用户没有给这个item打过分,我们要预测这个用户可能会给这个item打多少分。 2> 行为预测问题 (Behavior Prediction Problem or Binary Prediction Problem) : 这个问题的目的是预测用户的行为,而不是预测用户会不会喜欢某个item。这个问题在很多的系统中具有现实的意义,是因为他主要依赖于分析系统日志(隐性反馈数据)。很多非专门的推荐系统网站,并没有用户给item打分的数据,但是几乎所有的可以让用户登录的网站都会记录用户的行为日志。这些行为包含搜索,浏览,观看,购买等等各种行为。所有分析这些日志可以对用户的行为作出预测。 但这两个问题结合起来,其实是一个问题:如何将用户和item联系起来。 除了这两个主要的问题,推荐系统领域还有很多其他的研究问题,但这些问题最终都是为了解决上面两个问题,比如 1> 社会网络与推荐 (Social Based Recommendation) 2> 推荐的时间效应 (Temporal Recommendation) 3> 推荐的多样性,惊喜度 (Diversity and Serendipity) 5> 人口统计学 (Demograph) [1] GroupLens: An open architecture for collaborative filtering of netnews, Resnick, P.; Iacovou, [...]

My PhD. Thesis 我的博士论文

曾经有一个人在blog里写他的博士论文,我觉得这是一个好主意。虽然现在离我正式写论文还有半年,不过我决定现在博客里写一个大纲。欢迎大家拍砖。大家的宝贵意见我会吸收到正式的论文中去。 Title : Temporal Effects in Recommender Systems 推荐系统中的时间效应 我暂时确定是这个题目,也许会改个说法,但大致的范围就是研究推荐系统中的时间效应。 Main Contents 1. Introduction of recommender system 推荐系统简介 1.1 Main Problem of recommender system 推荐系统的主要问题 1.2 Main Algorithms in recommender system 推荐系统的主要算法 1.3 Main Evaluation Method in Recommender System 推荐系统的主要评测手段 2. Temporal Effects Analysis 时间效应分析 2.1 User Preference Shifting 用户兴趣变化 2.2 Item Lifecycle Analysis Item的时效性 [...]

ResysChina on Douban

We have built a minisite on douban for recsys. Please visit and follow: http://site.douban.com/106414/

推荐系统时效性的一条有趣的曲线

我目前在做一些时间的分析,有一些很有趣的现象,和大家share一下。 我一直比较关心一个推荐系统的问题,就是不同系统的用户行为究竟有什么区别,而如何根据这些区别来选择合适的推荐算法来预测用户的行为 在互联网里面,有着各种各样的资源,新闻,电影,音乐,百科,博客,论坛,开源工程(sourceforge)。对于不同的资源,用户行为会因为资源的属性而发生很大的改变,而正是因为用户行为的改变,使得推荐算法很难做到通用,而是需要我们为不同的系统开发不同的推荐算法。 那么我的想法是,找到每个系统不同的参数,然后根据看这些参数来了解这个系统需要什么样的算法。 目前我想到的第一个参数是时效性。这些系统具有不同的时效性。如果我们定义一个item的生命周期为这个item在系统中存在的天数(一个item在某一天存在,是指这个item在这一天至少被1个人关注过)我画出了一个item的popularity(多少人关注过)和生命周期之间的关系曲线。 从这条曲线可以看出,一个系统的时效性和这条曲线的斜率是很相关的。 nytimes的时效性很短,他的大部分item都是在第一天被很多人关注,而后面就没有人关注了,所以即使很popular的item,他的生命周期比不popular的item也长不了太久。其次是blogspot,然后是youtube。 wiki和lastfm的斜率很接近最大理论斜率(0.5)。这说明,他们上面的popular的东西完全是因为生命周期长所以才热门。而不是因为在某天特别的火过。 在算法方面,我的发现是,itemcf特别适合于wiki和lastfm这种斜率很大的,而usercf比较适合nytimes,youtube,和blogspot 我认为这是两种不同兴趣在不同系统中起不同作用的一种表现。 如果我们要预测一个人在t时候要干什么,我们一般从两条线索来调查 1)用户在t时刻还干了什么(itemcf就是基于这个假设) 2)其他用户在t时刻干了什么(usercf就是基于这个假设) 对于新闻来说,用户自己没有太多的习惯,他们其实看的都是其他用户也看的(这一点从我们觉得google reader很好用,就可以体现出来)而对音乐来说,每个人都有自己的喜好,不太会因为别人在听什么,他就也要听什么。 当然,从上面的分析可以知道,这两条线索都是不完整的,完整的应该是综合考虑两条线索。

Resys Group关于music recommendation新颖性的讨论

最近group里面讨论到了音乐推荐的新颖性,很有意思,这里把一些精华的言论摘录出来 Wu Di 说到热门推荐vs.长尾挖掘的事,我想到了一个实验 还是Oscar同学的那篇博士论文,“Music Recommendation and Discovery in the Long Tail”,对应的答辩PPT里面有张图,是一个实验的数据表格。实验是拿Last.fm的CF引擎跑的。 实验有288个参与者,实验素材是一堆30秒的音乐片段,经过CF处理后,推荐给测试者听,要求他们用5分制打分,同时会问他们一个问题,“你认得出这首歌 / 这首歌的演唱者吗?” 实验结果: 1. 当测试者既认得出这首歌,也听得出这首歌的演唱者时,测试者的平均给分是4.64(发生比率15.5%,下同) 2. 当测试者只听得出演唱者,而认不出这首歌的时候,测试者的平均给分是3.88(12.81%) 3. 当测试者即听不出演唱者,也认不出这首歌的时候,平均给分是3.03(71.69%) 实验得出的一个直观简论是,当推荐结果变得陌生时,用户变得不爽了… Song Hui 关于这个实验结果我觉得是不是换个理解方式? Oscar的结果1,2,3:当推荐结果陌生时,用户对推荐结果的评价会降低(而非用户变得不爽) 举个例子来说,如果豆瓣电台推荐给我的都是孙燕姿的歌,我都很熟悉,而且我会给很高的评分(正常情况下我是不会给那些我熟悉的歌打分的,不过在这个实验里用户是被要求给所有推荐结果打分), 但我对推荐系统确很不满意,推荐结果对我来说不够新颖,我更喜欢系统给我推荐一些我不熟悉的东西(如果是我喜欢的就更好了), 虽然对于这些不熟悉的推荐结果我给的分相比那些熟悉的可能会低,但这并不代表我的用户体验不好。 因此,当推荐结果变得陌生,用户给的评分较低 =? 用户不爽 Wen GuoZhu 这个实验的一个致命问题是没有考虑时间性,所以它结论的适用场景是实验室内的那一小段时间,而实际推荐系统考虑的是一个长期效果 我的意思是说,这个实验只是实验室里的情况,并不能代表实际的情况。因为实验室里的测试只是一两个小时的听歌喜好,当然是听到熟悉的就会打高分。但实际当中,用户是长年累月在听歌,你要是老给TA播熟悉的,时间长了TA就不乐意了。所以,这个实验的结论并不适用于实际情况。 如果还有进一步的讨论,我会更新这个帖子。

学术性网络调查:推荐网站的总体用户体验 [转]

这是香港的chen li老师在group里面贴的一个帖子,他要我们多宣传,所以我就转载到blog里面来了。 http://groups.google.com/group/resys/browse_thread/thread/c238fb019206ae34?hl=zh-CN 这是由瑞士联邦理工大学(洛桑分校)与香港浸会大学的人机交互组合作设计的一个网络用户调查。 主要目的是研究用户对当前推荐系统的使用体验,比如推荐 产品的质量,多样性和解释能力对用户行为的影响。这项研究的成果会对推荐系统就算法开发,用户界面设计和可用性等方面作出贡献,从而提高网络用户对推荐 网站的认可度。 我们有五份丰厚的奖品,会从中国(包括香港地区)的所有参与者中随机选出。 这个调查由一组英文问题组成。根据您自身使用推荐网站的经验,您只需要10到15分钟时间回答这些问题,就有机会获奖。 我们衷心的感谢您对我们的研究 所将投入的宝贵时间和意见,并谢谢如果能将这个调查链接转发给您的朋友和同事。 以下是这个调查的链接和英文介绍。 链接是:http://grpupc1.epfl.ch/~hu/survey/survey.php?sid=2 Have you used a recommender system in the past 6 months? Will you tell us your experience with that system? By participating, you help our research group understand user experience offered by various online recommender systems. A recommender system proposes items that [...]

参加CCIR会议

这几天在黑龙江牡丹江的镜泊湖参加CCIR会议。我是来打酱油的,师弟有一篇论文。这边上网太麻烦,只有开会的地方才能上网。

什么样的用户反应是推荐系统最需要的

用户看到推荐结果的时候会有很多不同的反应,比如以电影推荐为例 1. 这个推荐很有道理,不过推荐结果我已经看过了 2. 这个推荐的东西是什么啊,不知道 3. 靠,这个电影这个网站居然有,一直就想看 不知道还有什么心理?

用Topic组织你的兴趣

文栋兄的cutt真是千呼万唤始出来啊。 文栋专门写了一篇文章介绍他们的系统,大家可以围观一下: http://www.guwendong.com/post/2010/cutt.html 然后再给大家展示一下Logo OK,客套话说完了,来说说我的看法吧。这套系统的核心是利用主题(topic)来联系user和item的关系。推荐领域的一个牛人曾经说过,推荐的本质就是将user和item联系起来,user-cf是用相同兴趣的用户联系user/item, item-cf是用相似的item联系user/item。而cutt是利用topic联系user和item。 其实用topic联系user和item的思想在数据挖掘的领域已经有很悠久的历史了,其代表的模型就是LSI,pLSA, LDA,这些统统被称为latent factor model或者topic model。在理想的情况下,我们可以把item分成一个个的topic,然后更加用户的历史记录计算用户对不同的topic的喜好程度,从而对用户做出推荐。 topic model的好处是可以解决新的item的cold start的问题。如果一个新的item出现了,在collaborative filtering的方法中,如果还没有一个用户对这个item产生过行为,我们是没有办法判断谁会喜欢这个item的。但如果item是一篇文章,我们就可以根据topic model知道这个item属于什么样的topic (可以通过分析文章的内容),这样就可以把这个item推荐到喜欢这个item的topic的用户那儿去。 这个过程听起来很简单,其实还是很复杂的,首先是如何定义topic。举电影的例子,比如大话西游,可以属于古装片,周星驰电影,西游记,香港电影,向华强/向华胜兄弟的电影,搞笑电影,90年代香港电影,等等很多的topic。我们根据不同的数据可以得到不同的topic,而不同的用户对这个电影的看法可能是倾向于不同的topic。比如有的用户就是冲着周星驰去的,而有的用户只是冲着搞笑电影去的。 建立topic model需要的核心数据是拿到不同entity之间的关系。在collaborative filtering里面,用户看过item就是一种关系。语义网络也是一种关系,比如周星驰是演员,也当过导演,这就是一种语义网络定义的关系。cutt在语义网络方面下了很大的功夫。他们更加不同的数据,对item进行了不同种类的聚类,同时找出了用户最关心的聚类展示给用户。 另外cutt在反馈系统的设计上,直接让用户对他们找出来的topic进行反馈,这样就可以更好的给用户做出推荐。当然cutt也有很多的问题,不过这可能是和中国的互联网现状相关的,中国互联网上原创文章比较少,有意思的文章也比较少。这样造成大量的topic相关的文章其实也就是一篇,其他的文章都是相互转载。 另外用户的冷启动问题也比较难解决,因为现在还没有用户的喜好数据,所以cutt目前其实还没有做推荐系统,他们只是提供了一个相关topic的浏览体系,让用户比较容易的找到自己喜欢的topic。 就技术细节而言,cutt比我上面说的要复杂的多,我这儿就算抛砖引玉了,嘿嘿。

LDA的实现

首先要感谢Wang Yi的帮助,我之前对统计模型总是没有深入的了解,最近仔细研究了LDA之后,发现这个模型具有很多矩阵模型没有的优点。而且这个算法的实现很简单。下面的图片就是主要代码。 同时利用openmp实现了一个简单的并行版本,可以充分一下利用我机器的4个核。 轻松一下