开源的推荐系统

2019/11/05 14:09
阅读数 396

<div id="cnblogs_post_body" class="blogpost-body "> <div>我收集和整理的目前互联网上所能找到的知名开源推荐系统(open source project for recommendation system),并附上了个人的一些简单点评(未必全面准确),</div> <div>这方面的中文资料很少见,希望对国内的朋友了解掌握推荐系统有帮助</div> <div>&nbsp;</div> <div>陈运文</div> <div>&nbsp;</div> <div>&nbsp;<strong>SVDFeature</strong></div> <div>由上海交大的同学开发的,C++语言,代码质量很高 。去年我们参加KDD竞赛时用过,非常好用,而且出自咱们国人之手,所以置顶推荐!</div> <div> <div>项目地址:</div> <div><a href="http://svdfeature.apexlab.org/wiki/Main_Page" target="_blank">http://svdfeature.apexlab.org/wiki/Main_Page</a></div> </div> <div>&nbsp;</div> <div>SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用相对较少的内存实现较大规模的单机版矩阵分解运算。</div> <div>&nbsp;</div> <div>另外含有Logistic regression的model,可以很方便的用来进行ensemble运算</div> <div>&nbsp;</div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106175839156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105140940933-1025153689.png" alt="" style="cursor: pointer;"></a></div> <div>&nbsp;</div> <div>&nbsp;</div> <div>&nbsp;</div> <div> <div>Crab</div> <div>项目地址:</div> <div><a href="http://geektell.com/story/crab-recommender-systems-in-python/" target="_blank">http://geektell.com/story/crab-recommender-systems-in-python/</a></div> <div>&nbsp;</div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106175951671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105140959641-520556246.png" alt="" style="cursor: pointer;"></a></div> <div>&nbsp;</div> <div>系统的Tutorial可以看这里:</div> <div><a href="http://muricoca.github.io/crab/" target="_blank">http://muricoca.github.io/crab/</a></div> <div>&nbsp;</div> <div>Crab是基于Python开发的开源推荐软件,其中实现有item和user的协同过滤。据说更多算法还在开发中,</div> <div>Crab的python代码看上去很清晰明了,适合一读</div> </div> <div>&nbsp;</div> <div>CofiRank</div> <div>C++开发的 Collaborative Filtering算法的开源推荐系统,但似乎2009年后作者就没有更新了,</div> <div>CofiRank依赖boost库,联编会比较麻烦。不是特别推荐</div> <div>项目地址:</div> <div><a href="http://www.cofirank.org/" target="_blank">http://www.cofirank.org/</a></div> <div>&nbsp;</div> <div>&nbsp;</div> <div>&nbsp;</div> <div>EasyRec</div> <div>Java开发的推荐系统,感觉更像一个完整的推荐产品,包括了数据录入模块、管理模块、推荐挖掘、离线分析等,整个系统比较完备。</div> <div>项目地址:</div> <div><a href="http://easyrec.org/" target="_blank">http://easyrec.org/</a></div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106180322796?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141013707-1064296715.png" alt=""></a></div> <div>&nbsp;</div> <div><img src="file:///C:/Documents%20and%20Settings/chenyunwen/Application%20Data/Foxmail/FoxmailTemp(149)/recommendation_e(11-06-17-56-10).gif" alt=""></div> <div>&nbsp;</div> <div>&nbsp;</div> <div>&nbsp;<strong>GraphLab</strong></div> <div>项目地址:</div> <div><a href="http://graphlab.org/" target="_blank">http://graphlab.org/</a></div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106180400062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141036903-1838361925.png" alt="" style="cursor: pointer;"></a></div> <div>Graphlab是基于C++开发的一个高性能分布式graph处理挖掘系统,特点是对迭代的并行计算处理能力强(这方面是hadoop的弱项),</div> <div>由于功能独到,GraphLab在业界名声很响</div> <div>用GraphLab来进行大数据量的random walk或graph-based的推荐算法非常有效。</div> <div>Graphlab虽然名气比较响亮(CMU开发),但是对一般数据量的应用来说可能还用不上</div> <div>&nbsp;</div> <div><img src="file:///C:/Documents%20and%20Settings/chenyunwen/Application%20Data/Foxmail/FoxmailTemp(149)/GraphLab%E6%BA%90%E7%A0%81%E7%BB%93%E6%9E%84(11-06-17-56-10).png" alt=""></div> <div>&nbsp;</div> <div>Lenskit</div> <div><a href="http://lenskit.grouplens.org/" target="_blank">http://lenskit.grouplens.org/</a></div> <div>这个Java开发的开源推荐系统,来自美国的明尼苏达大学,也是推荐领域知名的测试数据集Movielens的作者,</div> <div>他们的推荐系统团队,在学术圈内的影响力很大,很多新的学术思想会放到这里</div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106180937390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141105458-1330918189.png" alt=""></a></div> <div>&nbsp;</div> <div>&nbsp;</div> <div>Mahout</div> <div>网址</div> <div><a href="http://mahout.apache.org/" target="_blank">http://mahout.apache.org/</a></div> <div><img src="file:///C:/Documents%20and%20Settings/chenyunwen/Application%20Data/Foxmail/FoxmailTemp(149)/mahout-logo-200(11-06-17-56-10).png" alt=""></div> <div>Mahout知名度很高,是Apache基金资助的重要项目,在国内流传很广,并已经有一些中文相关书籍了。注意Mahout是一个分布式机器学习算法的集合,协同过滤只是其中的一部分。除了被称为Taste的分布式协同过滤的实现(Hadoop-based,另有pure Java版本),Mahout里还有其他常见的机器学习算法的分布式实现方案。</div> <div>&nbsp;<a class="lightbox" href="http://img.blog.csdn.net/20131106180504218?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141124615-1956557369.png" alt="" style="cursor: pointer;"></a></div> <div>另外Mahout的作者之一Sean Owen基于Mahout开发了一个试验性质的推荐系统,称为Myrrix, 可以看这里:</div> <p><a href="http://myrrix.com/quick-start/" rel="nofollow" target="_blank">http://myrrix.com/quick-start/</a>&nbsp;</p> <div>&nbsp;</div> <div>&nbsp;</div> <div><strong>MyMediaLite</strong></div> <div><a href="http://mymedialite.net/index.html" target="_blank">http://mymedialite.net/index.html</a></div> <div>基于.NET框架的C#开发(也有Java版本),作者基本来自德国、英国等欧洲的一些高校。</div> <div>除了提供了常见场景的推荐算法,MyMediaLite也有Social Matrix Factorization这样独特的功能</div> <div>尽管是.Net框架,但也提供了Python、Ruby等脚本语言的调用API</div> <div>MyMediaLite的作者之一Lars Schmidt在2012年KDD会议上专门介绍过他们系统的一些情况,可惜由于.Net开发框架日渐式微,MyMediaLite对Windows NT Server的系统吸引力大些,LAMP网站用得很少</div> <div>&nbsp;</div> <div>&nbsp;</div> <div>LibFM</div> <div>项目网址:</div> <div><a href="http://www.libfm.org/" target="_blank">http://www.libfm.org/</a></div> <div>作者是德国Konstanz University的Steffen Rendle,去年KDD Cup竞赛上我们的老对手,他用LibFM同时玩转Track1和Track2两个子竞赛单元,都取得了很好的成绩,说明LibFM是非常管用的利器(虽然在Track1上被我们打败了,hiahia)</div> <div>顾名思义,LibFM是专门用于矩阵分解的利器,尤其是其中实现了MCMC(Markov Chain Monte Carlo)优化算法,比常见的SGD(随即梯度下降)优化方法精度要高(当然也会慢一些)</div> <div>&nbsp;</div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106180706890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141147172-1349500112.png" alt=""></a></div> <div>顺便八卦下,去年KDD会议上和Steffen当面聊过,他很腼腆而且喜欢偷笑,呵呵挺可爱。</div> <div>&nbsp;</div> <div><strong>LibMF</strong></div> <div>项目地址:</div> <div>http://www.csie.ntu.edu.tw/~cjlin/libmf/</div> <div>注意LibMF和上面的LibFM是两个不同的开源项目。这个LibMF的作者是大名鼎鼎的台湾国立大学,他们在机器学习领域享有盛名,近年连续多届KDD Cup竞赛上均获得优异成绩,并曾连续多年获得冠军。台湾大学的风格非常务实,业界常用的LibSVM, Liblinear等都是他们开发的,开源代码的效率和质量都非常高</div> <div>&nbsp;</div> <div>LibMF在矩阵分解的并行化方面作出了很好的贡献,针对SDG优化方法在并行计算中存在的locking problem和memory discontinuity问题,提出了一种矩阵分解的高效算法,根据计算节点的个数来划分评分矩阵block,并分配计算节点。系统介绍可以见这篇论文(Recsys 2013的 Best paper Award)</div> <div>Y. Zhuang, W.-S. Chin, Y.-C. Juan, and C.-J. Lin. A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems. Proceedings of ACM Recommender Systems 2013.</div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131107153958546?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141202853-812543437.png" alt="" style="cursor: pointer;"></a></div> <div>&nbsp;</div> <div>PREA</div> <div>全名是 Personalized Recommendation Algorithms Toolkit, 开发语言为Java。也是一个轻量级的开源项目</div> <div>项目网址:</div> <div><a href="http://mloss.org/software/view/420/" target="_blank">http://mloss.org/software/view/420/</a></div> <div>&nbsp;</div> <div>放在Mloss这个大project下。我个人感觉PREA还是比较简陋的,参加开发的三位工程师Joonseok Lee, Mingxuan Sun, Guy Lebanon更新频率很低,提供的资料也少。</div> <div>&nbsp;</div> <div>不过Mloss下倒是能找到其他一些推荐开源项目</div> <div><a href="http://mloss.org/software/tags/collaborative-filtering/" target="_blank">http://mloss.org/software/tags/collaborative-filtering/</a></div> <div>&nbsp;</div> <div>&nbsp;</div> <div>Python-recsys</div> <div>一个非常轻量级的开源推荐系统,python开发,作者似乎只有一位,</div> <div>Python-recsys主要实现了SVD、Neighborhood SVD推荐算法,</div> <div>这个项目麻雀虽小五脏俱全,评估数据(Movielens,Last.fm)、评估框架也都有</div> <div>API也很简单清晰,代码简洁,属于推荐入门的良好教材。</div> <div>不过真正要用到实际系统中,还是得补充很多内容</div> <div>&nbsp;</div> <div>github的地址位于</div> <div><a href="https://github.com/ocelma/python-recsys" target="_blank">https://github.com/ocelma/python-recsys</a></div> <div>&nbsp;</div> <div>项目的介绍见:</div> <div><a href="http://ocelma.net/software/python-recsys/build/html/" target="_blank">http://ocelma.net/software/python-recsys/build/html/</a></div> <div>&nbsp;</div> <div>RapidMiner</div> <div>项目网址为:</div> <div><a href="http://rapidminer.com/" target="_blank">http://rapidminer.com/</a></div> <div>Java语言开发,RapidMiner(前身是Yale)已经是一个比较成熟的数据挖掘解决方案了,包括常见的机器学习、NLP、推荐、预测等方法(推荐只占其中很小一部分),而且带有GUI的数据分析环境,数据ETL、预处理、可视化、评估、部署等整套系统都有。</div> <div>&nbsp;<a class="lightbox" href="http://img.blog.csdn.net/20131106181423328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141220405-1942132470.png" <div>另外RapidMiner提供commercial license,提供R语言接口,感觉在向着一个商用的数据挖掘公司的方向在前进。</div> <div>&nbsp;</div> <div>&nbsp;</div> <div>&nbsp;</div> <div>Recommendable</div> <div>基于Ruby语言开发,实现了一些评分预测的推荐算法,但是整体感觉比较单薄,</div> <div>github上地址如下:</div> <div><a href="https://github.com/davidcelis/recommendable/" target="_blank">https://github.com/davidcelis/recommendable/</a></div> <div>&nbsp;</div> <div>&nbsp;</div> <div>Recommenderlab</div> <div>基于R语言开发的开源推荐程序,对经常使用R语言的工程师或者BI数据分析师来说,recommenderlab的出现绝对算得上是福音了</div> <div>项目地址:</div> <div><a href="http://cran.r-project.org/web/packages/recommenderlab/index.html" target="_blank">http://cran.r-project.org/web/packages/recommenderlab/index.html</a></div> <div>&nbsp;</div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106180843468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141248656-378085165.png" alt=""></a></div> <div>&nbsp;</div> <div>基于Recommenderlab来开发推荐系统,代码会非常精简,因为推荐系统所依赖的user-item rating matrix对擅长处理向量运算的R语言来说再方便不过了,</div> <div>但是在实际推荐系统中,需要考虑的问题和逻辑都比较复杂,用Recommenderlab不是很灵活。另外受限于R语言对内存的限制,Recommenderlab不太适用于过大规模的推荐应用</div> <div>&nbsp;</div> <div>&nbsp;</div> <div>Waffles</div> <div>SF地址:</div> <div><a href="http://waffles.sourceforge.net/" target="_blank">http://waffles.sourceforge.net/</a></div> <div>Waffles英文原意是蜂蜜甜饼(见logo),在这里却指代一个非常强大的机器学习的开源工具包,基于C++语言开发。</div> <div>Waffles里包含的算法特别多,涉及机器学习的方方面面,推荐系统位于其中的Waffles_recommend tool,大概只占整个Waffles的1/10的内容(其它还有分类、聚类、采样、降维、数据可视化、音频处理等许许多多工具包,估计能与之媲美的也就数Weka了)</div> <div>&nbsp;</div> <div><a class="lightbox" href="http://img.blog.csdn.net/20131106181811953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3NlcmNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"><img src="https://img2018.cnblogs.com/blog/1112483/201911/1112483-20191105141302894-1876802272.png" alt="" style="cursor: pointer;"></a></div> <br><p style="font-weight: bold;font-size: 16px;text-align: center;color: #ddd;text-indent: 0;">__EOF__</p><p style="font-family: Microsoft YaHei,微软雅黑,MicrosoftJhengHei,华文细黑,STHeiti,MingLiu;font-size: 14px;background: hsl(220, 23%, 98%)!important;padding: 17px;border: 1px solid hsl(220, 16%, 94%)!important;border-radius: 3px;color: #414857;text-indent: 0;"><span style="font-weight: bold; white-space:nowrap;">作  者</span>:<strong><span style="font-size: 12px; color: red;"><a href="https://www.cnblogs.com/dantefung" target="_blank">DANTE FUNG</a></span></strong><br><span style="font-weight: bold; white-space:nowrap;">出  处</span>:<a href="https://www.cnblogs.com/dantefung/p/4822049.html" target="_blank">https://www.cnblogs.com/dantefung/p/4822049.html</a><br><span style="font-weight: bold; white-space:nowrap;">关于博主</span>:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者<a href="http://msg.cnblogs.com/msg/send/dantefung" target="_blank">直接私信</a>我。<br><span style="font-weight: bold; white-space:nowrap;">版权声明</span>:署名 - 非商业性使用 - 禁止演绎,<a href="https://creativecommons.org/licenses/by-nc-nd/4.0/" alt="协议普通文本" title="协议普通文本" target="_blank">协议普通文本</a> | <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" alt="协议法律文本" title="协议法律文本" target="_blank">协议法律文本</a>。<br><span style="font-weight: bold; white-space:nowrap;">声援博主</span>:如果您觉得文章对您有帮助,可以点击文章右下角<strong><span style="color: #ff0000; font-size: 12pt;">【<a id="post-up" onclick="votePost(4822049,'Digg')" href="javascript:void(0);">推荐</a>】</span></strong>一下。您的鼓励是博主的最大动力!<br></p></div>

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部