作者:grahamjenson
深度学习与NLP编译
参与:lqfarmer,Addis
推荐系统(或推荐引擎)是非常有用且有趣的软件。原本想比较下不同的推荐系统之间的区别,但却找不到一个合适的列表,所以干脆自己整理了一个,同时,欢迎大家请更正、补充。(文末附带链接版文章下载地址)
软件即服务类推荐系统
SaaS推荐系统在开发过程中遇到很多挑战,比如必须处理多租户(multi-tenancy),存储和处理大量数据以及其他软件相关的问题,如在远程服务器上保护客户敏感数据的安全。
使用SaaS推荐系统的好处是,可以以较低的开销来获取价值,而不需要大量的前期投入,它们通常具有明确的集成方式提供给用户使用,并且在使用它时,可以对其进行开发和改进。
SaaS推荐系统有:
SuggestGrid:改进自Rcmmndr。SuggestGrid是一个通用推荐系统。它基于Apache Spark,但有很多改进。
Peerius:一个封闭的、专注于产品和电子商务的实时电子邮件推荐系统。非常活跃并且看起来很有趣,尽管关于其实际产品以及它如何工作的信息很少。
Strands:同样是一个封闭的、专注于产品和电子商务的推荐系统。它可以通过在网站上添加跟踪脚本(Google Analytics)和推荐小部件来工作。但最吸引人的是,Strands发布的他们的研究案例,例如Wireless Emporium和白皮书,如《The Big promise of recommender system》。虽然这些讨论没有提供的确切解决方案,但他们很好地叙述了他们提出推荐的愿景和目标。
SLI Systems Recommender:一个专注于电子商务,搜索和移动的封闭推荐系统。
Google Cloud Prediction API:Google提供的云计算预测API
Using Hadop Google Cloud:一个使用Google cloud的示例,其中包含推荐系统的benchmarks。
ParallelDots: 工具,用来关联已发布的内容
Amazon Meachine Learning:机器学习平台,用于对数据进行建模并创建预测
Azure ML:机器学习平台,用于对数据进行建模并创建预测
Gravity R&D:由2009年Netflix的一些获奖者创建的公司。主要提供解决方案,为网站用户提供有针对性的定制建议。他们有一些非常大的客户,包括DailyMotion和一个描述他们的架构、算法和出版物(publication)列表的技术页面。
Dressipi Style Advisor:一个与服装相关的推荐系统。它融合了专家领域知识和机器学习,可以找到适合场合或情绪的服装。
Sajari:一个搜索,推荐和匹配(如约会网站)服推荐系统。在他们的网站上,也汇总了一些有用的数据集。
IBM Watson:可通过Watson Developer Cloud获得,Watson Developer Cloud提供REST API(Bluemix上的Watson API)以及使用认知计算解决复杂问题的SDK。
Recombee:提供REST API,多语言SDK和评估结果的图形用户界面。主要功能是实时模型更新,易于使用的查询语言,根据复杂的业务规则和高级功能(如获取多样化或轮流推荐的选项)进行过滤和提升。Recombee提供每月100k免费推荐请求的即时帐户。
Segmentify:推荐引擎,个性化和实时分析工具。
Mr.Dlib:数字图书馆和reference manager等学术机构类的推荐系统。Mr.DLib提供“相关文章”的推荐,是开源的,并公布了大部分数据。
开源的推荐系统
大多数的非SaaS推荐系统都是开源的。这是因为这些推荐系统被简化,更适用于client,因此不容易制作成产品。
开源推荐系统有:
PredictionIO:基于Apache Spark,Apache HBase和Spray技术构建。一个机器学习server,可用于搭建推荐系统。Github地址,看起来非常活跃。
Raccoon Recommendation Engine:是一款基于Node.js的开源协同过滤器,使用Redis作为存储。
HapiGER:一个开源的Node.js协作过滤引擎,可以使用内存,PostgreSQL或rethinkdb。
EasyRec:基于Java和Rest的推荐。已被弃用。
Mahout:Hadoop /线性代数的数据挖掘
Seldon:基于Apache Spark的技术构建的Java预测引擎。提供了一个演示电影推荐应用:在这里。
LensKit:一个基于Java的推荐系统,适用于中小规模。
Oryx v2:用于机器学习和预测的大型架构(由Lorand提出)
RecDB:一个PostgreSQL扩展,用于将推荐算法(如协作过滤)直接添加到数据库中。
Crab:基于热门软件包NumPy,SciPy,matplotlib的python推荐系统。已经被弃用。
Predictor:一个基于Ruby的推荐系统。
Surprise: 用于构建和分析(协作过滤)推荐系统的Python scikit。内置各种算法,重点是评级预测。
LightFM:基于Python实现一系列基于协作和基于内容的,从学习到排名的推荐算法。使用Cython,可以轻松扩展到多核机器上,处理非常大的数据集,包括Lyst和Catalant在内的许多公司,用于实际生产。
Rexy:一个基于一般用户-产品-标签概念和灵活结构的开源推荐系统,该结构已被设计为可与多种多样的数据模式相匹配。Rexy由Python-3.5,以高度优化的Pythonic和全面的方式编写而成,使其对非常灵活。使用Aerospike作为高速,可扩展,可靠的NoSQL数据库的数据库引擎。
QMF:用于隐式反馈矩阵分解模型的快速且可扩展的C++库。
tensorrec:Python语言的TensorFlow推荐算法和框架。
hermes:PySpark中协作过滤和基于内容的算法的推荐框架。已被放弃。
非SaaS产品的推荐系统
非SaaS非开源推荐系统并不常见。主要是 Dato:
Dato:一家提供用于商业机器学习的python包和服务器的公司,其中包括许多用于推荐的预测算法。他们还与Apache Spark集成,并且有很棒的博客文章,比如为什么构建自定义推荐系统很难?它必须是?。他们的客户包括Pandora和StumbleUpon,必须是一个好产品。
学术型的推荐系统
推荐系统在学术界是一个非常活跃的研究领域,尽管很多系统主要在实验室使用,很少用于工业生产。
Duine Framework:已被放弃的基于Java的推荐系统
MyMediaLite:基于C#的内存推荐系统。已被放弃
LibRec:一个基于Java的推荐引擎,带有大量的算法实现。
RankSys:Java编写的推荐系统,非常新颖性和多样。
LIBMF:推荐系统的矩阵分解库
proNet-core:一种通用网络嵌入框架,为推荐系统提供了几种基于分解的模型。
Benchmarking类推荐系统
构建推荐系统的benchmarking是非常困难的,这不仅因为获得好的数据集很难,而且不同的方法和算法具有难以揭示的不同的优缺点。
以下是一些benchmarking工具列表:
TagRec:标签推荐基准框架
RiVaL:推荐系统评估的开源工具包。一些结果发布在这里。
Idomaar:推荐算法测试的参考框架。它是在CrowdRec项目的框架内开发的。
媒体类推荐系统
除了通用推荐系统之外,这里还添加一个应用列表,其中推荐是核心产品,特别是在媒体推荐领域:
Yeah,Nah:基于GER的电影推荐应用
Jinni:电影推荐网站
Gyde:流媒体推荐
TasteKid:电影,书籍,音乐推荐。
Gnoosic:音乐推荐系统。
Pandora:基于喜欢或不喜欢的歌曲推荐系统
Criticker:游戏和电影协作推荐。
movielens.org:电影和书籍推荐系统。
MAL:基于用户协同过滤推荐系统。
书籍
Practical Recommender Systems:由Kim Falk编写(曼宁出版社)。第1章
由Ricci,F等人撰写的Recommender Systems Handbook
带链接版文章下载地址
链接: https://pan.baidu.com/s/1WjGjEy1Jf07GoeeoaV6rYA
密码: m93n
往期精彩内容推荐
精品推荐-2018年Google官方Tensorflow峰会视频教程完整版分享
纯干货18 - 2016-2017深度学习-最新-必读-经典论文
麻省理工学院-2018年最新深度学习算法及其应用入门课程资源分享
AI、神经网络、机器学习、深度学习和大数据的核心知识备忘录分享
DeepLearning_NLP
深度学习与NLP
商务合作请联系微信号:lqfarmerlq