學(xué)Python還是R語言,這是個難題……
這兩個異常強(qiáng)大、靈活好用的數(shù)據(jù)分析語常常讓我們難以抉擇。
有很多文章將Python語言和R語言在數(shù)據(jù)科學(xué)方面的優(yōu)缺點(diǎn)進(jìn)行了比較,但本文并不在其中之列。
與之不同,本文介紹了數(shù)據(jù)分析師和機(jī)器學(xué)習(xí)工程師的差異,以及他們對編程語言的不同需求。
簡單而言,機(jī)器學(xué)習(xí)工程師從根本上來說是軟件工程師,他們用的是為軟件工程設(shè)計(jì)的編程語言——而不是統(tǒng)計(jì)使用的編程語言。
這聽起來相當(dāng)顯而易見,但它代表了機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)的一種變化,值得深入研究。
Python和R語言都適合進(jìn)行數(shù)據(jù)分析
在以往比較Python和R語言的文章中通常會凸顯出某種語言的明顯優(yōu)勢,但這些優(yōu)勢充其量是微不足道的、主觀的。盡管有些人認(rèn)為R語言非常規(guī)統(tǒng)計(jì)函數(shù)的優(yōu)勢超過了Python,原因是后者需要使用Numpy這樣的第三方庫,但這些差異并沒有產(chǎn)生那么大的影響。
事實(shí)就是R語言和Python都完全可以用于數(shù)據(jù)分析。
比如,假設(shè)用戶要對某些數(shù)據(jù)(例如房價(jià))運(yùn)行簡單的線性回歸模型。R語言的運(yùn)行結(jié)果如下:
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的運(yùn)行結(jié)果如下:
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’])
兩者的差異并非出人意料。一些人可能更青睞某一種語言的語法,或者可能更喜歡R語言的默認(rèn)繪圖庫(ggplot2),不喜歡Matplotlib或Python的其他庫。而其他人會認(rèn)為Python比R語言的性能更好。
現(xiàn)實(shí)情況是,如果用戶要做的只是分析數(shù)據(jù),那么任何一種語言都能完成得很不錯。
但是機(jī)器學(xué)習(xí)工程與軟件有關(guān)——并非商業(yè)智能
分析數(shù)據(jù)從而了解業(yè)務(wù)的公司(也就是商業(yè)智能)與將機(jī)器學(xué)習(xí)當(dāng)作產(chǎn)品一部分的公司有著不同的需求。
正如Foursquare的核心技術(shù)負(fù)責(zé)人亞當(dāng)·瓦克斯曼所說:
“很多時(shí)候,公司說他們有‘?dāng)?shù)據(jù)科學(xué)團(tuán)隊(duì)’,其實(shí)他們有的是分析支持功能。在Foursquare,機(jī)器學(xué)習(xí)模型在產(chǎn)品中占很大比重……Foursquare將數(shù)據(jù)科學(xué)視為產(chǎn)品開發(fā)團(tuán)隊(duì)的一部分”
瓦克斯曼還表示,在Foursquare,“沒有數(shù)據(jù)科學(xué)部門——工程部門負(fù)責(zé)處理很多事情。”
機(jī)器學(xué)習(xí)工程師的需求是不同的。這里舉一個真實(shí)的例子。
為公司設(shè)計(jì)客戶服務(wù)機(jī)器人,可能需要將模型部署為微服務(wù),該服務(wù)將接收客戶的輸入并返回要在機(jī)器人前端進(jìn)行渲染的響應(yīng)。
構(gòu)建該應(yīng)用程序界面需要:
· 加載模型,無論使用哪種框架,它們基本上都具有本地Python包。
· 選擇一個框架,服務(wù)于應(yīng)用程序界面。Python有多種選擇(其中,F(xiàn)lask最受歡迎),而R語言僅限于Plumbr。
· 考慮到解析用戶輸入以及與其他服務(wù)進(jìn)行通訊等問題。使用通用腳本語言(比如Python)會更加得心應(yīng)手。
換句話說,機(jī)器學(xué)習(xí)工程師需要處理工程方面的問題,而Python是更好的選擇。
機(jī)器學(xué)習(xí)既是研究領(lǐng)域也是工程學(xué)科
要想了解機(jī)器學(xué)習(xí)工程是怎樣出現(xiàn)的,看一看相關(guān)領(lǐng)域(網(wǎng)絡(luò)開發(fā))的發(fā)展經(jīng)歷非常有用。
2000年,只有一種產(chǎn)品依賴于客戶端和服務(wù)器之間的異步通信,它就是Outlook Web Access。微軟公司負(fù)責(zé)該產(chǎn)品的團(tuán)隊(duì)也同時(shí)研發(fā)了XMLHTTP。XMLHTTP讓后臺HTTP請求成為可能。
換句話說,唯一能構(gòu)建異步應(yīng)用程序的人就是那些發(fā)明了異步應(yīng)用程序技術(shù)的人。
不久之前,機(jī)器學(xué)習(xí)領(lǐng)域也是如此。僅有的幾家生產(chǎn)機(jī)器學(xué)習(xí)相關(guān)產(chǎn)品的公司同樣擁有相當(dāng)數(shù)量的機(jī)器學(xué)習(xí)團(tuán)隊(duì),比如谷歌、臉書和網(wǎng)飛。
但是,網(wǎng)絡(luò)開發(fā)領(lǐng)域很快就將相關(guān)人員劃分為研究人員和從業(yè)人員。研究人員還在研究新技術(shù)和框架(通常應(yīng)用于較大的公司)的時(shí)候,大多數(shù)從業(yè)人員就開始用他們的發(fā)明生產(chǎn)產(chǎn)品了。
機(jī)器學(xué)習(xí)領(lǐng)域也出現(xiàn)了類似的趨勢。機(jī)器學(xué)習(xí)工程師正在以從業(yè)者的身份出現(xiàn),他們使用大型公司和研究實(shí)驗(yàn)室生產(chǎn)的最新模型和框架來生產(chǎn)機(jī)器學(xué)習(xí)驅(qū)動型產(chǎn)品。
比如,尼克·沃爾頓在黑客馬拉松比賽中使用OpenAI的GPT-2微調(diào)版創(chuàng)建了AI地牢,該程序由機(jī)器學(xué)習(xí)驅(qū)動,用戶可創(chuàng)建自己的冒險(xiǎn)游戲:
大多數(shù)網(wǎng)絡(luò)開發(fā)人員并不設(shè)計(jì)自己的數(shù)據(jù)庫或框架,沃爾頓和他們類似,他也沒有發(fā)明自己的模型架構(gòu)。相反,他利用機(jī)器學(xué)習(xí)研究人員輸出的成果來創(chuàng)建新產(chǎn)品。
像沃爾頓這樣的從業(yè)人員都把精力放在構(gòu)建軟件上,他們需要使用適合于構(gòu)建軟件(而不是控制面板)的語言進(jìn)行工作。
機(jī)器學(xué)習(xí)正在走出實(shí)驗(yàn)室并投入生產(chǎn)——Python就是機(jī)器學(xué)習(xí)的產(chǎn)物
商業(yè)智能和數(shù)據(jù)分析會一直存在,在這些領(lǐng)域內(nèi),R語言仍會是個很受歡迎的選擇。但是,機(jī)器學(xué)習(xí)工程已經(jīng)向前發(fā)展了。
越來越多像Foursquare這樣的團(tuán)隊(duì)涌現(xiàn)出來,對于他們來說,數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)與產(chǎn)品開發(fā)和工程有關(guān)。負(fù)責(zé)這些領(lǐng)域的并非數(shù)據(jù)分析師,而是工程師(根據(jù)的是職責(zé),而不是職稱),他們使用的是軟件工程師熟悉的工具和語言(比如Python)。
R將一直是生成控制面板和輸出報(bào)告的有效工具。但是,為拼車軟件創(chuàng)建估計(jì)到達(dá)時(shí)間功能、為流媒體服務(wù)提供內(nèi)容推薦工具或?yàn)檎掌瑧?yīng)用程序提供人臉識別器是機(jī)器學(xué)習(xí)工程師和Python該完成的工作。
筆者的團(tuán)隊(duì)為機(jī)器學(xué)習(xí)工程師構(gòu)建了Cortex,因?yàn)槲覀儽緛砭褪窍M脵C(jī)器學(xué)習(xí)的軟件工程師。筆者所關(guān)心的問題與設(shè)計(jì)新模型無關(guān),而與工程問題有關(guān),比如:
· 與受歡迎的機(jī)器學(xué)習(xí)框架最為匹配的語言是什么?每個框架都有本地Python包。
· 哪種語言最適合編寫請求處理代碼?Python這樣的通用語言。
· 可用于包裝應(yīng)用程序界面模型的最簡微服務(wù)框架是什么?Flask,當(dāng)然是Python。
換句話說,筆者的團(tuán)隊(duì)為機(jī)器學(xué)習(xí)工程師(而不是數(shù)據(jù)分析師)建立了一個平臺,這就意味著我們支持的是Python,而不是R語言。
而對大家而言,適合的才是最好的,Python和R語言,在不同的領(lǐng)域,面對不同的問題,都有著各自無法取代的優(yōu)勢。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132646 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84690 -
r語言
+關(guān)注
關(guān)注
1文章
30瀏覽量
6288
發(fā)布評論請先 登錄
相關(guān)推薦
評論