⼗⼤开源推荐系统简介[转⾃oschina]
最近这两年推荐系统特别⽕,本⽂搜集整理了⼀些⽐较好的开源推荐系统,即有轻量级的适⽤于做研究的SVDFeature、LibMF、LibFM等,也有重 量级的适⽤于⼯业系统的 Mahout、Oryx、EasyRecd等。PS:这⾥的top 10仅代表oschina观点。
1. SVDFeature
上海交通⼤学 Apex实验室 【C++】
项⽬简介:⼀个feature-based协同过滤和排序⼯具,由上海交⼤Apex实验室开发,代码质量较⾼。在KDD Cup 2012中获得第⼀
名,KDD Cup 2011中获得第三名,相关论⽂ 发表在2012的JMLR中,这⾜以说明它的⾼⼤上。SVDFeature 包含⼀个很灵活的Matrix Factorization推荐框架,能⽅便的实现SVD、SVD++等⽅法, 是单
模型推荐算法中精度最⾼的⼀种。SVDFeature代码精炼,可以⽤ 相对较少的内存实现较⼤规模的单机版矩阵分解运算。另外含有Logistic regression的model,可以很⽅便的⽤来进⾏ensemble。
2. LibMF
台湾国⽴⼤学 【C++】
项⽬内容:作者来⾃⼤名⿍⿍的台湾国⽴⼤学,他们在机器学习领域享有盛名,近年连续多届KDD Cup竞赛上均 获得优异成绩,并曾连续多年获得冠军。台湾⼤学的风格⾮常务实,业界常⽤的LibSVM, Liblinear等都是他们开发的,开源代码的效率和质量都⾮常⾼。LibMF 在矩阵分解的并⾏化⽅⾯作出了很好的贡献,针对SGD(随即梯度下降)优化⽅法在并⾏计算中存在的locking problem和memory
discontinuity问题,提出了⼀种 矩阵分解的⾼效算法FPSGD(Fast Parallel SGD),根据计算节点的个数来划分评分矩阵block,并分配计算节点。系统介绍可以见这篇 (ACM Recsys 2013的 Best paper Award)。
开源项目3. Libfm
德国Konstanz⼤学 【C++】
项⽬内容: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
美国明尼苏达⼤学 GroupLens团队【Java】
5. GraphLab
美国卡耐基·梅隆⼤学【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
Apache Software Foundation 【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
Mahout变种 【Java】
项⽬内容:Myrrix 最初是Mahout的作者之⼀Sean Owen基于Mahout开发的⼀个试验性质的推荐系统。⽬前Myrrix已经是⼀个完整的、实时的、可扩展的集和推荐系统,主要 架构分为两部分:服务层:在线服务,响应请求、数据读⼊、提供实时推荐;计算层:⽤于分布式离线计算,在后台使⽤分布式机器学习算法为服务层更新机器学习模型。Myrrix使⽤这两个层构建了⼀个完整的推荐系统,服务层是⼀个HTTP服务器,能够接收更新,并在毫秒级别内计算出更新结果。服务层可以单独使⽤,⽆需计算层,它会在本地运⾏机器学习算法。计算层也可以单独使⽤,其本质是⼀系列的Hadoop jobs。⽬前Myrrix以被 Cloudera 并⼊Oryx项⽬。
8. EasyREC
Austrian Federal Ministry of Science and Research 【Java】
项⽬内容:EasyRec 是⼀个易集成、易扩展、功能强⼤且具有可视化管理的推荐系统,更像⼀个完整的推荐产品,包括了数据录⼊模块、管理模块、推荐挖掘、离线分析等。 EasyRec可以同时给多个不同的⽹站提供推荐服务,通过tenant来区分不同的⽹站。架设EasyRec服务器,为⽹站申请tenant,通过 tenant就可以很⽅便的集成到 ⽹站中。通过各种不同的数据收集⽹站的⽤户⾏为,EasyRec通过离线分析,就可以产⽣推荐信息,⽹站就可以通过 Recommendations和Community Rankings来进⾏推荐业务的实现。
9. Waffles
【C++】
项⽬内容:Waffles 英⽂原意是蜂蜜甜饼,在这⾥却指代⼀个⾮常强⼤的机器学习的开源⼯具包。Waffle
s⾥包含的算法特别多,涉及机器学习的⽅⽅⾯⾯,推荐系统位于其中的Waffles_recommend tool,⼤概只占整个Waffles的1/10的内容,其它还有分类、聚类、采样、降维、数据可视化、⾳频处理等许许多多⼯具包,估计 能与之媲美的也就数Weka了。
10. RapidMiner
【Java】
项⽬内容:RapidMiner(前⾝是Yale)是⼀个⽐较成熟的数据挖掘解决⽅案,包括常见的机器学习、NLP、推荐、预测等⽅法(推荐只占其中很⼩⼀部分),⽽且带有GUI的数据分析环境,数据ETL、预处理、可视化、评估、部署等整套系统都有。另外RapidMiner提供commercial license,提供R语⾔接⼝,感觉在向着⼀个商⽤的 数据挖掘公司的⽅向在前进。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论