從數(shù)據(jù)科學畢業(yè)生到業(yè)界的數(shù)據(jù)科學家的轉(zhuǎn)型,需要很多經(jīng)驗和行業(yè)知識打基礎(chǔ)。
學校里教的數(shù)據(jù)科學和實際工作中的數(shù)據(jù)科學的差距,往往讓很多剛畢業(yè)躊躇滿志的職場菜鳥陷入迷茫。
事實是,在學校里你可以把模型做得天花亂墜,但是在公司里你的老板需要用業(yè)績擔保為你的研究結(jié)果背書,這么一想就不難理解為什么在實際操作層面,公司的模型會更偏向保守,而一些套路很深的職場老鳥會意味深長地說“簡單的才是可用的”。
從數(shù)據(jù)科學畢業(yè)生到業(yè)界的數(shù)據(jù)科學家的轉(zhuǎn)型,需要很多經(jīng)驗和行業(yè)知識打基礎(chǔ)。本文作者Rachael Tatman是Kaggle新上線的機器學習和數(shù)據(jù)分析課程的講師之一,最神奇的是她的背景:威廉瑪麗學院(美國第二古老的大學)英語本科、華盛頓大學語言學博士,現(xiàn)任Kaggle數(shù)據(jù)分析師。讓我們看看她都給數(shù)據(jù)職場新人提了哪些建議。
數(shù)據(jù)科學與研究生學位
首先要說明一點:想成為一名數(shù)據(jù)科學家,并不意味著你必須擁有一個研究生學位。一個教你如何做研究的學位并不是必須的,除非你在做尖端的機器學習研究(老實說,包括我在內(nèi)的99.9%的數(shù)據(jù)科學家并不是在做這件事!)。任何一個企圖神話這份工作的人都可能只是想讓你花錢讀一個學位。
讀研期間,我確實學到了許多有價值的技能。我學會了如何處理混亂的數(shù)據(jù),問對的問題,在不同的場景下選擇適合的數(shù)據(jù)分析工具,為分析計算及機器學習編寫代碼,以及清晰地交流技術(shù)概念等等。這些是每一個數(shù)據(jù)科學家必要的技能。
但數(shù)據(jù)科學家需要的技能并不僅僅是這些。我從學校到工作崗位這段時間,經(jīng)歷過的最有挑戰(zhàn)的兩個階段:一是明確我缺少的技能是什么,二是明白如何快速地掌握它們。
如果你現(xiàn)在的境遇與我當初相似,我的經(jīng)驗應該會對你很有幫助。下面列出的四項是我在研究生階段未學到的技能,以及一些如何學習它們的實用技巧。
SQL
據(jù)我了解,大多數(shù)以從事數(shù)據(jù)科學為業(yè)的研究生都熟悉R或Python(或?qū)烧叨己苁煜?)。與此同時,卻只有很少一部分人熟悉SQL。那么這可能會是當你準備進入數(shù)據(jù)科學行業(yè)工作時面臨的一個問題:在Python和R之后,SQL是數(shù)據(jù)科學中使用最廣泛的第三種工具(而你很可能對它的掌握程度并不夠)。
SQL(通常讀作“sequel”)是一種與數(shù)據(jù)庫交互的編程語言。SQL雖然在學術(shù)研究中用的不多,但在行業(yè)中卻應用十分廣泛。好在SQL的基本知識比較簡單并且有很多學習資源,上手并不難。
怎么學SQL:
選一門課。
網(wǎng)上有很多在線學習課程,包括可汗學院(Khan Academy),DataCamp,Stanford和Udemy。面授課程可能比較難找,但是如果你在本地的大學或社區(qū)大學有注冊,或報名了編程訓練營,也有機會找到。
開發(fā)創(chuàng)建一個SQL案例集。
用查詢實例來說明你在真實數(shù)據(jù)庫上的操作能力是證明你熟悉這種語言的好辦法。一種方法是在Kaggle的BigQuery數(shù)據(jù)集上編寫核心程序(kernels,即托管的R或Python筆記本)。我整理了一份幫你快速入門的指南,HackerRank和SQLZoo上也有不少SQL的練習資源。
成為一名多面手
研究生院是很好的學習場所,日復一日的研究工作能幫助你拓展知識邊界。但隨著項目深入,你會發(fā)現(xiàn)你需要鉆研某一特定領(lǐng)域,且會越來越細分。最終你會成為最了解這一細分領(lǐng)域的人。這很好,學術(shù)研究就是會讓你成為這樣的又“精”又“專”的人。
然而數(shù)據(jù)科學家卻不是這樣開展工作的。除非你足夠幸運,能夠一直在與你學術(shù)論文主題匹配的領(lǐng)域中工作,否則,你會不斷接到你之前所研究領(lǐng)域之外,甚至還會有一些之前從未聞及的挑戰(zhàn)。所以你必須快速處理并不是自己專長領(lǐng)域的研究。
這里是一些成為多面手的小貼士:
閱讀學科之外的內(nèi)容。
學術(shù)學科傾向于使用專門特定的統(tǒng)計工具。例如,在社會語言學方面,我們更多的使用混合效應回歸(mixed-effects regression)來做工作,但其實還有很多其他的統(tǒng)計方法。在不同學科中進行閱讀會使你接觸了解到各種不同的技術(shù)和問題,并有助于你快速進入新的領(lǐng)域。
訓練自己分析新類型的數(shù)據(jù)。
數(shù)據(jù)科學家需要處理各種數(shù)據(jù)。你可能已經(jīng)在處理某一類型數(shù)據(jù)上有了豐富經(jīng)驗,但也需要考慮拓展其它類型數(shù)據(jù)的分析能力。你處理過時間序列數(shù)據(jù)嗎?文本數(shù)據(jù)呢?圖片數(shù)據(jù)呢?視頻數(shù)據(jù)呢?音頻數(shù)據(jù)呢?預訓練模型呢?或者關(guān)系數(shù)據(jù)庫?
找出你的知識與實際應用之間的差距,并嘗試就一些新的數(shù)據(jù)來源進行操作。Kaggle擁有各種來源超過10000個公共數(shù)據(jù)集,你還可以在Zenodo或Dataverse項上找數(shù)據(jù)。
和你所工作領(lǐng)域之外的人討論技術(shù)。
與自己工作領(lǐng)域之外的人就技術(shù)進行交流,不僅可以學到很多,同時也有機會去練習自己如何把技術(shù)給外行人講清楚,參與討論的雙發(fā)都會獲益良多。
源代碼管理/版本控制
我讀研的時候是學過源代碼管理的(得益于一個軟件技能學習網(wǎng)站(Software Carpentry))。源代碼管理的能力是非常有價值的,但是據(jù)我所知,我的很多同學對此并沒什么了解。
源代碼管理,也稱版本控制,是一種對單個集中式文檔或代碼庫進行管理及更改的方法。該方法的基本思路是,你可在任何副本上進行工作,且其修改都會使原件得到更新。這很益于單個項目的開發(fā)(它可以讓你回歸到實際工作的那個版本,并找到之前中斷的地方),對技術(shù)合作來說也十分必要。
怎樣學習使用版本控制:
在每個研究項目或課題中都使用版本控制方法。
我覺得這非常有必要。在做論文研究的整個過程中,版本控制多次救我于水火之中。
將GitHub用于個人項目(如果有的話)或可以分享的研究。
這件事可做可不做,但如果加入使用Github的團隊會很有益處。此外,活躍的GitHub配置文件是向潛在雇主展示工作流程化的一種好方式。
“夠用”就行
當你在學術(shù)環(huán)境中工作時,你確實需要確保一切都盡力完美。你的研究結(jié)果會被專家進行嚴格評估,如果通過的話,它會被永久地添加到學術(shù)文獻中。然而,在實際工作中,“馬上能用”往往比“最終會達到完美”要好得多。
我在實際工作中學到的第一批新術(shù)語之一是MVP,即“最小化可行產(chǎn)品”。這個想法是,當你的東西足以滿足一部分與之交互的人的需求時,就把它與人們進行分享。在數(shù)據(jù)科學環(huán)境中,這意味著,你的數(shù)據(jù)不是必須要去回答每一個問題,也不是必須要使用最精準的模型。也許之后你可以對其進行更深入的分析或其他調(diào)整,但在項目達到“夠用”時你應該就準備好將其發(fā)布。
如何提高判斷“夠用”的能力:
練習判斷“目前已夠用”。
下一次你參與一個項目時,要經(jīng)常停下來,也許在你每天結(jié)束之前,考慮你是否已經(jīng)創(chuàng)造了一些有價值的東西(很可能有!)。花點時間練習如何描述你已經(jīng)完成了什么有用或有趣的事情。
考慮對研究中間階段的分享。
可以的話,考慮在博客上或?qū)嶒炇业耐路窒砟愕南乱粋€研究項目的中間階段。研究可能并非完美,但這不也是你研究中的一部分嗎?想想在數(shù)據(jù)收集過程中,你學到了什么值得分享的東西?你想想自己做了什么是已經(jīng)“夠用”的,別人可能會覺得它很有價值的東西?
以上便是四種我在研究生學校沒學到,但現(xiàn)在每天工作中都會或多或少用到的核心技能。從事數(shù)據(jù)工作的同行們,你們畢業(yè)后,要利用一切可以學習這些技能的機會!