专栏名称: 超级数学建模
全国首家专业数学建模自媒体,提供数模学习的第一手资料。该平台由多名企业资深KDD专家及国际、国家数模竞赛一等奖得主维护,敬请关注!
目录
相关文章推荐
哆嗒数学网  ·  蛇年大吉:新的一年万事如意 ·  2 天前  
超级数学建模  ·  为什么上帝和魔鬼都喜欢数学...... ·  5 天前  
超级数学建模  ·  还是当小三吧,洗洗澡就好.... ·  5 天前  
51好读  ›  专栏  ›  超级数学建模

MATLAB,R语言,Python,Java,到底哪种语言学机器学习最靠谱?

超级数学建模  · 公众号  · 数学  · 2018-01-29 22:27

正文


China+AI已是大势所趋,吸引的不仅是大公司,更有许多人工智能的爱好者。曾经只存在于科幻小说或实验室中遥不可及的人工智能产品也逐渐成为老百姓日常生活的一部分。而支撑人工智能技术迅速发展的核心技术之一就是机器学习。

 

最近几年,人工智能浪潮层层推进,对各大科技公司产生巨大影响。百度推出Apollo无人车计划,阿里建立达摩院,腾讯成立的AI Lab虽布局较晚却也不甘人后。


首先来看看在某招聘网站上,当前公司对一个高薪机器学习人才有怎样的要求。


可以看到,对语言的掌握是其中尤其重要的基础条件。学好语言,就相当于走好了万里长征第一步。那么,在学习机器学习的时候,我们需要会那种(些)酷炫的编程语言呢? 


1.  我需要学习哪些编程语言?


不论你选择哪种语言,只要对这种语言下的机器学习库和工具足够熟悉,语言本身就没有那么重要了。现在对应各种语言的机器学习库层出不穷。根据你在公司中担任的角色和所要完成的任务不同,某些语言和工具可能会比其他的更好用。

 

R

R 是一种为专统计计算而设计的语言。它在大规模的数据挖掘、可视化和报告方面已经取得了巨大的成功。你能够轻松地获取各种的包(通过 CRAN)来使用几乎所有的机器学习算法、统计测试和分析等。R 语言本身有着优美(虽然有些人会觉得晦涩)的语法用来表达数据的关系、变换和并行操作。

KDNuggets 最近组织了一次投票,结果表明 R 是 2015 年用于解决分析、挖掘及其他数据科学任务的最受欢迎的语言。不过,近年来 Python 的人气也在急剧上升。



MATLAB

MATLAB 在学术界很受欢迎,因为它能处理复杂的数学表达式,对代数和微积分有强大的支持,还支持符号运算。同时,从数字信号处理到计算生物学,又或者是其他的科目,它都有对应的工具箱可用。它经常被用于开发新的机器学习算法的原型,有时也会被用于开发最终完整的工具。它的商用许可的确非常昂贵,但也对得起它在研发方面带来的方便。Octave 是一款免费的 MATLAB 替代品。它的语法与 MATLAB 几乎相同,但只提供一部分工具箱,IDE 也略微逊色。

 

Python

虽然 Python 是一种更通用的编程语言和脚本语言,但它在数据科学家和机器学习工程师中的人气也是急剧上升。跟 R 和 MATLAB 不同,它并没有内置数据处理和科学计算专用的语法,但它有像 NumPy、SciPy 和 Pandas 这样的库用更友好的语法提供了同样的功能。

像 scikit-learn、Theano 和 TensorFlow 这样的机器学习库让你能够方便地训练各种机器学习模型,还能用上分布式计算。当然,这些库中最影响性能的部分一般还是用 C/C++ 甚至 Fortan编写的,而 Python 包则是作为它们的接口(这在 R 中也很常见)。

但 Python 最大的优势在于它的生态系统使得你能够很方便地搭建起一个复杂的端到端服务,比如用 Django 或是 Flask 搭建 Web 应用,或是用 PyQt 开发桌面应用,甚至用 ROS 搭建一个自主机器人。

Java

由于它干净一致的实现、面向对象编程的风格以及通过 JVM 获得的平台独立性,Java 是很多软件工程师的首选语言。它以简洁性和灵活性为代价换取了明确性和可靠性,使它在实现重要的企业软件系统时非常受欢迎。对于那些一直使用 Java 的公司,当他们需要开发机器学习产品时,为了保持同样的可靠性和避免写一堆混乱的接口,他们可能更倾向于继续使用 Java。

除了一些可以用来做分析和原型开发的库和工具(比如 Weka)以外,要用 Java 开发大规模分布式的机器学习系统,我们有很多选择,比如 Spark+MLlib、Mahout、H2O 以及 Deeplearning4j。这些库和框架也很方便跟工业级别的数据处理和存储系统比如Hadoop/HDFS 整合在一起。

 

C/C++

在开发像操作系统组件和网络协议这样计算性能和内存使用效率极为重要的底层软件时,C/C++ 是最理想的选择。由于同样的原因,它们在实现机器学习算法的关键部分时也很受欢迎。但是它们没有内建的关于数据处理操作的抽象,内存管理的任务也很繁重,这使得它们对新手来说不太合适,而且在开发完整的端到端系统时也比较笨重。

在开发嵌入式系统(比如智能汽车、智能传感器等),可能必须使用 C/C++。而在其他场景下,用它们进行开发的便利程度可能要视现有的基础设施和具体的应用而定。不过无论如何,我们并不缺少 C/C++ 的机器学习库,比如 LibSVM、Shark 和 mlpack。

 

企业级解决方案

在这些语言和库以外,还有很多统计建模和商业分析的商用产品,用于在更为受控的数据处理环境下应用机器学习模型。这些产品,包括 RapidMiner、IBM SPSS、SAS+JMP 和 Stata 等,它们的目标是为数据分析提供可靠和端到端的解决方案,通常也会将 API 或是脚本语法暴露给用户。

近年来还涌现出了一批“机器学习即服务”平台,比如 Amazon Machine Learning、Google Prediction、DataRobot、IBM Watson 和 Microsoft Azure Machine Learning 等。它们使你能够拓展你的机器学习产品的规模,处理巨量的数据以及快速地对不同的模型进行试验。只要你在机器学习领域打好了坚实的基础,使用这些平台就像学习使用一门新工具一样简单。


特别提示

选择语言和库时要注意考虑开发时间和实际性能之间的平衡。一条能够飞速处理数据的流水线如果需要几个月来开发,在有些情况下这可能就毫无用处。一般来说,能够快速地搭建和测试原型会更重要,因为一开始你肯定会失败。


这也是为什么大部分公司都想寻找那种已经有惯用的工具 / 语言 / 库的机器学习工程师。工业界往往会用 Python 和 R 这样的高层次语言来开发算法的原型,然后用 Java 或是 C/C++ 来开发生产级别的解决方案。



2. 导师的力量


在学习语言的过程中,会遭遇众多关于数据结构,递归,面向对象的难题。这个时候,一个有经验导师提供的专业意见将会迅速给你胶着的思路注入一股清泉,帮助你平稳打好语言基础。

 

Udacity是由谷歌无人车之父、斯坦福大学终身教授,原谷歌副总裁、Google X 实验室联合创始人 Sebastian Thrun 创立的一家盈利性教育平台,提供大规模开放式在线课程。【机器学习】纳米学位由硅谷明星导师领衔主讲,给课程进行中遇到问题的学员提供专业指导。




3. 我能在课程里得到什么?


-独家课程内容,项目直播辅导

 

除了学习来自硅谷领先企业的课程视频、实战项目,与项目直播讲解!还有更多 Udacity 独家学习资料,等待你来探索。

 

-加入同步学习小组,在导师帮助下快速成长

 

你将加入学习小组,认识志同道合的伙伴,在专业导师全方位辅导和监督下,用最高效率掌握前沿技术,成为抢手人才。

 

-独一无二的硅谷实战项目和代码审阅


亲自挑战来自硅谷的数据分析开发实战项目,获得该领域专家的逐行代码审阅和反馈,学习最先进的技术标准,与硅谷编程开发者的思维同步!


-获得 Udacity纳米学位证书

 

毕业后,你将获得 Udacity 颁发的毕业证书,证明你的专业知识和技术水平。


课程内容

机器学习基础


在这里,你可以学习到机器学习的基础知识,并初步了解一些机器学习可以完成的任务,如分类与回归问题,包括机器学习涉及到的统计分析知识以及模型评估和验证知识。


监督学习


监督学习是通过已标注过的训练数据来完成分类或回归任务的一类机器学习方法。在这一部分中,你将学习决策树,神经网络,支持向量机等监督学习算法。


非监督学习


当数据样本没有标签的情况下,非监督学习是其解决问题的最佳方案。在这一部分中,你将学习聚类,特征工程和降维等非监督学习算法。


强化学习


强化学习也是一类重要的机器学习方法,它是一个序列决策问题。在这一部分中,你将学习Markov 决策过程与博弈论等强化学习知识。


深度学习


深度学习是当今世界上最火热的一类机器学习方法,在许多领域中甚至超过了人类的能力。在这一部分中,你将学会使用 Tensorflow,并且学习卷积神经网络等知识。


毕业项目


选择一个你最感兴趣的内容,用你所学的机器学习和技术解决它。在毕业报告中,如果有引用,也一定要注明出处。



你将挑战的实践项目


实战项目1:预测房价

在此项目中,我们将对为马萨诸塞州波士顿地区的房屋价格收集的数据应用基本机器学习概念,以预测新房屋的销售价格。


实战项目 2:慈善机构寻找捐助者

在该项目中,你将把你学到的应用监督学习技术和分析数据的能力应用到美国人口普查收集到的数据中,来帮助一个慈善机构确定哪些人最有可能做捐助。


实战项目 3:创建客户细分

在这个项目中,你将应用无监督学习技能研究葡萄牙里斯本的一家批发经销商产品花销数据,用于找出数据背后的客户群体。


实战项目 4:训练机器人走迷宫

在这个项目中,你会需要实现一个 Q-learning算法来解决走迷宫问题。同时你有机会将你的算法应用在股市中,让机器学习出高收益策略。



实战项目 5:小狗品种分类

在这个项目中,你将设计并训练一个卷积神经网络(CNN),来分析狗的图像,并据此准确区分他们的品种。使用迁移学习和其他知名架构来优化这一模型——为更进阶的应用做好准备!



实战项目 6:毕业项目

选择一个你最感兴趣的内容,用你所学的机器学习和技术解决它。选择一:训练特斯拉 - 根据车辆的前置相机所拍摄的路况图像,实现对车辆转向角度的预测。选择二:驾驶员状态检测 - 使用深度学习方法检测驾驶员的状态,有效降低事故发生。选择三:猫狗大战 - 使用深度学习方法识别图片中是猫还是狗。选择四:文档自动分类 - 利用自然语言处理技术对大量分档实现精准自动归类。选择五:语音性别识别 - 使用机器学习的方法判断一段音频信号是男性还是女性。选择六:预测Rossmann未来的销售额 - 根据Rossmann药妆店的信息(比如促销,竞争对手,节假日)以及在过去的销售情况,来预测Rossmann未来的销售额。选择七:识别机器人用户 - 根据提供的拍卖数据,识别出混在正常用户中的机器人用户。





本期机器学习(进阶)课程报名时间:

1月18日至2月7日

中国区仅剩不足200席位

扫描下方二维码即可入群抢占席位

更可获得300元课程抵用红包

时间有限

快快加入吧!


↓点击阅读原文,了解《机器学习(进阶)》基石纳米学位项目详情