`
m635674608
  • 浏览: 4934546 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

TOP 10 开源的推荐系统简介

 
阅读更多

最 近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature、LibMF、LibFM等,也有重 量级的适用于工业系统的 Mahout、Oryx、EasyRecd等,供大家参考。PS:这里的top 10仅代表个人观点。

#1.SVDFeature

主页:http://svdfeature.apexlab.org/wiki/Main_Page 语言:C++
一个feature-based协同过滤和排序工具,由上海交大Apex实验室开发,代码质量较高。在KDD Cup 2012中获得第一名,KDD Cup 2011中获得第三名,相关论文 发表在2012的JMLR中,这足以说明它的高大上。
SVDFeature 包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法,  是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用 相对较少的内存实现较大规模的单机版矩阵分解运算。另外含有Logistic  regression的model,可以很方便的用来进行ensemble。

#2.LibMF

主页:http://www.csie.ntu.edu.tw/~cjlin/libmf/ 语言:C++
作者Chih-Jen Lin来自大名鼎鼎的台湾国立大学,他们在机器学习领域享有盛名,近年连续多届KDD Cup竞赛上均 获得优异成绩,并曾连续多年获得冠军。台湾大学的风格非常务实,业界常用的LibSVM, Liblinear等都是他们开发的,开源代码的效率和质量都非常高。
LibMF 在矩阵分解的并行化方面作出了很好的贡献,针对SGD(随即梯度下降)优化方法在并行计算中存在的locking problem和memory  discontinuity问题,提出了一种 矩阵分解的高效算法FPSGD(Fast Parallel  SGD),根据计算节点的个数来划分评分矩阵block,并分配计算节点。系统介绍可以见这篇 论文(ACM Recsys 2013的 Best paper Award)。

#3.LibFM

主页:http://www.libfm.org/ 语言:C++
作者是德国Konstanz大学的Steffen Rendle,他用LibFM同时玩转KDD Cup 2012 Track1和Track2两个子竞赛单元,都取得了很好的成绩,说明LibFM是非常管用的利器。
LibFM 是专门用于矩阵分解的利器,尤其是其中实现了MCMC(Markov Chain Monte  Carlo)优化算法,比常见的SGD优化方法精度要高,但运算速度要慢一些。当然LibFM中还 实现了SGD、SGDA(Adaptive  SGD)、ALS(Alternating Least Squares)等算法。

#4.Lenskit

主页:http://lenskit.grouplens.org/ 语言Java

这个Java开发的开源推荐系统,来自美国的明尼苏达大学的GroupLens团队,也是推荐领域知名的测试数据集Movielens的作者。
该源码托管在GitHub上,https://github.com/grouplens/lenskit。 主要包含lenskit-api,lenskit-core,  lenskit-knn,lenskit-svd,lenskit-slopone,lenskit-parent,lenskit-data- structures,lenskit-eval,lenskit-test等模块,主要实现了k-NN,SVD,Slope-One等  典型的推荐系统算法。

#5.GraphLab

主页:GraphLab - Collaborative Filtering 语言:C++
Graphlab 是基于C++开发的一个高性能分布式graph处理挖掘系统,特点是对迭代的并行计算处理能力强(这方面是hadoop的弱项),由于功能独 到,GraphLab在业界名声很响。 用GraphLab来进行大数据量的random  walk或graph-based的推荐算法非常有效。Graphlab虽然名气比较响亮(CMU开发),但是对一般数据量的应用来说可能还用不上。
GraphLab 主要实现了ALS,CCD++,SGD,Bias-SGD,SVD++,Weighted-ALS,Sparse-ALS,Non-negative  Matrix Factorization,Restarted Lanczos Algorithm等算法。

#6.Mahout

主页:http://mahout.apache.org/ 语言:Java
Mahout  是 Apache Software Foundation (ASF)  开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费 使用。Mahout项目是由  Apache Lucene社区中对机器学习感兴趣的一些成员发起的,他们希望建立一个可靠、文档翔实、可伸缩的项目,在其中实现一些常见的用于  聚类和分类的机器学习算法。该社区最初基于 Ngetal. 的文章 “Map-Reduce for Machine Learning on  Multicore”,但此后在发展中又并入了更多广泛的机器学习 方法,包括Collaborative  Filtering(CF),Dimensionality Reduction,Topic Models等。此外,通过使用 Apache  Hadoop 库,Mahout 可以有效地扩展到云中。
在Mahout的Recommendation类算法中,主要有User-Based CF,Item-Based CF,ALS,ALS on Implicit Feedback,Weighted MF,SVD++,Parallel SGD等。

#7.Myrrix

主页:http://myrrix.com/ 语言:Java
Myrrix 最初是Mahout的作者之一Sean  Owen基于Mahout开发的一个试验性质的推荐系统。目前Myrrix已经是一个完整的、实时的、可扩展的集群和推荐系统,主要  架构分为两部分:服务层:在线服务,响应请求、数据读入、提供实时推荐;计算层:用于分布式离线计算,在后台使用分布式机器学习算法为服务层更新机器学 习   模型。Myrrix使用这两个层构建了一个完整的推荐系统,服务层是一个HTTP服务器,能够接收更新,并在毫秒级别内计算出更新结果。服务层可以单独使 用,无需 计算层,它会在本地运行机器学习算法。计算层也可以单独使用,其本质是一系列的Hadoop jobs。目前Myrrix以被  Cloudera 并入Oryx项目。

#8.EasyRec

主页:http://easyrec.org/ 语言:Java
EasyRec 是一个易集成、易扩展、功能强大且具有可视化管理的推荐系统,更像一个完整的推荐产品,包括了数据录入模块、管理模块、推荐挖掘、离线分析等。  EasyRec可以同时给多个不同的网站提供推荐服务,通过tenant来区分不同的网站。架设EasyRec服务器,为网站申请tenant,通过 tenant就可以很方便的集成到  网站中。通过各种不同的数据收集(view,buy.rating)API收集到网站的用户行为,EasyRec通过离线分析,就可以产生推荐信息,您 的 网站就可以通过 Recommendations和Community Rankings来进行推荐业务的实现。

#9.Waffles

主页:http://waffles.sourceforge.net/ 语言:C++
Waffles 英文原意是蜂蜜甜饼,在这里却指代一个非常强大的机器学习的开源工具包。Waffles里包含的算法特别多,涉及机器学习的方方面面,推荐系统位于  其中的Waffles_recommend  tool,大概只占整个Waffles的1/10的内容,其它还有分类、聚类、采样、降维、数据可视化、音频处理等许许多多工具包,估计  能与之媲美的也就数Weka了。

#10.RapidMiner

主页:http://rapidminer.com/ 语言:Java
RapidMiner(前 身是Yale)是一个比较成熟的数据挖掘解决方案,包括常见的机器学习、NLP、推荐、预测等方法(推荐只占其中很小一部分),而且带有GUI的  数据分析环境,数据ETL、预处理、可视化、评估、部署等整套系统都有。另外RapidMiner提供commercial  license,提供R语言接口,感觉在向着一个商用的 数据挖掘公司的方向在前进。
======================================分割线======================================

开 源的推荐系统大大小小的还有很多,以上只是介绍了一些在学术界和工业界比较流行的TOP  10,而且基本上都是用C++/Java实现的,在参考资料[1]、[2]中还提  到的有Crab(Python)、CofiRank(C++)、MyMediaLite(.NET/C#)、PREA(Java)、Python- recsys(Python)、Recommendable(Ruby)、Recommenderlab(R)、  Oryx(Java)、recommendify(Ruby)、RecDB(SQL)等等,当然GitHub上还有更多。。。即有适合单机运行的,也有 适 合集群的。虽然使用的编程语言不同,但实现 的算法都大同小异,主要是SVD、SGD、ALS、MF、CF及其改进算法等。

参考资料

[1]推荐系统开源软件列表汇总和点评
[2]开源中国社区 - 搜索:推荐系统

Original Link: http://ibillxia.github.io/blog/2014/03/10/top-10-open-source-recommendation-systems/
Attribution - NON-Commercial - ShareAlike - Copyright © Bill Xia

原文出处:@Cheedoong

 

 

http://my.oschina.net/Yamazaki/blog/228671

分享到:
评论

相关推荐

    推荐系统竞赛TOP开源解决方案汇总。.zip

    大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关...

    java开源包10

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    全开源 PHP在线客服系统IM 即时通讯聊天源码微信公众号小程序 H5APP 网页端在线客服 源码下载

    安装说明: 环境:ap / ng php7.2 取消防跨站,根目录public,伪静态thinkPHP 安装:/install.php 禁用PHP函数 开启推送: cd /www/wwwroot/域名/cgwl_pusher php start.php start -d

    yonghuxingqujianmo:用户兴趣建模大赛top10开源代码-源码开源

    用户兴趣建模大赛top10开源代码 下面分别列出了这三部分对应的代码文件,依次每个代码文件的功能,输入,输出进行了详细说明。 1.预处理 merge_smallfiles.py 功能:将视觉特征的小文件合并;输入:视觉特征,存放于...

    java开源包6

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    java开源包9

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    IM即时通讯聊天系统源码UNIAPP开源费附教程

    IM即时通讯聊天系统源码UNIAPP开源项目 开放28018 8383 1236端口 演示ys.bzoss.top 安装mongodb 修改端口为28018 删除全部禁用函数 命令安装: mongodb安装 cd /www/server cd mongodb cd bin ./configure make &...

    java开源包8

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    ASPCMS开源企业网站管理系统 v2.6.2

    ASPCMS是由上谷网络开发的全新内核的开源企业建站系统,能够胜任企业多种建站需求,并且支持模版自定义、支持扩展插件等等,能够在短时间内完成企业建站。 本版为直接使用版 , 下载后上传即可使用 , 详细请查看...

    Data competition Top Solution 数据竞赛top解决方案开源整理.zip

    它的作用是提供一种系统性的方法,以有效地应对挑战、优化流程或实现目标。以下是方案的主要作用: 问题解决: 方案的核心目标是解决问题。通过系统性的规划和执行,方案能够分析问题的根本原因,提供可行的解决...

    TIPTOP-生產管理系統SOP手冊-1070530.xlsx

    TIPTOP-生產管理系統SOP手冊

    交互式的消息系统RapidPro.zip

    RapidPro 是一个开源的平台允许任何人用来构建交互式的消息系统,使用非常简单的可视化界面进行管理操作。 特性: Contact and Message management Visual interface to build messaging “flows” Ability to ...

    迅睿CMS免费开源系统 v4.3.3

    迅睿CMS框架特点一、程序架构迅睿CMS框架是采用PHP7全新语法开发的web内容管理系统开发框架,拥有迅睿CMS强大的内容管理功能和灵活扩展的特性,堪称 PHP 万能建站框架。强大而灵活的内容模块和插件机制,开发者可以...

    JAVA上百实例源码以及开源项目

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往...

    淘宝客开源程序(淘货网)源码

    淘宝客开源程序(淘货网)源码 淘货网--最新TopAPI淘宝客网站 淘打折淘客程序、免维护、伪静态、带缓存本程序采用asp.net 2.0进行 开发,全自动应用最新淘客api,自动采集信息,无需手工更新,全站基本免维护,坐等...

    客户备案管理系统源码

    源码简介客户备案管理 查看客户备案资料 编辑客户备案资料 客户黑名单 客户黑名单用户 客户资料 查看客户资料 编辑客户资料 地区设置 新增和查询地区 管理员的权限管理: 系统日志 系统日志查询 用户权限...

    视频教程PHP进销存源码ERP多仓库管理系统带小程序 app

    该系统为PHP语言开发 开源无限制优化版,购货,销货,仓库管理,商品管理,供应商管理,职员管理等非常多的功能。该ERP部署安装非常简单,只需要空间支持PHP上传到根目录即可简单安装即可。运行速度和数据处理效率都...

    开源IoTOS系列体系精简版.mp4 物联网卡运营综合平台 多接口能力集成,极致同步算法、千万数据承载量、国际化方案 多端系统

    基于 SpringBoot、Vue、Mybatis、RabbitMq、Mysql、Redis 的开源 IoTCard(物联卡管理) 系统,是企业私域管理与运营的综合解决方案。 1. 后台:https://gitee.com/chinaiot/iotos 2. 移动端App:...

    CMS新闻系统源码.7z

    10、支持新闻置顶、图片幻灯设置、TOP推荐阅读 11、支持一键分享(需要将分享代码添加一下) 12、支持分享文章到微信朋友圈 (扫码分享) 更多功能,正在研发中 评论系统 强大的新闻系统的评论功能,包含内置评论...

Global site tag (gtag.js) - Google Analytics