推荐系统开源工具 – SVDFeature

标签: 产品评论 | 发表时间:2011-09-23 01:52 | 作者:wnzhang Roger
出处:http://www.resyschina.com

SVDFeature是我们(上海交大Apex实验室)在参加KDDCUP 2011期间开发的。通过这个工具,我们和港科大(HKUST)的联合小组InnerPeace在KDDCUP 2011中获得Track 1第三名,并创造单模型最好成绩。在此分享给大家,并希望和大家有更多的交流。工具总体感觉是:

(1)基于feature的可扩展性 —— SVDFeature实现了我们的基础模型feature-based matrix factorization。有了这个工具之后,CF算法部分被封装,设计新模型只需要关注如何生成特征,不需要修改任何训练代码。团队成员能够集中精力在各种信息的利用上面。

(2)大规模数据的可适应性 —— SVDFeature可以使用较少的内存去做大规模的实验。这主要是我们不需要将所有训练数据都读入内存。同时为了提高效率,我们使用了两个独立线程分别负责从硬盘读取训练数据和更新权重。最终我们能用2G内存花一天不到的时间在KDDCUP 2011 Track 1上跑出RMSE=22.16的单模型结果。

推荐系统不需要用户输入查询词,而是根据用户的历史行为判断用户的喜好,进而推荐出用户可能喜欢的物品。这是它和和搜索引擎的一大区别。那么既然没有明确的用户喜好,推荐系统就需要抓取尽可能多的,有价值的信息来捕捉用户的喜好。

近年来,一些推荐系统的比赛开始将重点转至信息的挖掘与利用上面。Yahoo! Music Recommendation (KDDCUP 2011)包括了用户收听音乐的时间,音乐的专辑,艺术家,类别。Context-aware Movie Recommendation (CAMRa 2010-2011)在此基础之上更强调了context信息,例如用户所在的家庭,收看电影时的心情。从比赛的结果来看,充分利用这些信息能使推荐系统的效果得到很大的提高。

这里就会有一个问题了:面对不同的Task,不同的数据集,我们需要抽取不同的信息将其加入到推荐系统之中。例如Yahoo! Music Recommendation可以加入音乐的专辑,艺术家,类别;Context-aware Movie Recommendation可以加入用户的家庭,心情等。相信实现过多个推荐系统的朋友都知道这是一件麻烦的事情。有没有一个很好的框架能概括这种信息融入的形式呢?

我们找到了feature-based matrix factorization这个模型。它在经典的matrix factorization的基础之上,融入了feature的概念。预测公式可以写成如下形式:



简单地解释下,等式右边前两项就是feature产生的bias,其中包括了global features (g), user featuers (u)和item features (i)。最后一项是矩阵分解项,不过user/item latent factor也是通过user/item feature进行选取并合成的。这样,share相同user/item feature的users/items就会share对应的user/item latent factor以及feature bias。为了更好的解释,这里加一幅示意图:

通过feature-based matrix factorization,我们就能通过将我们需要的信息转化成feature的形式加入到推荐系统中,去帮助系统更好的学习出用户的喜好。我们写了SVDFeature这样一个toolkit来专门做feature-based matrix factorization。这样一来,开发人员只需要将手里拥有的数据转化成预先定好的格式,其他的事情就是Feature-based matrix factorization了。这就好比用 做文本分类一样。

通过设置user/item/global features,SVDFeature可以实现当今CF领域的大多数有名的算法:temporal dynamics,neighborhood,hierarchy information,implicit/explicit feedback (SVD++)。另外,值得一提的是SVDFeature能够很方便的做pairwise ranking,即是以排序为目标进行的训练,最终推荐给每个user一个list的item。由于有了这一点,我们可以算是没有改一行代码,就又参加了CAMRa 2011 (推荐一个list的movie给每个家庭)。更多详细的信息请见我们的technical report以及toolkit manual。http://apex.sjtu.edu.cn/apex_wiki/svdfeature

希望这个开源工具能对大家的研究有所帮助。欢迎大家提供宝贵的意见。我们会继续将SVDFeature做的更好:)

您可能也喜欢:

Reculike : 开源论文推荐系统

推荐系统有效性—— Digg 40%的提升

转载:推荐系统应用研究:音乐电台

为什么关于社会化推荐系统的创业想法接连失败?

2011推荐系统论坛

来自无觅网络的相关文章:

推荐系统:主要推荐方法 (@guwendong)

如何从无到有建立推荐系统 (@alibuybuy)

开源推荐框架DUINE概览 (@wentrue)

推荐系统应用研究:音乐电台 (@alibuybuy)

卓越亚马逊推荐机制的学习和探讨 (@alibuybuy)
无觅

相关 [推荐系统 开源 工具] 推荐:

推荐系统开源工具 – SVDFeature

- Roger - Resys China
SVDFeature是我们(上海交大Apex实验室)在参加KDDCUP 2011期间开发的. 通过这个工具,我们和港科大(HKUST)的联合小组InnerPeace在KDDCUP 2011中获得Track 1第三名,并创造单模型最好成绩. 在此分享给大家,并希望和大家有更多的交流. (1)基于feature的可扩展性 —— SVDFeature实现了我们的基础模型feature-based matrix factorization.

Reculike : 开源论文推荐系统

- votis - Resys China
今天这篇博文主要总结一下reculike的系统架构. 两周前我们宣布发布了reculike的alpha版. 本着分享的原则,今天在这儿介绍一下我们的各个模块的设计方法. 我们这个项目一开始叫paperlens,这是因为我们想学习业界的前辈movielens,开发一个源代码和数据都开源的系统. 关于数据的开源,我想当用户数达到一定程度后,每个月会dump一次我们所有的数据库(密码等隐私信息除外),放到网络上供大家下载.

推荐系统开源软件列表汇总和逐一点评

- - CSDN博客数据库推荐文章
我收集和整理的目前互联网上所能找到的知名开源推荐系统,并附上了个人的一些简单点评(未必全面准确),. 这方面的中文资料很少见,希望对国内的朋友了解掌握推荐系统有帮助. 由上海交大的同学开发的,C++语言,代码质量很高. 去年我们参加KDD竞赛时用过,非常好用,而且出自咱们国人之手,所以置顶推荐. SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种.

Min-Hash和推荐系统

- - xlvector - Recommender System
前几年看Google News Recommendation的那篇Paper,对里面提到的MinHash的算法基本没有注意,因为之前的习惯都是只注意论文的模型那块,至于怎么优化模型一般都只是扫一眼. 不过最近看了大量的Google Paper,发现Google在实现一个算法方面确实有很多独到之处. 其实,Min-Hash是LSH(Locality Sensitive Hash)的一种,我之前对LSH的了解仅仅限于知道它能把两个相似的东西Hash成两个汉明距离接近的2进制数.

推荐系统实战

- - 博客园_首页
推荐算法:基于特征的推荐算法. 推荐算法准确度度量公式:. 其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合. 集合相似度度量公式(N维向量的距离度量公式):. 其中,N(u)表示用户u有过正反馈的物品集合. 其中,S(u,k)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣.

推荐系统杂谈

- - 后端技术杂谈 | 飒然Hang
推荐系统是近些年非常火的技术,不管是电商类软件还是新闻类app,都号称有精准的推荐系统能给你推送你最感兴趣的内容. 现象级的资讯类app“今日头条”就得益于此成为了势头非常猛的一款产品. 本文就针对推荐系统讲述一些相关概念和实践经验. 首先需要明确的就是推荐系统的目标,一般来说不外乎以下几个:. 用户满意性:首当其冲的,推荐系统主要就是为了满足用户的需求,因此准确率是评判一个推荐系统好坏的最关键指标.

Java开源建站工具

- Amom - 阮一峰的网络日志
美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单. 他的语言平台是Java,开发项目是一个网站(还未上线). 所用到的工具都是开源的,可以免费得到. 在目前的创业者之中,用Java作为网站开发语言的人似乎很少. 这当然不是没有原因的,Java看上去确实不像是最便捷的网站开发工具,给人的感觉是用起来麻烦又费事.

个性化推荐系统综述

- Tony - 所有文章 - UCD大社区
上个月写过一篇产品推荐的文章,详情请见《我所了解的产品推荐》,内容很泛,多为工作心得. 本周读了几篇相关的论文,收获颇多,分享点干货. 以下内容摘自《个性化推荐系统的研究进展》,该文发表于2009年1月的《自然科学进展》专题评述,作者是刘建国、周涛、汪秉宏. 我略去了具体的算法和许多公式,重点看原理、思路和比较.

推荐系统那些事儿1

- - 冰火岛
知识库:用户知识库,Item知识库,用户评分数据(显性和隐性)等.不同的业务背景不一样,譬如电商,社交网络,视频,app应用等. 协同过滤引擎:根据用户评分数据集,通过collaborative filtering方法,计算用户喜欢的top N item. 数据格式: userid, itemid,score.