中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

我在數(shù)據(jù)科學(xué)前線工作這一年

2020-04-28    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

作者:Will Koehrsen   譯者:核子可樂   來源:InfoQ

過去一年以來,我的工作內(nèi)容從簡單編寫 Jupyter Notebook,轉(zhuǎn)向為機器學(xué)習(xí)開發(fā)流水線,用于全天候向建筑工程師提供實時建議。雖然工作成果仍有改進的余地(我承認,我在編碼和數(shù)據(jù)科學(xué)方面犯了不少錯誤),但在過程中我還是學(xué)到了不少關(guān)于數(shù)據(jù)科學(xué)的知識。在本文中,我將結(jié)合自己的實踐經(jīng)驗,與各位分享心得,希望幫助大家避免我曾在日常數(shù)據(jù)科學(xué)前沿工作中遇到過的錯誤。

生產(chǎn)層面的數(shù)據(jù)科學(xué),總體屬于計算機科學(xué)范疇

在被問及工作當(dāng)中最困難的部分時,我總會首先強調(diào)一點——生產(chǎn)層面的數(shù)據(jù)科學(xué),不屬于機器學(xué)習(xí)。畢竟我們平時接觸的“機器學(xué)習(xí)”基本都是這個樣子:

 

 

相反,數(shù)據(jù)科學(xué)當(dāng)中最困難的部分,在于建模之前與之后的開發(fā)工作。建模之前,我們需要解決的問題有:從數(shù)據(jù)庫加載數(shù)據(jù)、特征工程、數(shù)據(jù)驗證以及數(shù)據(jù)處理流水線(假設(shè)我們的荼在數(shù)據(jù)攝取之后才正式開始)。在結(jié)果驗證之后,任務(wù)即可按計劃自動運行,將結(jié)果寫入回我們的數(shù)據(jù)庫內(nèi),并發(fā)送 webhooks 以觸發(fā)其他服務(wù)。

這些具體操作構(gòu)成了機器學(xué)習(xí)中的大部分內(nèi)容,同時也對工作人員的計算機科學(xué)知識提出嚴格要求。與代碼開發(fā)相關(guān)的實踐方面,則包括編寫負責(zé)實現(xiàn)單一功能的短函數(shù)、開發(fā)類以實現(xiàn)多個相關(guān)函數(shù)、合理的命名約定、以代碼與數(shù)據(jù)為基礎(chǔ)編寫單元測試、編寫讀取代碼,同時確保不存在重復(fù)代碼。此外,我們還需要將其他計算機科學(xué)實踐應(yīng)用于代碼之內(nèi),例如版本控制、代碼審查、持續(xù)集成、代碼覆蓋與部署等等。這些實踐方法,共同構(gòu)建起一個完全獨立的新領(lǐng)域——機器學(xué)習(xí)運營(MLOps)。

盡管我努力完成了從機械工程到數(shù)據(jù)科學(xué)的過渡,但現(xiàn)在回想起來,如果當(dāng)初能夠選擇從工程到計算機科學(xué)、再到數(shù)據(jù)科學(xué)的成長道路,也許效果會更好一些。后一種方法意味著,我用不著在數(shù)據(jù)科學(xué)實踐當(dāng)中積累編碼知識。換句話說,雖然先學(xué)數(shù)據(jù)科學(xué)、再學(xué)計算機科學(xué)也不是不可行,但最好的方法應(yīng)該是把二者的順序顛倒過來。

計算機科學(xué)涉及一種完全不同的系統(tǒng)性思維方式,即在編碼之前進行合理規(guī)劃、逐步編寫代碼,并在編寫完成之后進行代碼測試。清晰明確的代碼,與我之前隨意寫下的各種 notebook(我們都會編寫名為 Untitled12.ipynb 的 notebook)形成了鮮明的對比。此外,計算機科學(xué)更強調(diào)快速獲取結(jié)果的重要性,而非可重復(fù)利用的無錯誤代碼。

任何數(shù)據(jù)科學(xué)家,都能夠從計算機科學(xué)最佳編碼實踐課程當(dāng)中受益。結(jié)構(gòu)化腳本與軟件包、簡潔的代碼編寫風(fēng)格、測試與記錄代碼的能力,將幫助我們更高效地管理從探索性數(shù)據(jù)科學(xué)到生產(chǎn)性機器學(xué)習(xí)的過渡。此外,計算機科學(xué)還帶來一種重要的思維模式,幫助我們編寫出更易于理解且可復(fù)用的代碼。即使是那些單純?yōu)榱朔治稣撐臄?shù)據(jù)而編寫數(shù)據(jù)科學(xué)腳本的學(xué)術(shù)型數(shù)據(jù)科學(xué)家,也將從這些實踐當(dāng)中獲得助益。如果科學(xué)家們能夠編寫出更簡潔的代碼,并佐以用于輸入、輸出以及函數(shù)行為驗證的單元測試,那么對科學(xué)中可重復(fù)性問題的處理能力將得到極大增強。

數(shù)據(jù)科學(xué)當(dāng)中包含大量值得學(xué)習(xí)的主題,有時候會令剛剛上手的朋友感到不知所措。但是,計算機科學(xué)并非補充性知識;相反,對于希望保證代碼可操作性的數(shù)據(jù)科學(xué)家而言,計算機科學(xué)更是一種基礎(chǔ)性前提。幸運的是,目前市面上存在大量優(yōu)秀資源,可供感興趣的朋友學(xué)習(xí)并應(yīng)用這些重要的編碼實踐。

數(shù)據(jù)科學(xué)仍是一種高度主觀的學(xué)科

數(shù)據(jù)科學(xué)承諾利用數(shù)據(jù)——而非人類判斷——做出最佳決策。雖然這個目標聽起來有理有據(jù),但目前的現(xiàn)實還遠遠無法支撐起這樣的效果,這是因為我們使用的數(shù)據(jù)內(nèi)容與分析方法在很大程度上仍受到人類的影響。事實上,就連數(shù)據(jù)科學(xué)中的所謂客觀因素,同樣與人類行為密不可分。正如 Vicki Boykis 在文章中提到,神經(jīng)網(wǎng)絡(luò)從始至終都是人的體現(xiàn)。

典型機器學(xué)習(xí)系統(tǒng)中的每一個步驟,都會受到個人選擇的影響。下面來看幾種具體決策方向:

數(shù)據(jù)收集: 我們需要收集什么數(shù)據(jù)?使用什么傳感器?要調(diào)查誰?如何表達我們的問題?

特征工程: 我們建立哪些特征?應(yīng)當(dāng)使用特定領(lǐng)域知識還是自動化特征工程?如何填充缺失值?哪些意見需要被剔除?

建模: 我們應(yīng)該使用哪些超參數(shù)?模型的復(fù)雜度應(yīng)該控制在怎樣的水平?

驗證: 我們使用哪些評估指標?驗證流程該如何設(shè)計?理想的結(jié)果應(yīng)該擁有怎樣的性能表現(xiàn)?

部署: 我們能否信任結(jié)果并將其展示給客戶?是否需要引入人工評估預(yù)測,以進行完整性檢查?

很明顯,不同的人對于上述問題將給出不同的結(jié)論!锻惶讛(shù)據(jù)集,不同的分析師(Many Analysts, One Data Set)》一文列舉了一個實例,描述多位數(shù)據(jù)科學(xué)家如何憑借不同方法,利用相同的數(shù)據(jù)集得出相互矛盾的決策結(jié)果。毫不夸張地說,我們完全可以通過變更分析方法的方式,利用同一數(shù)據(jù)集同時證明某個論點及其對立觀點。由此來看,我們不該對任何一項研究得同的結(jié)論堅持不放,而應(yīng)該以懷疑的態(tài)度審視元分析過程。

此外,人為偏見(無論有意還是無意)都會出現(xiàn)在數(shù)據(jù)當(dāng)中,進而影響到機器學(xué)習(xí)模型。正如《數(shù)學(xué)毀滅性武器(Weapons of Math Destruction》一書所提到,將決策工作交由機器處理并不能消除歧視,而只是對現(xiàn)實數(shù)據(jù)中存在的現(xiàn)有偏見進行了一番“整理”。我們的最終目標當(dāng)然是利用數(shù)據(jù)科學(xué)消除決策偏見,但只要仍有人類參與,我們就不能盲目信賴機器學(xué)習(xí)的預(yù)測結(jié)果。

數(shù)據(jù)科學(xué)的主觀性,是否意味著我們將陷入關(guān)于真理的“不可知論”當(dāng)中?我認為我們有必要重新思考這個問題:我們不可能找到完全正確的答案,而只能利用數(shù)據(jù)科學(xué)——哪怕仍存在缺陷——不斷朝著更好的方向邁進。畢竟,數(shù)據(jù)科學(xué)只是科學(xué)的一個子領(lǐng)域,因為其目標同樣是隨著時間的推進而減少錯誤機率。同樣的,研究問題的人員越多,工作結(jié)果就越容易直接比較,也能幫助我們不斷提升結(jié)果質(zhì)量。假設(shè)有 20 名科學(xué)家進行 20 項不同的分析,只要他們能夠后續(xù)比較分析方法并協(xié)同努力,那么最終成果將優(yōu)于任何單一項目。

在數(shù)據(jù)科學(xué)實踐當(dāng)中,我們必須牢記:與任何其他領(lǐng)域一樣,數(shù)據(jù)科學(xué)并非沒有缺陷,我們也不應(yīng)該毫無保留地對其給予信任。因此,負責(zé)任的數(shù)據(jù)科學(xué)研究態(tài)度,應(yīng)該是每隔一段時間展示分析結(jié)果、嘗試找出結(jié)果中的謬誤、將自己的結(jié)果與其他類似工作進行比較,并在展示結(jié)果時充分與現(xiàn)實情況進行對比。

正是由于數(shù)據(jù)科學(xué)的一大前提在于人類的判斷力,因此我們必須意識到:

人員與溝通技巧至關(guān)重要

盡管看起來像是廢話(畢竟,有哪個領(lǐng)域能夠接受負面的溝通效果呢?),但我每天都在提醒自己,必須要切實有效地向來自各個技術(shù)領(lǐng)域的人們傳遞機器學(xué)習(xí)知識。單純了解機器學(xué)習(xí)術(shù)語還遠遠不夠,我們需要能夠與擁有不同理解的人們溝通,并告知他們需要知曉的種種細節(jié)。

(舉個例子,有些朋友非常了解我的工作內(nèi)容,能跟我進行長時間的機器學(xué)習(xí)細節(jié)討論;但也有些人認為我是「管電腦的」……)

以我自己為例,機器學(xué)習(xí)決策并不能替代人工選擇(即使有時準確率更高),畢竟最終要由建筑工程師來決定哪些建議值得采納。事實上,自主建筑運營的全面實現(xiàn),也許要比無人駕駛汽車更為困難。單純建立模型、證明模型準確性并將結(jié)果提交給客戶,當(dāng)然還遠遠不夠。數(shù)據(jù)科學(xué)家還需要玩轉(zhuǎn)一片混亂的社交互動場景。如果無法說服他人,那么即使開發(fā)出了最強大的機器學(xué)習(xí)模型,它也不可能發(fā)揮任何實際作用。

我日常工作中最常規(guī)的組成部分,就是面向內(nèi)部與外部小組通過文章與案例演示來解釋分析方法,了解我們的客戶如何制定當(dāng)前決策,并與行業(yè)內(nèi)專家交談以將知識轉(zhuǎn)化為數(shù)據(jù)科學(xué)系統(tǒng)。大學(xué)里肯定不教這些內(nèi)容,課堂上我們總是認為科學(xué)家可以始終高舉完美客觀的大旗——但現(xiàn)實工作是位好老師,狠狠地擊碎了我的幼稚夢想。

即使在解釋了計算機如何做出決策之后,客戶有時候仍然不愿意采納,這是因為人類絕不是純理性的動物。在呈現(xiàn)出客觀層面更好的選擇時,人們可能出于習(xí)慣、不信任、熟悉或者某些誤導(dǎo)性信息等理由,而下意識到選擇其他選項。

我們不妨以外出兜風(fēng)例具體聊聊這個問題:人們似乎會出于邏輯角度選擇兩點之間距離更長的路徑。為什么?因為沿途風(fēng)景更漂亮。天真的數(shù)據(jù)科學(xué)家們當(dāng)然會推薦模型給出的最短路線,但真正了解客戶的數(shù)據(jù)科學(xué)家們會意識到,他們想要旅途中充分享受與大自然的親密接觸。

同樣的,有時候客戶不愿使用最佳機器學(xué)習(xí)預(yù)測方案,是因為準確性并不是唯一的考量因素。例如,我們預(yù)測了建筑工程師開始為建筑物供暖的理想時間點,但不少工程師仍然會更早打開設(shè)備,因為他們不希望租戶感到溫度不適。這當(dāng)然不合理(我們會按時提出建議,確保在租戶抵達室內(nèi)時將溫度提升至正確的水平),但除非能夠把人徹底從決策流程中剔除出去,否則需要做出調(diào)整的永遠只能是計算機系統(tǒng)這一方。

也許除了計算機科學(xué)課程之外,我們還可以參加一些社會學(xué)課程來了解人類同胞的想法。

使用標準工具,同時放慢新技術(shù)的采用速度

我們怎樣才能保證算法當(dāng)中不存在任何錯誤?首先,從 sklearn 上導(dǎo)入模型,這比自己編寫靠譜得多。除非大家是在搞前沿研究,否則真的沒什么理由自己動手編寫機器學(xué)習(xí)模型。相反,最好是使用經(jīng)過廣泛測試及使用的公開庫提供的函數(shù)(我稱其為標準工具)來完成任務(wù)。

在最近的一條推文中,我提到差勁的數(shù)據(jù)科學(xué)家總愛自主編寫算法,而優(yōu)秀的科學(xué)家們則選擇從標準庫處導(dǎo)入算法。這里面當(dāng)然有戲謔的成分,但我仍然堅持這樣一條原則:相較于自主開發(fā)的代碼,使用經(jīng)過廣泛測試的開源庫中的代碼,幾乎永遠是更加高效可靠的作法。

這種標準工具優(yōu)先的邏輯不僅適用于機器學(xué)習(xí)模型。事實上,我們希望對數(shù)據(jù)集執(zhí)行的幾乎一切操作,都能在 pandas 中找到對應(yīng)的實現(xiàn)方案(假設(shè)您使用 Python),所以不妨優(yōu)先從這里入手。同樣的,與統(tǒng)計、繪圖、測試、調(diào)度、任務(wù)部署以及機器學(xué)習(xí)流水線內(nèi)大部分其他操作相關(guān)的標準庫也所在多有,請善加利用。

我現(xiàn)在這份工作,原本是由兩位擁有博士學(xué)位的數(shù)據(jù)科學(xué)家負責(zé)的。作為學(xué)術(shù)精英,他們一直渴望發(fā)明自己的數(shù)據(jù)結(jié)構(gòu)、指標、算法、文件加載機制等等(可能是為了證明自己的學(xué)位貨真價實吧……),但這也帶來了一大堆無法理解的混亂代碼。我入職后的前六個月,主要工作就是用三個 import 語句替換這些上百行的腳本,F(xiàn)在,我可能非常驕傲地向大家宣布,我已經(jīng)成為這套機器庫出色的負貢獻者。

 

 

此外,不要盲目采用新近發(fā)布的庫 / 技術(shù) / 框架 / 數(shù)據(jù)庫。像 SQL 數(shù)據(jù)庫、sklearn 機器學(xué)習(xí)以及 pand 數(shù)據(jù)操作這樣的標準工具雖然古老而且無聊,但卻能夠正常運作——而且經(jīng)過了大范圍的測試與可靠性評估。別搞新官上任三把火那種沒用的事情,雖然起初在熱情的支持下吐故納新似乎很有樂趣,但在經(jīng)歷一系列錯誤與文檔匱乏問題的折磨之后,大家很快就會筋疲力盡。

新興技術(shù)往往只是媒體頭條的跟蹤對象,但對于實際從業(yè)的人員及企業(yè)幾乎沒有任何即時影響。不少年輕一代的技術(shù)人員對我這種觀點持反對意見,但相較于那些新鮮出爐但還沒有證明過自己的技術(shù),我確實更偏愛那些無聊卻已經(jīng)非常成熟的方案。在內(nèi)部,我們的工程團隊對庫版本的升級問題進行過長時間的爭論;最終,我們認為如果沒有明顯的優(yōu)勢或者需求,我們不會單純因新版本的發(fā)布而升級。要向機器學(xué)習(xí)項目中添加庫之前必須經(jīng)過嚴格證明,因為新庫的加入意味著我們需要管理的依賴項也將同步增加。

生命力最頑強的企業(yè),恰恰就是那些安于平凡且步伐穩(wěn)健的企業(yè)(例如 Caterpillar);而那些行動迅速,而且總是顯得“酷酷”的初創(chuàng)公司則往往在幾年之內(nèi)就會煙消云散。最強大的機器學(xué)習(xí)系統(tǒng)絕不是塞滿了尖端技術(shù)的工具展柜,而是久經(jīng)考驗、以數(shù)據(jù)科學(xué)標準工具為基礎(chǔ)的可靠小背包。

利用外部簡單性,隱藏數(shù)據(jù)科學(xué)的內(nèi)部復(fù)雜性

計算機非常擅長處理人類幾乎無法應(yīng)對的大規(guī)模數(shù)字。為了有效將計算機與人類的長處結(jié)合起來,我們應(yīng)當(dāng)利用計算機分析大型數(shù)據(jù)集,且只向決策者展示其中最關(guān)鍵的幾項數(shù)值。數(shù)百萬數(shù)字進,幾個數(shù)字出。復(fù)雜模型在內(nèi),可行性建議在外。

過去一年以來,我開發(fā)出一種理論,即圖表中的數(shù)據(jù)點越多(黃金數(shù)據(jù)點大概是……7?),結(jié)論就越是缺乏實際意義。人類確實沒有能力準確地分析復(fù)雜定量圖。熱圖雖然很酷,但有人能利用包含 1000 個數(shù)據(jù)點的熱圖(相較于只有 5 個數(shù)字的柱狀圖)做出關(guān)鍵性決策嗎?不存在的。

 

 

我是那種喜歡細讀數(shù)字并了解機器學(xué)習(xí)模型細節(jié)的人,但我也很清楚,大多數(shù)朋友其實并不想一下子被數(shù)據(jù)所吞沒?蛻艉椭贫Q策的領(lǐng)導(dǎo)者們想聽重點、聽干貨,一定是這樣。換句話說,內(nèi)容越簡練,圖表的展示效果就越好。

 

 

外部簡單性這一論點,并不代表單純使用線性模型。數(shù)據(jù)科學(xué)往往只涉及復(fù)雜的算法與高技術(shù)培訓(xùn)性操作,因此對于非技術(shù)人員而言,必須確保數(shù)據(jù)科學(xué)擁有一套平易近人的“外殼”。不過需要注意的是,有些數(shù)據(jù)科學(xué)模型太過復(fù)雜,以至于我們自己可能都不太理解。那么,有必要以無法解釋為代價,通過混合模型提高那么一丁點精度嗎?答案恐怕是否定的。

為了用外部簡單性掩蓋內(nèi)部復(fù)雜性,我們應(yīng)當(dāng)使用有助于描述模型決策的工具。SHAP 值就是一種非常實用的技術(shù),當(dāng)然大家也可以選擇其他方法。為了解釋建筑物的最佳運作啟動時間,我們對所有特征(包括工程化特征)采用 SHAP 值,并將其組合為人類能夠理解的特征組——例如天氣與建筑物內(nèi)部條件。我們采用復(fù)雜的機器學(xué)習(xí)算法,SHAP 值的介入能夠簡化算法幫助我們理解,并有必要在向客戶展示產(chǎn)品之前借助自己的專業(yè)知識做出進一步簡化。

簡化定量信息的一種可行方法,是準備一份單純以數(shù)字為起點的報告,而后根據(jù)需要慢慢添加其他數(shù)字(或者圖形)。這種累加的方法相當(dāng)于由少而多,確保演示與報告內(nèi)容當(dāng)中不存在無關(guān)緊要的統(tǒng)計數(shù)據(jù)——與之對應(yīng)的,就是由多而少,準備大量圖表而后逐一刪除。請記住,人不是計算機,所以千萬不要把只適合計算機的展示方式擺到人類面前。

“名不副實”綜合癥

再加一點:每個人都或多或少會有“名不副實”綜合癥;自省是對的,但不要被這種情緒所支配。

最后,作為數(shù)據(jù)科學(xué)(也包括其他專業(yè))中的一個重要問題,我想跟大家聊聊:不要讓“名不副實”焦慮或者偶爾犯下的錯誤,占據(jù)你的全部情緒。

每個人都會產(chǎn)生一種感覺,認為自己沒有資格負擔(dān)起目前的工作,或者終究會因無法勝任而被“曝光”。在這里我要勸勸大家,不要為此過度煩惱,畢竟并不是只有我們存在這樣的想法,而且學(xué)習(xí)新事物與產(chǎn)出的結(jié)果同樣重要。另外,如果您才剛剛邁入數(shù)據(jù)科學(xué)圈,那么也可以安心享受一波新手紅利(例如尋找新的方法來解決問題)。另外,雖然身邊的人們可能非常成功、甚至擁有輝煌的成功,但請相信,他們的成長道路上同樣布滿荊棘(這是種幸存者偏差)。

![]( https://static001.infoq.cn/resource/image/cb/82/cbc042e4c441897af52ee32d17825482.png ) 人們有不同的知識領(lǐng)域

即使是表現(xiàn)最出色的人們,在初學(xué)者階段也曾犯下、而且未來還會繼續(xù)犯下種種錯誤。錯誤并不意味著我們沒有資格擔(dān)當(dāng)數(shù)據(jù)科學(xué)家或者計算機程序員;相反,這只意味著我們有機會進一步學(xué)習(xí),了解如何做得更好。在數(shù)據(jù)科學(xué)領(lǐng)域,我們需要更多的人加入進來,我也一直擔(dān)心總是把數(shù)據(jù)科學(xué)家描述成高不可攀的角色,會令一些非常優(yōu)秀的潛在人才望而生畏。這是種誤解,因為我們必須要投向行業(yè)才能獲得某一領(lǐng)域中的專業(yè)知識,如果不邁出第一步,那么知識永遠無從談起。事實上,數(shù)據(jù)科學(xué)是個非常開放的學(xué)科,而且不存在進入這一領(lǐng)域的“典型”途徑?偠灾,如果大家還在為自己的教育背景對不上或者缺少專業(yè)知識而苦惱,那么好消息是——這完全是種誤區(qū),數(shù)據(jù)科學(xué)絕不是只適合少數(shù)精英的專業(yè)方向。

總結(jié)

在數(shù)據(jù)科學(xué)領(lǐng)域工作了一年之后,我最初對于數(shù)據(jù)科學(xué)的無限樂觀,已經(jīng)被謹慎的熱情所取代。機器學(xué)習(xí)確實能夠很好地解決一小部分問題(比人類更好),但卻無法搞定所有人為錯誤。我們必須認識到這一領(lǐng)域的局限性,避免對數(shù)據(jù)科學(xué)的過度炒作,踏踏實實做出承諾并成功踐行,才是發(fā)展的正道。我們同時需要強調(diào)的是,機器學(xué)習(xí)可以帶來令人印象深刻的結(jié)果,這也是不爭的事實。最后,最好的機器學(xué)習(xí)系統(tǒng)應(yīng)該通過提高工作效率的方式協(xié)助人類,而非完全取代人類。

原文鏈接:

https://towardsdatascience.com/lessons-from-a-year-in-the-data-science-trenches-f06efa6355fd

標簽: 數(shù)據(jù) 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:一位數(shù)據(jù)科學(xué)家的獨白

下一篇:疫情期間自我提升指南:十大資源,為你鋪平數(shù)據(jù)科學(xué)家之路!