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

我在數據科學前線工作這一年

2020-01-15    來源:raincent

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

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

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

生產層面的數據科學,總體屬于計算機科學范疇

在被問及工作當中最困難的部分時,我總會首先強調一點——生產層面的數據科學,不屬于機器學習。畢竟我們平時接觸的“機器學習”基本都是這個樣子:

 

 

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

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

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

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

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

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

數據科學仍是一種高度主觀的學科

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

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

數據收集: 我們需要收集什么數據?使用什么傳感器?要調查誰?如何表達我們的問題?

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

建模: 我們應該使用哪些超參數?模型的復雜度應該控制在怎樣的水平?

驗證: 我們使用哪些評估指標?驗證流程該如何設計?理想的結果應該擁有怎樣的性能表現?

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

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

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

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

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

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

人員與溝通技巧至關重要

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

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

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

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

利用外部簡單性,隱藏數據科學的內部復雜性

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

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

 

 

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

 

 

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

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

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

“名不副實”綜合癥

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

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

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

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

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

總結

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

原文鏈接:

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

標簽: 數據 

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

上一篇:為什么數據和分析是數字化轉型的關鍵?

下一篇:數據科學家需要知道的5種圖算法