为什么我们的机器学习平台支持Python,而不是R
- 2020 年 3 月 18 日
- 筆記
前言
免责声明:以下内容是基于作者的观察——而不是一个行业的学术调查。
有很多文章比较了Python和R在数据科学方面的相对优点。但是这并不在这篇文章的讨论范围。这篇文章是关于数据分析师和机器学习工程师的分歧,以及他们对编程语言的不同需求。
简单的说法是,机器学习工程师本质上是软件工程师,他们使用的是为软件工程而设计的编程语言,而不是统计学。这可能听起来相当明显,但它代表了机器学习生态系统中的一个变化,一个值得深入研究的变化。
原文传送门:阅读原文
作者:Celeb Kaiser
编译:HuangweiAI

Python和R都适合数据分析
01
PART
对R和Python的比较通常会突出两种语言各自的优势,而这两种语言的优势充其量只能算是边缘的和主观的。虽然有些人认为R的开箱即用统计函数优于Python,而Python需要使用NumPy等第三方库,但这些差异并没有那么大的影响。
简单的事实是,R和Python都完全适合分析数据。
例如,假设您想对某些数据(如房价)运行一个简单的线性回归模型。在R中,它看起来是这样的:
square_feet <- c(1000, 1300, 942, 1423, 2189) price <- c(300000, 299000, 240000, 420000, 600322) correlation <- lm(price~square_feet) new_house <- data.frame(square_feet = 1100) new_house_price = predict(correlation, new_house) print(new_house_price)
在Python中,它是这样的:
import pandas as pd import statsmodels.api as sm data = {'square_feet': [1000, 1300, 942, 1423, 2189], 'price': [300000, 299000, 240000, 420000, 600322]} housing_data = pd.DataFrame(data=data) model = sm.OLS(housing_data['price'], housing_data['square_feet']).fit() new_data = {'square_feet': [1400]} new_housing_data = pd.DataFrame(data=new_data) model.predict(new_housing_data['square_feet'])
这些差异并不是不可思议的。有些人可能特别喜欢一种语言的语法,或者可能更喜欢R的默认绘图库(ggplot2
),而不是Matplotlib
或其他Python选项。也有其他人会指出Python比R更具有表现力。
事实是,如果您只想分析数据,那么任何一种语言都可以很好地完成这项工作。


02
PART
机器学习是关于软件工程而非商业分析
一家通过分析数据来了解其商业智能的公司,其需求与那些将机器学习作为其产品一部分的公司是不同的。很多时候,当公司说他们有一个“数据科学团队”时,他们的意思是他们有一个商业分析支持功能。
机器学习工程师的需求则是不同的。让我们看一个真实的例子:
如果要为您的公司构建一个客户服务机器人,您可能需要将您的模型部署为一个微服务,它将接受客户输入并返回一个响应,该响应将在机器人的前端呈现。
在建立这个API,你需要:
- 加载您的模型,无论您使用什么框架,几乎可以肯定它具有本机Python绑定。
- 使用框架来服务您的API。Python有几种选择——flask是最流行的——而R只能用Plumbr。
- 担心解析用户输入以及与其他服务通信等问题。这在像Python这样的通用脚本语言中更容易实现。
换句话说,机器学习工程师必须处理工程问题,而Python是更好的选择。


机器学习既是研究又是工程学科
03
PART
要理解机器学习工程的出现,看看相关领域(web开发)发生的事情是很有用的。
在2000年,只有一个产品依赖于客户机和服务器- outlook Web Access之间的异步通信。微软开发Outlook Web Access的团队与发明XMLHTTP(使后台HTTP请求成为可能的技术)的团队是同一团队。换句话说,能够构建异步应用程序的人是那些发明了支持异步应用程序的技术的人。
不久以前,机器学习也是如此。仅有的几家使用机器学习技术开发产品的公司也有相当规模的机器学习研究团队,如谷歌、Facebook和Netflix。
然而,web开发领域很快就分成了研究人员和实践者。当研究人员还在研究新技术和框架时(通常是在大型组织中使用),实践者主要使用这些发明来构建产品。
在机器学习领域也出现了类似的趋势。机器学习工程师正在成为实践者,他们使用大公司和研究实验室生产的最先进的模型和框架来构建基于机器学习的产品。


04
PART
机器学习走出实验室进入工业界
商业智能和数据分析将永远存在,在这些社区中,R将仍然是一个流行的选择。然而,机器学习工程公司已经在前进。
数据科学和机器学习是产品开发和工程的事情。负责它们的人不是数据分析师,而是工程师(就职责而言,而不是头衔而言),他们使用的是软件工程师熟悉的工具和语言,比如Python。R始终是生成仪表板和报告的有效工具。
我们关注的不是设计新模型,而是工程问题,比如:
- 与流行的机器学习框架集成的最佳语言是什么?—Python
- 哪种语言最适合编写请求处理代码?—像Python这样的通用语言。
- 我们可以用来在api中包装模型的最简单的微服务框架是什么?— Flask,当然来自于Python.
换句话说,我们为机器学习工程师而不是数据分析师建立了一个平台,这意味着我们支持Python而不是R。

·END·