為什麼我們的機器學習平台支持Python而不是R

2020-03-07     機器學習與數據分析

前言

有很多文章比較了Python和R在數據科學方面的相對優點。但是​這並不在這篇文章的討論範圍。這篇文章是關於數據分析師和機器學習工程師的分歧,以及他們對程式語言的不同需求。

簡單的說法是,機器學習工程師本質上是軟體工程師,他們使用的是為軟體工程而設計的程式語言,而不是統計學。這可能聽起來相當明顯,但它代表了機器學習生態系統中的一個變化,一個值得深入研究的變化。​


Python V.S. R

Python和R都適合數據分析

對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更具有表現力。

事實是,如果您只想分析數據,那麼任何一種語言都可以很好地完成這項工作。

機器學習是關於軟體工程而非商業分析​

一家通過分析數據來了解其商業智能的公司,其需求與那些將機器學習作為其產品一部分的公司是不同的。很多時候,當公司說他們有一個「數據科學團隊」時,他們的意思是他們有一個商業分析支持功能。

機器學習工程師的需求則是不同的。讓我們看一個真實的例子:

如果要為您的公司構建一個客戶服務機器人,您可能需要將您的模型部署為一個微服務,它將接受客戶輸入並返回一個響應,該響應將在機器人的前端呈現。

在建立這個API,你需要:

  1. 加載您的模型,無論您使用什麼框架,幾乎可以肯定它具有本機Python綁定。
  2. 使用框架來服務您的API。Python有幾種選擇——flask是最流行的——而R只能用Plumbr。
  3. 擔心解析用戶輸入以及與其他服務通信等問題。這在像Python這樣的通用腳本語言中更容易實現。

換句話說,機器學習工程師必須處理工程問題,而Python是更好的選擇。

機器學習既是研究又是工程學科

要理解機器學習工程的出現,看看相關領域(web開發)發生的事情是很有用的。

在2000年,只有一個產品依賴於客戶機和伺服器- outlook Web Access之間的異步通信。微軟開發Outlook Web Access的團隊與發明XMLHTTP(使後台HTTP請求成為可能的技術)的團隊是同一團隊。換句話說,能夠構建異步應用程式的人是那些發明了支持異步應用程式的技術的人。

不久以前,機器學習也是如此。僅有的幾家使用機器學習技術開發產品的公司也有相當規模的機器學習研究團隊,如谷歌、Facebook和Netflix。

然而,web開發領域很快就分成了研究人員和實踐者。當研究人員還在研究新技術和框架時(通常是在大型組織中使用),實踐者主要使用這些發明來構建產品。

在機器學習領域也出現了類似的趨勢。機器學習工程師正在成為實踐者,他們使用大公司和研究實驗室生產的最先進的模型和框架來構建基於機器學習的產品。​

機器學習正在走出實驗室進入工業界

商業智能和數據分析將永遠存在,在這些社區中,R將仍然是一個流行的選擇。然而,機器學習工程公司已經在前進。

數據科學和機器學習是產品開發和工程的事情。負責它們的人不是數據分析師,而是工程師(就職責而言,而不是頭銜而言),他們使用的是軟體工程師熟悉的工具和語言,比如Python。R始終是生成儀錶板和報告的有效工具。

我們關注的不是設計新模型,而是工程問題,比如:

  • 與流行的機器學習框架集成的最佳語言是什麼?---Python
  • 哪種語言最適合編寫請求處理代碼?---像Python這樣的通用語言。
  • 我們可以用來在api中包裝模型的最簡單的微服務框架是什麼?--- Flask,當然來自於Python.

換句話說,我們為機器學習工程師而不是數據分析師建立了一個平台,這意味著我們支持Python而不是R。

參考:

https://towardsdatascience.com/why-our-machine-learning-platform-supports-python-not-r-b2e0c5c5d06d

文章來源: https://twgreatdaily.com/L8ywtXABjYh_GJGVsplL.html