為什麼我們的機器學習平臺支持的是Python,而不是R語言

全文共3314字,預計學習時長

10分鐘

為什麼我們的機器學習平臺支持的是Python,而不是R語言


免責聲明:以下內容均基於筆者對機器學習團隊的觀察——並非對該行業的學術調查。筆者是Cortex的貢獻者,它是一個用於在生產中部署模型的開源平臺(本文標題中的“我們”指的就是Cortex)。


學Python還是R語言,這是個難題……


這兩個異常強大、靈活好用的數據分析語常常讓我們難以抉擇。


有很多文章將Python語言和R語言在數據科學方面的優缺點進行了比較,但本文並不在其中之列。


與之不同,本文介紹了數據分析師和機器學習工程師的差異,以及他們對編程語言的不同需求。


簡單而言,機器學習工程師從根本上來說是軟件工程師,他們用的是為軟件工程設計的編程語言——而不是統計使用的編程語言。


這聽起來相當顯而易見,但它代表了機器學習生態系統的一種變化,值得深入研究。


為什麼我們的機器學習平臺支持的是Python,而不是R語言

Python和R語言都適合進行數據分析


為什麼我們的機器學習平臺支持的是Python,而不是R語言


在以往比較Python和R語言的文章中通常會凸顯出某種語言的明顯優勢,但這些優勢充其量是微不足道的、主觀的。儘管有些人認為R語言非常規統計函數的優勢超過了Python,原因是後者需要使用Numpy這樣的第三方庫,但這些差異並沒有產生那麼大的影響。


事實就是R語言和Python都完全可以用於數據分析。


比如,假設用戶要對某些數據(例如房價)運行簡單的線性迴歸模型。R語言的運行結果如下:


<code>square_feet price new_house_price = predict(correlation, new_house)print(new_house_price)/<code>

而Python的運行結果如下:


<code>import pandas as pd
import statsmodels.api as smdata = {'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'])/<code>

兩者的差異並非出人意料。一些人可能更青睞某一種語言的語法,或者可能更喜歡R語言的默認繪圖庫(ggplot2),不喜歡Matplotlib或Python的其他庫。而其他人會認為Python比R語言的性能更好。


現實情況是,如果用戶要做的只是分析數據,那麼任何一種語言都能完成得很不錯。


為什麼我們的機器學習平臺支持的是Python,而不是R語言

但是機器學習工程與軟件有關——並非商業智能


為什麼我們的機器學習平臺支持的是Python,而不是R語言


分析數據從而瞭解業務的公司(也就是商業智能)與將機器學習當作產品一部分的公司有著不同的需求。


正如Foursquare的核心技術負責人亞當·瓦克斯曼所說:


“很多時候,公司說他們有‘數據科學團隊’,其實他們有的是分析支持功能。在Foursquare,機器學習模型在產品中佔很大比重……Foursquare將數據科學視為產品開發團隊的一部分”


瓦克斯曼還表示,在Foursquare,“沒有數據科學部門——工程部門負責處理很多事情。”


機器學習工程師的需求是不同的。這裡舉一個真實的例子。


為公司設計客戶服務機器人,可能需要將模型部署為微服務,該服務將接收客戶的輸入並返回要在機器人前端進行渲染的響應。


構建該應用程序界面需要:


· 加載模型,無論使用哪種框架,它們基本上都具有本地Python包。

· 選擇一個框架,服務於應用程序界面。Python有多種選擇(其中,Flask最受歡迎),而R語言僅限於Plumbr。

· 考慮到解析用戶輸入以及與其他服務進行通訊等問題。使用通用腳本語言(比如Python)會更加得心應手。


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


為什麼我們的機器學習平臺支持的是Python,而不是R語言

機器學習既是研究領域也是工程學科


要想了解機器學習工程是怎樣出現的,看一看相關領域(網絡開發)的發展經歷非常有用。


2000年,只有一種產品依賴於客戶端和服務器之間的異步通信,它就是Outlook Web Access。微軟公司負責該產品的團隊也同時研發了XMLHTTP。XMLHTTP讓後臺HTTP請求成為可能。


換句話說,唯一能構建異步應用程序的人就是那些發明了異步應用程序技術的人。


不久之前,機器學習領域也是如此。僅有的幾家生產機器學習相關產品的公司同樣擁有相當數量的機器學習團隊,比如谷歌、臉書和網飛。


但是,網絡開發領域很快就將相關人員劃分為研究人員和從業人員。研究人員還在研究新技術和框架(通常應用於較大的公司)的時候,大多數從業人員就開始用他們的發明生產產品了。


機器學習領域也出現了類似的趨勢。機器學習工程師正在以從業者的身份出現,他們使用大型公司和研究實驗室生產的最新模型和框架來生產機器學習驅動型產品。


比如,尼克·沃爾頓在黑客馬拉松比賽中使用OpenAI的GPT-2微調版創建了AI地牢,該程序由機器學習驅動,用戶可創建自己的冒險遊戲:


為什麼我們的機器學習平臺支持的是Python,而不是R語言

大多數網絡開發人員並不設計自己的數據庫或框架,沃爾頓和他們類似,他也沒有發明自己的模型架構。相反,他利用機器學習研究人員輸出的成果來創建新產品。


像沃爾頓這樣的從業人員都把精力放在構建軟件上,他們需要使用適合於構建軟件(而不是控制面板)的語言進行工作。


為什麼我們的機器學習平臺支持的是Python,而不是R語言

機器學習正在走出實驗室並投入生產——Python就是機器學習的產物


為什麼我們的機器學習平臺支持的是Python,而不是R語言


商業智能和數據分析會一直存在,在這些領域內,R語言仍會是個很受歡迎的選擇。但是,機器學習工程已經向前發展了。


越來越多像Foursquare這樣的團隊湧現出來,對於他們來說,數據科學和機器學習與產品開發和工程有關。負責這些領域的並非數據分析師,而是工程師(根據的是職責,而不是職稱),他們使用的是軟件工程師熟悉的工具和語言(比如Python)。


R將一直是生成控制面板和輸出報告的有效工具。但是,為拼車軟件創建估計到達時間功能、為流媒體服務提供內容推薦工具或為照片應用程序提供人臉識別器是機器學習工程師和Python該完成的工作。


筆者的團隊為機器學習工程師構建了Cortex,因為我們本來就是希望利用機器學習的軟件工程師。筆者所關心的問題與設計新模型無關,而與工程問題有關,比如:


· 與受歡迎的機器學習框架最為匹配的語言是什麼?每個框架都有本地Python包。

· 哪種語言最適合編寫請求處理代碼?Python這樣的通用語言。

· 可用於包裝應用程序界面模型的最簡微服務框架是什麼?Flask,當然是Python。


為什麼我們的機器學習平臺支持的是Python,而不是R語言


換句話說,筆者的團隊為機器學習工程師(而不是數據分析師)建立了一個平臺,這就意味著我們支持的是Python,而不是R語言。


而對大家而言,適合的才是最好的,Python和R語言,在不同的領域,面對不同的問題,都有著各自無法取代的優勢。

為什麼我們的機器學習平臺支持的是Python,而不是R語言

我們一起分享AI學習與發展的乾貨


分享到:


相關文章: