
作者 | William Koehrsen
翻譯 | Mika
本文為 CDA 數(shù)據(jù)分析師原創(chuàng)作品,轉(zhuǎn)載需授權(quán)
如果現(xiàn)代工作面試教會了我們什么,那就是關(guān)于“你最大的弱點(diǎn)是什么?”這個問題,正確答案是“我工作太努力了?!憋@然,說出自己的弱點(diǎn)是很可笑的。雖然在個人簡歷中列出弱點(diǎn)不太好,但是如果不承認(rèn)自己的不足,我們就無法采取措施改善它們。
做出改進(jìn)的方法很簡單:
明確現(xiàn)在的位置:找出弱點(diǎn)
想變成什么樣:制定實(shí)現(xiàn)的計(jì)劃
執(zhí)行計(jì)劃:一步步改進(jìn)
我們很少能跨越第一步,特別是對于在技術(shù)領(lǐng)域工作的人群。我們埋頭苦干,不斷工作,使用已掌握的技能,而不是獲得哪些能讓我們工作更輕松或能帶來新機(jī)會的新技能。自我反省,客觀地評估自己,這似乎是一個陌生的概念。但若能夠退后一步,弄清我們哪些方面能做得更好,從而在該領(lǐng)域取得進(jìn)步,這是至關(guān)重要的。
考慮到這一點(diǎn),我試著客觀地評價(jià)自己,并總結(jié)了目前自己的三個弱點(diǎn),改善以下這幾點(diǎn)能讓我成為更好的數(shù)據(jù)科學(xué)家:
軟件工程
擴(kuò)展數(shù)據(jù)科學(xué)
本文中我列出這些弱點(diǎn)主要的目的在于:首先,我非常想提高自己的能力,通過列出自己的不足以及如何解決它們,希望能夠激勵自己繼續(xù)學(xué)習(xí),完成目標(biāo)。
其次,我希望鼓勵其他人思考自己有哪些沒掌握的技能,以及該如何獲取這些技能。
最后,我想告訴你,成為出色的數(shù)據(jù)科學(xué)并不需要做到無所不知。關(guān)于數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的知識是無線的,你能夠掌握的是有限的。我常常聽到初學(xué)者抱怨,要掌握的知識太多了,我給出的建議就是:從基礎(chǔ)開始,你并不需要掌握所有內(nèi)容。
只有極少的數(shù)據(jù)科學(xué)家能夠掌握全部知識
對于每個弱點(diǎn),我都列出了具體的問題,以及我目前在做什么進(jìn)行改進(jìn)。發(fā)現(xiàn)自己的不足很重要,但制定改進(jìn)計(jì)劃也同樣重要。學(xué)習(xí)一項(xiàng)新技能需要時(shí)間,但計(jì)劃好一步步的具體步驟會大大增加你成功的幾率。
1. 軟件工程
在大學(xué)時(shí)進(jìn)行我的第一個數(shù)據(jù)科學(xué)項(xiàng)目后,我開始試著避免一些數(shù)據(jù)科學(xué)方法中的壞習(xí)慣。其中包括編寫僅運(yùn)行一次的代碼,缺少文檔,沒有一致性且難閱讀的代碼,硬編碼特定值等。這些都是寫論文所帶來的,為了寫一篇論文,開發(fā)針對特定數(shù)據(jù)集且只能運(yùn)行一次的解決方案。
其中一個典型的例子是,我們有個項(xiàng)目使用建筑能源數(shù)據(jù),最初每隔15分鐘獲取一次數(shù)據(jù)。當(dāng)我們把時(shí)間增加為20分鐘時(shí),數(shù)據(jù)管道完全崩潰了,因?yàn)樵S多地方已明確將時(shí)間編為15分鐘。我們不能進(jìn)行簡單的查找和替換,因?yàn)樵搮?shù)被設(shè)定為多個名稱,如`electricity_interval` `timeBetweenMeasurements`還有`dataFreq`。我們當(dāng)中沒有人想過讓代碼更易閱讀或能夠靈活改變輸入。
相比之下,從軟件工程的角度來看,代碼必須使用大量不同的輸入進(jìn)行測試,在現(xiàn)有框架內(nèi)工作,并遵守編程標(biāo)準(zhǔn),以便其他開發(fā)人員能夠理解。盡管我的初衷是好的,但我偶爾會像數(shù)據(jù)科學(xué)家那樣寫代碼,而不是像軟件工程師那樣?,F(xiàn)在我正在訓(xùn)練自己像計(jì)算機(jī)科學(xué)家一樣思考。
我在做什么
學(xué)習(xí)技能沒有比練習(xí)更好的方法。幸運(yùn)的是,在我目前的工作中,我能夠?yàn)閮?nèi)部工具和開源庫(Featuretools)做出貢獻(xiàn)。這迫使我學(xué)習(xí)了很多技能,包括:
編寫單元測試
遵循編碼風(fēng)格
編寫接受更改參數(shù)的函數(shù)
徹底記錄代碼
讓他人檢查代碼
重構(gòu)代碼,使其更簡單、更易于閱讀
對于還未工作的數(shù)據(jù)科學(xué)家,你也可以通過參與開源項(xiàng)目獲得這些經(jīng)驗(yàn)。除此之外,你還可以通過查看GitHub上流行庫的源代碼。
像軟件工程師一樣思考需要改變思維模式,但做到這一點(diǎn)并不難。例如,每當(dāng)我發(fā)現(xiàn)自己在Jupyter Notebook中復(fù)制和粘貼代碼并更改一些值時(shí),我就會停下來,并意識到從長遠(yuǎn)的角度看用函數(shù)會更高效。
總有需要改進(jìn)的地方(在Sublime Text 3中使用pylint)
我還想研究計(jì)算機(jī)科學(xué)的許多其他方面,例如編寫有效的實(shí)現(xiàn),而不是用蠻力方法(例如使用矢量化而不是循環(huán))。同時(shí)要注意想一下子全部改變是不顯示的,這也是我為什么專注于一些實(shí)踐,并將其融入到我的工作流程中。
雖然數(shù)據(jù)科學(xué)自成一體,但從業(yè)者仍可以通過借鑒軟件工程等領(lǐng)域的最佳實(shí)踐從中受益。
2. 擴(kuò)展數(shù)據(jù)科學(xué)
雖然你可以自學(xué)數(shù)據(jù)科學(xué)中的所有內(nèi)容,但要將其應(yīng)用到實(shí)踐中還是存在一些限制。一個是難以將分析或預(yù)測模型擴(kuò)展到大型數(shù)據(jù)集。我們中大多數(shù)人無法訪問計(jì)算集群,也不想為一臺個人超級計(jì)算機(jī)掏錢。這意味著當(dāng)我們學(xué)習(xí)新方法時(shí),我們傾向于將它們應(yīng)用于小型且表現(xiàn)良好的數(shù)據(jù)集。
然而在現(xiàn)實(shí)情況中,數(shù)據(jù)集并不符合一定的大小或干凈程度,你需要用不同的方法來解決問題。首先,你可能需要打破個人計(jì)算機(jī)的安全限制,使用遠(yuǎn)程實(shí)例(例如通過AWS EC2)甚至多臺計(jì)算機(jī)。
在學(xué)習(xí)數(shù)據(jù)科學(xué)時(shí),我嘗試在EC2機(jī)器上練習(xí),這有助于讓我熟悉命令行,但是,我仍然沒有解決當(dāng)數(shù)據(jù)集大于機(jī)器的內(nèi)存情況。最近,我意識到這一點(diǎn)限制了我的前進(jìn),是時(shí)候?qū)W習(xí)如何處理更大數(shù)據(jù)集的了。
我在做什么
即使不在計(jì)算資源上花費(fèi)大量金錢,就可以實(shí)踐超出內(nèi)存限制的數(shù)據(jù)集的處理方法。其中包括每次迭代數(shù)據(jù)集的一部分,將大型數(shù)據(jù)集分成較小的數(shù)據(jù)集,或者使用Dask這樣的工具來處理大數(shù)據(jù)。
我目前采用的方法是將數(shù)據(jù)集分為多個子集,開發(fā)能夠處理每個部分的管道,然后使用Dask或Spark,與PySpark并行地運(yùn)行管道中的子集。這種方法不需要用到超級計(jì)算機(jī)或集群,你可以在個人計(jì)算機(jī)上并行操作。
此外,由于像Kaggle等數(shù)據(jù)存儲庫,我能夠找到一些大型的數(shù)據(jù)集,并查看其他數(shù)據(jù)科學(xué)家的處理它們的方法。我已經(jīng)學(xué)到了很多有用的技巧,例如通過更改數(shù)據(jù)框中的數(shù)據(jù)類型來減少內(nèi)存消耗。這些方法有助于更有效地處理任何大小的數(shù)據(jù)集。
雖然我還沒處理過TB級的數(shù)據(jù)集,但這些方法幫助我學(xué)習(xí)了處理大數(shù)據(jù)的基本方法。對于最近的一些項(xiàng)目,我能夠運(yùn)用目前學(xué)到的技能對在AWS上運(yùn)行的集群進(jìn)行分析。希望在之后的幾個月,我能逐步提高處理數(shù)據(jù)集的大小。
美國國會圖書館“只有”3PB的材料
雖然人工智能在繁榮和蕭條中更迭,但是它最近在計(jì)算機(jī)視覺、自然語言處理、深度強(qiáng)化學(xué)習(xí)等領(lǐng)域的成功應(yīng)用讓我確信基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)不是曇花一現(xiàn)。
與軟件工程或擴(kuò)展數(shù)據(jù)科學(xué)不同,我目前的職位不需要用到深度學(xué)習(xí),例如隨機(jī)森林等傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)已經(jīng)能夠解決所有問題。但是,我認(rèn)識到并非每個數(shù)據(jù)集都是結(jié)構(gòu)整齊的,而神經(jīng)網(wǎng)絡(luò)是目前處理文本或圖像項(xiàng)目的最佳選擇。
探索和利用的權(quán)衡在強(qiáng)化學(xué)習(xí)和你的生活中的應(yīng)用
在深度學(xué)習(xí)中有許多不同的子領(lǐng)域,很難弄清楚哪些方法最終會勝出。盡管如此,我認(rèn)為熟悉該領(lǐng)域能夠讓人們能夠處理更廣泛的問題。
我在做什么
我學(xué)習(xí)深度學(xué)習(xí)的方法與成為數(shù)據(jù)科學(xué)家的方法相同:
閱讀著重部署應(yīng)用的書籍和教程
在實(shí)際項(xiàng)目中練習(xí)技術(shù)和方法
通過寫作分享和解釋我的項(xiàng)目
在學(xué)習(xí)一項(xiàng)技術(shù)時(shí),最有效的方法是邊做邊學(xué)。對我來說,這意味著不是從基礎(chǔ)的基礎(chǔ)理論開始,而是通過找出如何實(shí)現(xiàn)解決問題的方法。這種自上而下的方法意味著我更重視關(guān)于動手的書籍,即當(dāng)中包括許多代碼例子。
對于深度學(xué)習(xí),我主要看了以下三本書:
Deep Learning Cookbook,作者:Douwe Osinga
Deep Learning with Python,作者: Francois Chollet
Deep Learning,作者:Ian Goodfellow、Yoshua Bengio、Aaron Courville
前兩本重點(diǎn)是用神經(jīng)網(wǎng)絡(luò)構(gòu)建實(shí)際解決方案,而第三本重點(diǎn)是深入理論。當(dāng)閱讀有關(guān)技術(shù)主題的書籍時(shí),你需要更主動參與其中,盡可能試著書中的代碼。像前兩本提供代碼例子的書籍很棒,我經(jīng)常會在Jupyter Notebook中逐行輸入代碼,弄清當(dāng)中的原理。
此外,我不僅試著復(fù)制這些代碼,還會將它們用于自己的項(xiàng)目。這方面的一個應(yīng)用是我最近構(gòu)建的圖書推薦系統(tǒng),該系統(tǒng)是根據(jù)Deep Learning Cookbook的類似代碼改編的。從頭開始創(chuàng)建自己的項(xiàng)目可能會令人生畏,但這也是提升自己最好的方法。
最后,學(xué)習(xí)技術(shù)最有效方法之一是教別人。只有當(dāng)我試著用簡單的術(shù)語向其他人解釋時(shí),我才能我完全理解這個概念。隨著學(xué)習(xí)深度學(xué)習(xí)的每個知識,我將寫下了,分享當(dāng)中的技術(shù)實(shí)現(xiàn)細(xì)節(jié)和概念性解釋。
教學(xué)是最好的學(xué)習(xí)方式之一,我打算將其作為學(xué)習(xí)深度學(xué)習(xí)的一個重要組成部分。
結(jié)語
羅列自己的弱點(diǎn)可能會有點(diǎn)奇怪,但這能讓我成為更好的數(shù)據(jù)科學(xué)家。而且,我發(fā)現(xiàn)很多人,包括雇主們,會對你坦誠自己的弱點(diǎn)并探討如何解決它們留下深刻印象。
缺乏某些技能并不是缺點(diǎn)——真正的缺點(diǎn)是假裝你什么都懂,而且沒有想改進(jìn)的意思。
通過發(fā)現(xiàn)我在數(shù)據(jù)科學(xué)方面的弱點(diǎn):軟件工程,擴(kuò)展分析/建模,深度學(xué)習(xí),我的目標(biāo)是提高自己,鼓勵其他人思考自己的弱點(diǎn)。要成為成功的數(shù)據(jù)科學(xué)家,你并不需要什么都懂。雖然反思自己的弱點(diǎn)可能是痛苦的,但學(xué)習(xí)是愉快的:最有成就感的事情莫過于,經(jīng)過一段時(shí)間的持續(xù)學(xué)習(xí)后,你會發(fā)現(xiàn)自己比剛開始時(shí)已經(jīng)懂了很多。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10