`
endual
  • 浏览: 3560675 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多

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

分类: 推荐引擎系统 362人阅读 评论(0) 收藏 举报

 

我收集和整理的目前互联网上所能找到的知名开源推荐系统,并附上了个人的一些简单点评(未必全面准确),
这方面的中文资料很少见,希望对国内的朋友了解掌握推荐系统有帮助
 
陈运文
 
 SVDFeature
由上海交大的同学开发的,C++语言,代码质量很高 。去年我们参加KDD竞赛时用过,非常好用,而且出自咱们国人之手,所以置顶推荐!
 
SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用相对较少的内存实现较大规模的单机版矩阵分解运算。
 
另外含有Logistic regression的model,可以很方便的用来进行ensemble运算
 
 
 
 
Crab
项目地址:
 
 
系统的Tutorial可以看这里:
 
Crab是基于Python开发的开源推荐软件,其中实现有item和user的协同过滤。据说更多算法还在开发中,
Crab的python代码看上去很清晰明了,适合一读
 
CofiRank
C++开发的 Collaborative Filtering算法的开源推荐系统,但似乎2009年后作者就没有更新了,
CofiRank依赖boost库,联编会比较麻烦。不是特别推荐
项目地址:
 
 
 
EasyRec
Java开发的推荐系统,感觉更像一个完整的推荐产品,包括了数据录入模块、管理模块、推荐挖掘、离线分析等,整个系统比较完备。
项目地址:
 
 
 
 GraphLab
项目地址:
Graphlab是基于C++开发的一个高性能分布式graph处理挖掘系统,特点是对迭代的并行计算处理能力强(这方面是hadoop的弱项),
由于功能独到,GraphLab在业界名声很响
用GraphLab来进行大数据量的random walk或graph-based的推荐算法非常有效。
Graphlab虽然名气比较响亮(CMU开发),但是对一般数据量的应用来说可能还用不上
 
 
Lenskit
这个Java开发的开源推荐系统,来自美国的明尼苏达大学,也是推荐领域知名的测试数据集Movielens的作者,
他们的推荐系统团队,在学术圈内的影响力很大,很多新的学术思想会放到这里
 
 
Mahout
网址
这个名气很响,是Apache基金资助的重要项目,在国内流传很广,并已经有一些中文相关书籍了。注意Mahout是一个分布式机器学习算法的集合,协同过滤只是其中的一部分。除了被称为Taste的分布式协同过滤的实现(Hadoop-based,另有pure Java版本),Mahout里还有其他常见的机器学习算法的分布式实现方案。
 
另外Mahout的作者之一Sean Owen基于Mahout开发了一个试验性质的推荐系统,称为Myrrix, 可以看这里:
http://myrrix.com/quick-start/ 
 
 
MyMediaLite
基于.NET框架的C#开发(也有Java版本),作者基本来自德国、英国等欧洲的一些高校。
除了提供了常见场景的推荐算法,MyMediaLite也有Social Matrix Factorization这样独特的功能
尽管是.Net框架,但也提供了Python、Ruby等脚本语言的调用API
MyMediaLite的作者之一Lars Schmidt在2012年KDD会议上专门介绍过他们系统的一些情况,可惜由于.Net开发框架日渐式微,MyMediaLite对Windows NT Server的系统吸引力大些,LAMP网站用得很少
 
 
LibFM
项目网址:
作者是德国Konstanz University的Steffen Rendle,去年KDD Cup竞赛上我们的老对手,他用LibFM同时玩转Track1和Track2两个子竞赛单元,都取得了很好的成绩,说明LibFM是非常管用的利器(虽然在Track1上被我们打败了,hiahia)
顾名思义,LibFM是专门用于矩阵分解的利器,尤其是其中实现了MCMC(Markov Chain Monte Carlo)优化算法,比常见的SGD(随即梯度下降)优化方法精度要高(当然也会慢一些)
 
顺便八卦下,去年KDD会议上和Steffen当面聊过,他很腼腆而且喜欢偷笑,呵呵挺可爱。
 
 
 
PREA
全名是 Personalized Recommendation Algorithms Toolkit, 开发语言为Java。也是一个轻量级的开源项目
项目网址:
 
放在Mloss这个大project下。我个人感觉PREA还是比较简陋的,参加开发的三位工程师Joonseok Lee, Mingxuan Sun, Guy Lebanon更新频率很低,提供的资料也少。
 
不过Mloss下倒是能找到其他一些推荐开源项目
 
 
Python-recsys
一个非常轻量级的开源推荐系统,python开发,作者似乎只有一位,
Python-recsys主要实现了SVD、Neighborhood SVD推荐算法,
这个项目麻雀虽小五脏俱全,评估数据(Movielens,Last.fm)、评估框架也都有
API也很简单清晰,代码简洁,属于推荐入门的良好教材。
不过真正要用到实际系统中,还是得补充很多内容
 
github的地址位于
 
项目的介绍见:
 
RapidMiner
项目网址为:
Java语言开发,RapidMiner(前身是Yale)已经是一个比较成熟的数据挖掘解决方案了,包括常见的机器学习、NLP、推荐、预测等方法(推荐只占其中很小一部分),而且带有GUI的数据分析环境,数据ETL、预处理、可视化、评估、部署等整套系统都有。
 
另外RapidMiner提供commercial license,提供R语言接口,感觉在向着一个商用的数据挖掘公司的方向在前进。
 
 
 
Recommendable
基于Ruby语言开发,实现了一些评分预测的推荐算法,但是整体感觉比较单薄,
github上地址如下:
 
 
Recommenderlab
基于R语言开发的开源推荐程序,对经常使用R语言的工程师或者BI数据分析师来说,recommenderlab的出现绝对算得上是福音了
项目地址:
 
 
基于Recommenderlab来开发推荐系统,代码会非常精简,因为推荐系统所依赖的user-item rating matrix对擅长处理向量运算的R语言来说再方便不过了,
但是在实际推荐系统中,需要考虑的问题和逻辑都比较复杂,用Recommenderlab不是很灵活。另外受限于R语言对内存的限制,Recommenderlab不太适用于过大规模的推荐应用
 
 
Waffles
SF地址:
Waffles英文原意是蜂蜜甜饼(见logo),在这里却指代一个非常强大的机器学习的开源工具包,基于C++语言开发。
Waffles里包含的算法特别多,涉及机器学习的方方面面,推荐系统位于其中的Waffles_recommend tool,大概只占整个Waffles的1/10的内容(其它还有分类、聚类、采样、降维、数据可视化、音频处理等许许多多工具包,估计能与之媲美的也就数Weka了)
 
 
分享到:
评论

相关推荐

    .Android开源项目分类汇总

    通过下载和研究这些开源项目,开发者可以深入理解Android系统的内部工作原理,学习到实际项目中的最佳实践,提高自己的编程技巧和解决问题的能力。同时,参与开源社区的讨论和贡献,也是提升个人影响力和建立专业...

    C#、web系统开源资源大汇总介绍

    C#开源资源大汇总涵盖了多个领域,其中包括AOP框架、Ajax框架、工作流、文本编辑器等。在AOP(面向方面编程)框架方面,有Encase,它以运行时代码部署方面,降低了对配置文件的依赖,适合新手开发者。NKalore是一个...

    报工系统_报工_报工系统开源_报工系统_扫码报工_工时上报协作_

    2. **报工系统开源**:开源软件意味着用户可以自由地访问源代码,这不仅降低了系统部署的费用,还允许根据企业的具体需求进行二次开发和定制。 3. **报工系统**:这类系统集成了工时追踪、数据统计和报表生成等功能...

    c#开源资源大汇总

    本文将围绕"**C#开源资源大汇总**"的主题,详细介绍其中涉及的AOP(面向切面编程)框架、Ajax框架和工作流(Workflow)相关知识。 首先,让我们来看看AOP(面向切面编程)框架。AOP是软件设计的一种新范式,它允许...

    2023泛在操作系统开源生态体系研究报告

    开源创新在中国的实践已经证明了其有效性,开源软件的发展促进了群体智能的激活,提升了科技创新的效率。从Linux在云计算和移动设备领域的成功,可以看出开源模式在应对不确定性方面的优势。随着人机物融合的泛在...

    江湖上门到家系统江湖家政服务系统开源代码

    江湖上门到家系统江湖家政服务系统开源代码是一款专为家政服务业打造的管理软件,其核心在于提供一套完整、高效、易用的信息化解决方案。该系统的开源特性使得用户可以根据自身业务需求进行定制化开发,增强系统的...

    Android开源项目分类汇总

    Android开源项目分类汇总 html

    固定资产管理系统(开源)

    本文将深入探讨一个基于C#语言开发的开源固定资产管理系统,该系统采用了三层架构的设计模式,具有良好的可扩展性和维护性。 首先,我们要理解C#在开发此类系统中的优势。C#是一种面向对象的编程语言,尤其适合构建...

    源码-开源版在线客服管理系统.zip

    4. **持续改进**:开源软件的发展依赖于社区的贡献,这意味着系统的持续改进和优化。 5. **透明度**:源代码的开放性保证了软件的可审查性和安全性。 在使用【源码-开源版在线客服管理系统】时,企业应考虑以下几...

    Java 开源用户管理系统

    【Java 开源用户管理系统】是一个基于Java编程语言开发的用户管理解决方案,旨在提供一个易于学习、可扩展且功能丰富的平台,适用于初学者和有经验的开发者。这个系统的核心目标是帮助用户有效地管理和操作用户数据...

    树莓派开源原理图汇总

    树莓派是一款基于Linux系统的微型计算机,其设计初衷是为了教育目的,但因其强大的可扩展性和开源特性,已广泛应用于各种领域,如物联网、自动化、媒体中心等。本资源包是2018年5月17日更新的树莓派开源原理图的汇总...

    最新树莓派开源原理图汇总

    通过这份开源原理图汇总,开发者不仅可以了解树莓派的内部构造,还能学习到如何设计和优化硬件电路,这对于进行系统级别的编程、硬件扩展或自制项目具有极大的帮助。同时,由于资料的开源性质,用户可以自由地分享、...

    小米便签开源软件是一款较为流行的备忘录软件,其由Java语言编写,基于Android操作系统进行开发运行和维护

    小米便签开源软件是针对Android操作系统设计的一款备忘录应用,深受用户喜爱。这款软件的核心特点在于其开源性,这意味着它的源代码对外公开,开发者和爱好者可以自由地查看、修改和分享代码,促进了社区协作与创新...

    C#开源资源大汇总 , 磨练你的c#技巧

    标签 "c#开源 汇总" 明确指出这是关于C#的开源项目集合,开源意味着代码公开、可自由使用、修改和分发,这为开发者提供了深入了解C#内部工作原理的机会,也能促进代码复用,加速项目开发。 在压缩包子文件的文件...

    智慧停车场微信小程序源码/全开源智能停车系统源码

    开源智慧停车场微信小程序源码,全开源的智能停车系统源码。本停车场系统兼容市面上主流的多家相机,理论上兼容所有硬件,可灵活扩展,相机识别后数据自动上传到云端并记录,校验相机唯一id和硬件序列号,防止非正常...

    java开源的文件管理系统

    Java开源文件管理系统是一种基于Java技术构建的用于存储、管理和检索文件的应用程序。它提供了一种高效、安全且灵活的方式来组织和访问大量的数据。在本文中,我们将深入探讨Java开源文件管理系统的相关知识点,包括...

    NLP开源项目链接汇总

    NLP开源项目链接汇总,中英文的都有,包括分词,词性标注,注重算法介绍

    常用开源软件说明手册

    开源软件是指其源代码可以被公众使用的软件,用户不仅有权利自由运行该软件,还有权查看、修改和分发这些软件的源代码。开源软件的核心在于共享精神,这种精神推动了技术的快速发展和创新。 #### 常见开源软件介绍 ...

    【服务评价小程序V2.2.0】全开源解密版+支持多门店举办各种员工服务评价活动.rar

    【服务评价小程序V2.2.0】是一个专为零售和服务行业设计的开源软件解决方案,旨在帮助商家管理和优化员工的服务质量。此版本为全开源解密版,意味着开发者可以自由查看、修改和扩展源代码,以适应不同业务场景的需求...

Global site tag (gtag.js) - Google Analytics