机器学习研究与开发平台的选择

作者: 刘建平Pinard 2017-04-11 14:45:22

目前机器学习可以说是百花齐放阶段,不过如果要学习或者研究机器学习,进而用到生产环境,对平台,开发语言,机器学习库的选择就要费一番脑筋了。这里就我自己的机器学习经验做一个建议,仅供参考。

机器学习研究与开发平台的选择

首先,对于平台选择的***个问题是,你是要用于生产环境,也就是具体的产品中,还是仅仅是做研究学习用?

1. 生产环境中机器学习平台的搭建

如果平台是要用于生产环境的话,接着有一个问题,就是对产品需要分析的数据量的估计,如果数据量很大,那么需要选择一个大数据平台。否则的话只需要一个单机版的平台就可以了。

1.1 生产环境中机器学习大数据平台的搭建

生产环境里面大数据平台,目前最主流的就是Spark平台,加上辅助的分布式数据处理容器,比如YARN,或者Mesos.如果需要实时的收集在线数据,那么就加上Kafka。简言之,一个通用的大数据处理平台就是集成Spark + YARN(Mesos) + Kafka. 我现在做的产品项目都是基于Spark + YARN+ Kafka的,目前来看,这个平台选择基本上是主流的方向。

当然,有人会说,这么多开源软件,一起集成起来好麻烦,大坑肯定不少,有没有一个通用的平台,可以包括类似Spark + YARN+ Kafka的大数据平台功能呢?目前据我所知,做的比较好的有CDAP(https://cdap.io)。它对Spark, YARN, Kafka还有一些主流的开源数据处理软件进行了集成,开发者只需要在它上面封装的一层API上做二次开发就可以了。这应该是一个不错的点子,不过目前还没有看到商用的成功案例,所以我们在构架选型的时候就没有考虑CDAP。

因此,围绕Spark + YARN+ Kafka的大数据平台还是***。由于Spark MLlib的机器学习算法并不丰富好用,因此如果你的产品中需要一些MLlib中没有的算法,就需要自己去找开源实现了。

1.2 生产环境中机器学习单机数据平台的搭建

生产环境里面如果数据里不大,大数据平台就显得有点over design了,此时我们有更多的选择。***,仍然是Spark平台,不过我们不需要分布式的容器YARN和分布式数据分发的路由Kafka了。为什么***还是Spark呢?因为我们要考虑扩展,现在数据量不大,不代表以后数据量不大。这也是我参与的一些小型数据分析项目也是选择Spark的原因。当然我觉得还有一些原因是Spark同时支持了Python, Java, Scala和R。这降低了很多程序员的参与门槛。我参与的Spark项目中,开发语言主要是Java和Scala。Python没有选择是因为一些速度的原因和系统其它部分都是用Java写的。

第二个选择是以scikit-learn为主的一系列python工具,包括 numpy, scipy, pandas, MatplotLib等等。特点是类库丰富,尤其是scikit-learn的机器学习库,可以说是十八般武器,样样都有。另外就是由于可以交互式的编写程序,方便快速开发原型。我参与的有两个项目在可行性分析阶段,都是用scikit-learn来做原型和给客户做demo。

因此,生产环境中机器学习单机数据平台, Spark是做产品***,而scikit-learn家族适合做快速的原型开发验证。

2. 研究环境中机器学习平台的搭建

如果只是做研究,那么选择就很多了,主流的有三种。

  • ***种是基于Spark MLlib来学习。好处是学到的东西用到生产环境可以无缝切换,但是坏处也很明显,Spark东西很多,在自己的单机上跑很吃内存,比较慢,而且MLlib的类库并不丰富,很多算法需要自己再去找类库。根据周围同事的反馈,比较吃力,因此基于Spark MLlib来学习机器学习,我个人觉得不是一个好的选择。
  • 第二种是基于scikit-learn为主的一系列python工具来学习,包括上面提到的numpy, scipy, pandas, MatplotLib等等。好处是类库多,API强大,可以让你专注于数据的分析,例子也多,学习起来不难。当然也有缺点,就是这一大堆的python库,要熟练的用起来需要一段时间。 个人比较推荐这种方法,周围同事来说,用scikit-learn学习交流也是主流。
  • 第三种是基于R的平台来做机器学习(不包括Spark R),主要平台是R studio。由于R是一门比较老的语言,因此他的数据处理和机器学习的API比较丰富,尤其是对于之前做数据分析师的人来说更是熟悉不过。但是R是一门相对封闭的语言,社区远远没有Python的活跃,而且对于程序员来说, R的那种语法让人难受。几年前,一般会认为R的机器学习比Python的好,但是现在Python已经将R远远甩在了后面。因此,除非你之前已经很熟悉R语言,否则完全不推荐用R来研究机器学习,BTW,这里没有歧视R的意思。

总之,如果你想研究学习机器学习,并且没有特殊的R背景,scikit-learn是你的***。当然,有人会说,我喜欢自己去一点点的实现机器学习的算法,不喜欢直接调用类库,这样不行吗? 当然,这样肯定是非常不错的,并且对加深各个算法理解很有好处。只是这样比较的花时间,如果你和我一样时间不太多的话,还是直接调用API来研究数据比较直接。

机器学习 学习平台 大数据平台
上一篇:Spark for python developers —Spark与数据的机器学习 下一篇:学习机器学习时需要尽早知道的三件事
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

机器学习变革物流运输和交通出行

云和机器学习的融合催生了自动驾驶技术尤其是人们出行方式的广泛创新,正在改变整个行业的游戏规则。根据普华永道(PWC)的数据,68%的物流运输企业负责人认为,未来5年,提供物流运输服务的核心技术的改变将颠覆整个行业。

AWS大中华区云服务产品管理总经理顾凡 ·  2天前
轻松构建 PyTorch 生成对抗网络(GAN)

生成对抗网络(GAN)是一种生成式机器学习模型,它被广泛应用于广告、游戏、娱乐、媒体、制药等行业,可以用来创造虚构的人物、场景,模拟人脸老化,图像风格变换,以及产生化学分子式等等。

佚名 ·  3天前
新AI让教师能够快速开发智能辅导系统

通过使用一种采用人工智能的新方法,教师可以通过演示解决某个主题中的问题的几种方法来教计算机……

佚名 ·  4天前
终结重复工作!教你30分钟创建自己的深度学习机器

建立一个深度学习环境是一件很重要的事情。本文讲述使用深度学习 CommunityAMI、TMUX和 Tunneling在EC2为Jupyter Notebooks创建一个新的深度学习服务器。

读芯术 ·  4天前
如何用机器学习模型,为十几亿数据预测性别

基于用户画像进行广告投放,是优化投放效果、实现精准营销的基础;而人口属性中的性别、年龄等标签,又是用户画像中的基础信息。那该如何尽量准确的为数据打上这些标签?

TalkingData ·  2020-05-26 18:50:49
教你轻松选择合适的机器学习算法!

机器学习方面没有免费午餐。因此,确定使用哪种算法取决于许多因素:面临的问题类型和预期的输出类型等。本文介绍了为数据集探究合适的机器学习方法时要考虑的几个因素。

布加迪 ·  2020-05-26 18:35:00
画图太丑拿不出手?有人做了套机器学习专用画图模板,还有暗黑模式

论文、博客写好了,里面的图可怎么画?对于很多研究人员和开发者来说,内容的「可视化」是一个大问题。如果从头开始画,配色、空间布局都很伤脑筋,而且画丑了也拿不出手,要是有模板可以套就好了。

张倩、魔王 ·  2020-05-26 14:28:12
机器学习:物联网成功的诀窍?

通过机器学习,物联网可以完美地运行。全球各地的组织正在竞相利用物联网的能力,但是,其中许多组织都被我们讨论过的一个或多个障碍所困扰。不过,不管您遇到什么问题,都可以通过结合了机器学习技术的方法来解决。

iothome ·  2020-05-25 22:39:38
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载