您的位置:首页 > 其它

为什么需要一个推荐引擎平台

2014-03-05 16:16 615 查看
无论是公司或者个人的项目,现在普遍都会用到推荐,对于简单的推荐,找个合适的算法copy过来,再随便找个地方存储结果就ok了。对于比较大型的推荐系统,则需要考虑架构了,包括数据的分片存储、并行计算等。这里还不包括选择适合自己的计算模型,将数据组织成能计算的结构等复杂的问题,要轻松快速的使用上推荐,还是要经过一番折腾,最好还能建立一套基础架构,下次重复使用。业界是有几款开源的推荐引擎框架,简单看了一下,个人把他分为两类,“简单的”与“大型的”。“简单的”有RecDB、EasyRec等等,说它“简单”,是因为部署和使用确实够简单,RecDB是基于PostgreSQL开发的,用SQL的语法来做推荐。EasyRec是用Java+MySQL开发的,下载个war包就能部署,但MySQL的初始化好像有点复杂。这两个框架在数据量小的时候确实非常方便,但数据量慢慢增加的时候怎么办呢?我并不知道他们支持不支持数据库的分片,就算持支,这两个数据库的分片都不是简单的事,淘宝等都有一个庞大的技术团队来维护,对一个公司尚有能力解决,对个人呢?再来看看“大型的”吧,很自然就会想到Mahout,没错,做推荐的,无论使用不使用,都会知道它,但......,没错,够复杂,要以它为核心搭建一个推荐引擎,你就慢慢折腾吧。最近刚推出一个叫Oryx的推荐框架,简单看了下,它就是基于Mahout搭建起来的,前身是Myrrix,现在被Cloudera收购了,使用它你需要自己先搭建Hadoop环境,Hadoop并不难搭,但难在维护。Oryx分Serving
Layer和Computation Layer两层,下载下来就两个jar包,那......怎么应对大数据和高并发呢,是简单的横向扩展就行了吗?我是没深入去看。

好吧,我想说,上面这些都不是我想要的,我不想去对一个框架做二次开发。我要一个SaaS,一个服务平台,一个有现成接口供我调用的地方,一个我不用关心环境怎么搭、数据怎么组织,并且能支持高并发和快速响应的地方,一个让我能专心做我业务的地方。好多个我想要,是我太多要求了吗?不,这是最基本的需求。

基于以上种种,我决定搭建这么一个平台,实现以上我想要的,我把它命名为“EasyRequest”,用意“简单的请求”,我会在机器学习方面对它不断扩展,目标就一个,让机器学习能多简单就多简单。

EasyRequest是面对开发者的底层API,它不是一个插件,不会像其他推荐服务商一样,在你的页面嵌入一段Javascript代码,自动抓取,自动显示并推荐​,这种推荐的方式是被动的,不受你的控制。EasyRequest要把主动权归还给开发者,抓取什么数据,提供什么推荐,何时推荐,完全是由开发者来控制。正因为这样​,开发者可以在任何地方使用EasyRequest,不仅仅是网页,还有手机APP、游戏、桌面程序等​。而且EasyRequest并不会深入你原有的业务体系,它只是一个第三方服务平台,只是在你原有的基础上提供一个额外的推荐功能。​

EasyRequest实现了一切的基础设施,以API的形式对外开放,开发者无论会不会推荐,面对简单的API,理解都不会困难,最基本的操作就两个,对EasyRequest提交数据,等待EasyRequest做完离线计算,获取推荐结果。​

EasyRequest已经上线了第一个版本,实现了最简单的推荐,这个版本甚至没有提供算法的选择,全部使用默认的算法。我的目的很简单,就是“简单”!我要让不会推荐原理的人也能简单的用上推荐系统,因为单单算法这部分,已经是一个很庞大的体系,我不想初学者因为庞大而复杂的体系,而对机器学习产生畏惧。随着他们对推荐的深入,以及考虑到要对一些已经深有造诣的人的支持,EasyRequest会逐步实现一些可定制的功能,让它能完成一些更复杂的计算。但EasyRequest的宗旨不会变,就是,一切以“简单”为主。

官网: easyrequest.io
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息