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