編者注:作者Alec Smith是數據科學領域中資深HR,之所以寫這篇文章是因為經常被問到一個問題:“如何才能獲得一份數據科學家的職位?” 不僅這個問題經常被問引起了注意,另外問這個問題的人不同的背景也非常很令人感興趣。作者曾經和以下這些職業的人有過類似對話:軟件工程師、數據庫開發者、數據架構師、保險精算師、數學家、學術界人士(不同領域)、生物學家、天文學家、理論物理學家—我還能接著往下數。通過和他們的這些談話,作者發現在這之中有很大的誤解存在,很多人都非常困惑——為了闖入這個領域的話,他們需要做些什么?
作者決定深入調查這個項目,同時提供一個任何想要加入商業計算機科學都能受益的干貨資料——無論你是剛剛開始,或者早已點滿所有的技能只是沒有相關的業界經驗。因此我打算主要回答這兩個概覽性的問題:
數據科學需要哪些技能?如何才能學會這些技能?
從求職市場的角度來看的話,怎樣做才能最大化在數據科學崗位上被錄用的機會?
你可能會疑惑,憑什么我能回答這些問題?
因為我每天都喝數據科學家打交道,并且作為一個資深的HR,我需要了解相關職業道路,怎樣才能成為一名優秀的數據科學家,以及雇主期望能招到哪一種員工。因此對于這件事我還是相當了解的。但是我也想直接找到那些沿著這條路走下來的人,所以我以不同背景的數據科學家開始,期待能發掘到不同的東西。這一次我找到了一個前軟件工程師、前天體物理學家、甚至還有一個前粒子物理學家(這令我非常激動,因為他曾經親身參與過21世紀以來最重大的科學突破之一)。
第一章:什么是數據科學?
你已經下定決心要做一名數據科學家了,很好你已經開始了。但是現在你有了另外一種選擇:你想做哪一種數據額科學家呢?因為(認識到這個很重要)雖然數據科學被承認是一種職業已經有很多年了,但是有關于它到底是什么還沒有一個大家都認可的定義。
在現實生活,“數據科學家”這個詞可以指代非常廣泛的工種,因此它存在很多種形式,考慮到工業界以及商業界各種需求的不同,還有問題中目標與輸出角色的不同。因此,在某些方面擁有技能的話比其他要更好一些,這就是為什么通向數據科學的路徑是不相同的,可以通過多種領域如統計、計算機科學與其他科學學科來實現。
目的是決定數據科學形式類別的最大因素,這也與相應的A類以及B類相關聯。廣義上來說,分類可以總結如下:
面向人類的數據科學(A類),舉例:分析支持以證據為基礎的決策
面向軟件的數據科學(B類),舉例:智能推薦系統,如Netflix和Spotify
當這個領域越來越成熟之后,我們可以見到這些定義會愈加完善,在這里我們也要介紹我們第一個專家:Yanir Seroussi,Yanir目前是Car Next Door的首席數據科學家。
探討職位頭銜
在我們深入研究之前,值得花一點時間來反思“數據科學”中的“科學”,因為在某種意義上,所有的科學家都是數據科學家,因為他們都是與各種各樣的數據進行打交道。但要考慮到通常被認為是數據科學的這個行業,究竟是什么使它成為一門科學?這個問題很好!答案應該是:“科學方法”。考慮到科學的多學科性,科學方法是把這些領域結合在一起。
然而,業界中職位名稱貌似越來越寬松了,并不是所有的數據科學家都是真正的科學家。可以這樣問你自己:你能證明自己是一個科學家即便你的工作并不包含真正的科學呢?個人來說,我不認為“分析師”不能作為一個選項 ,或者其他的最合適的也能作為選項。但是這可能只是我個人意見,也許我最好稱自己為招聘科學家。
通過討論的方式我們將繼續探索,哪些領域的專業知識你還需要掌握(如果你還沒有的話)。
1. 解決問題
如果這個不是你清單中的首位的話,馬上去修改。所有科學核心都是解決問題:一個偉大的數據科學家也是一個偉大的問題解決者;就是這么簡單。需要更進一步的證明嗎,基本我在這個項目中碰到的每一個人(不管其背景和目前工作環境如何)都提到數據科學中最重要的因素就是解決問題。
很明顯,你需要有工具去解決問題,但是它們只是:工具。在這種情況下,即便是統計/機器學習技術也可以認為是你解決問題的工具。新的技術出現了,科技進步了。唯一不變的就是解決問題。
在某種程度上,你解決問題的能力是由天賦決定的,但是與此同時有且僅有一個方式來進行提高:那就是練習、練習、練習。在后面我們會回顧這部分內容,但是現在你只需要記住:你只能通過嘗試來掌握某件事情。
2. 統計/機器學習
看完上面的內容,似乎我輕視了統計和機器學習。不過在這里我們并不是討論一個強力的工具;它們是非常復雜的(而且在某種程度上是非常深奧的領域),如果你沒有專業的知識,你也不會很快地解決數據科學問題。
進一步對這些詞進行解釋說明,機器學習可以被認為是從人工智能/計算科學與統計學中發展起來的多學科領域。它通常被認為是人工智能的一個子領域,這是正確的,但是很重要的是要意識到沒有統計學的話就沒有機器學習(機器學習非常依賴統計算法來工作)。很長一段時間依賴統計學家都被機器學習所輕視,但是在這兩個領域的合作才造就了最近的發展(參見統計學習理論),順便提下高維統計學習只有在統計學家與機器學習結果合作時才會有良好的結果。
3. 計算
編程
對于我們來說只需要簡單的接觸程序就行,因為它應該是很直觀的:但是對數據科學家來說編程是必須要會的。設想下如果你不會編程的話,如何才能通過編寫一段獨特的算法來實現你的理論?又或者建立一個統計模型?
分布式計算
并不是所有事情都需要超級大的數據組,但是考慮到現代世界的情況,建議在工作中都加上大數據。簡而言之:單一計算機中的主要內存并不能實現大數據處理,如果你想同時在數百臺虛擬機中訓練模型的話,你需要能夠使用分布計算與并行算法。
軟件工程
對于A類數據科學而言,讓我明確一點:工程是一門獨立的學科。因此如果這是你想成為的數據科學家類型,你其實不需要成為一個工程師。然而,如果你想把機器學習算法轉化到應用中(即B類),那么你將需要一個強大的軟件工程基礎。
手動轉換數據
數據清理/準備是數據科學的重要內在組成部分。這將耗費你大多數時間。倘若你沒有成功地對數據集進行降噪(例如,錯誤賦值,非標準化分類等),將會對建模的準確性產生影響,最終導致產生錯誤的結論。因此,如果你尚未做好處理數據的準備,這將使你先前的知識積累顯得無關重要。
有一點是非常重要的且值得注意的,即在商業化組織中數據質量一直以來成為飽受爭議的話題,在數據儲存方面,許多業務又涉及到復雜的基礎事務需要處理。所以,如果你尚未準備好融入這個環境中,想要處理純粹的數據集,商業數據科學可能不是最適合你的選擇。
工具與技術
直至目前,你應當意識到,成為一名具備解決問題的能力的數據科學家相比于其他一切條件來講是重中之重:因為技術將不斷發生變化,能夠在相對較短的時間內得到掌握。但是,我們不能對其他影響因素置之不理,因而,能夠認清楚如今應用最廣泛的工具對于成為一名數據科學家是有用的。
讓我們先從編程語言談起,R與Python是兩種最常用的編程語言,因而,如果能夠選擇的話,希望你選用其中一種語言用于實驗研究。
尤其是在A類數據科學工作領域,具備能夠直觀地觀察數據的能力將會對與非技術型商業股東交流溝通產生重大影響。你可能具有最優的模型和最深刻的見解,但是如果不能有效地呈現/解釋這些研究成果,那又將有什么用呢?事實上,你運用什么工具實現數據直觀可視化并不重要,可以是通過使用R或Tableau(當時最為流行的編程語言),但是,說實話,工具是不太重要的。
最后,不論我們所討論的是關系型數據庫,還是運用大數據技術獲得的SQL衍生數據庫,由于SQL是當時產業界用于數據庫中最為廣泛的編程語言,大多數公司都非常看重SQL這種編程語言。SQL對于手動轉換數據尤為重要,至少在處理更大規模的數據庫時。總之,SQL真的值得你花費一定的時間來好好研究應用。
交流/商業頭腦
在商業數據科學領域工作,具備交流溝通能力/商業頭腦是不容忽視的。除非你將要從事非常具體的工作,可能是純研究類型的工作(盡管我們要面對現實,在產業界并沒有很多這種類型的工作),絕大多數數據科學領域的工作都涉及到業界交流互動,通常是與非學者類型的人打交道。
具備將商業化問題和催生這些問題的環境概念化是極為重要的。將統計學方面的觀點轉化為可以想普通大眾推薦的行動或啟發性觀點也是重要的,特別是對于A類型數據科學領域的工作來講。我曾與Yanir就該話題交談過,他的觀點如下:
“我發現一種奇怪的現象,當一些技術型人才開始使用行話與人交流時,他們并不留意他們的交談者——那些非技術型人才,的目光早已落到了別處。在交談過程中,能夠設身處地地為他人著想是重要的。”
搖滾明星
乍看這樣一個標題,你可能會困惑不解:事實上,我用這一標題暗含諷刺意味。當然,數據科學家可不是搖滾明星,忍者,獨角獸或其他任何一種神秘生物。如果你計劃視自己為上述任何一種生物,那你可能該對著鏡子好好大量自己一番。但是,講到這里,我離題了。我想要表達的觀點是,有一些數據科學家,他們具備頂尖的專業水平,也可能專業水平更為高端。在別人眼中,可謂稀有物種,尤為寶貴。如果你有此般天賦或愿望成為其中一員,那簡直是太棒了。但是,如果你不具備這種才能或愿望,請記得:你可能在數據科學的某些領域做的術業有專攻,而且通常,好的團隊是由精通于不同專業領域的數據科學家組成的。決定自己的研究重點在哪一領域,這個問題有回到我們之前講的個人興趣和能力這個話題上,我們將在下一章對該話題作繼續討論。
第二章:自我剖析
現在我們正在取得進步!成功地消化了第一章的內容之后,你現在要做好準備開始制定個人目標。但是,我們首先要回顧一下——不妨來杯咖啡,尋一隅安靜之所,深思下面的問題:
1.你為什么想要成為一名數據科學家?
2.對哪一類型的數據科學感興趣?
3.你已經具備了哪些天賦或相關技能?
為什么認真思考這些問題是重要的?簡而言之:數據科學是一個專業的研究領域,因而,除非你已經掌握了我們在第一章中提到的知識與技能,否則從事該領域的研究并不是一種輕松的選擇。講到這里,有一點對合理解決前兩個問題尤為重要:你需要為從事數據科學領域的研究找到合理的理由,否則,當遇到困難時,很容易半途而廢。
為了詳細闡釋上面的觀點,我們來聽聽Dylan Hogg的見地。Dylan之前是一名軟件工程師,現在是數據科學研究協會的領導者,數據科學研究會為運用機器學習(NLP)為雇主和相關候選人員建立聯系搭建了一個平臺。Dylan是如何從軟件工程師成功地轉型為數據科學家的(他仍然處于轉型期),下面我們將討論轉型過程中應當具備的條件,他講到:
“不論學歷高低,經歷豐富與否,有一些內在的東西尤為重要,那就是一個人的求知欲、決心和毅力。你會遇到很多困難:也許是算法方面出錯,也許是遇到技術瓶頸。不論遇到什么樣的困難,你都能夠找到最優的方法來研究機器學習算法或軟件工程,但是,倘若你的信心不夠堅定,你將會放棄或無法克服遇到的困難。”
這下你會懂了:在學習過程中,你不僅僅會遇到困難;在工作生活中,你會接二連三地遇到難題,因而,你最好能夠保證有合理的理由來激勵自己,而不僅僅因為你覺得擁有“科學家”這一頭銜有多酷。
但是,我們應當如何應對第三個問題?為什么擁有相關技能是重要的?對,一個人的起點會對選擇最適合自己的數據科學類型及你應當從自己感興趣的領域學到的知識產生影響?為了能夠恰當地回答這個問題,有必要探尋通往數據科學領域的典型途徑,我們應當首先從更為廣闊的科學領域開始。
注:在許多定量學科中有許多人具備向數據科學轉型的素質。在這里我就不一一列舉了,但是,需要強調的重點是:如果你花費時間來真正理解每種類型數據科學之間存在的細微差異,不論你的知識背景如何,你都將會意識到自己所具備的相關技能的重要性。
其他科學學科
這不是通往數據科學領域最平凡的道路;我們接下來將要討論統計學與計算機科學在數據科學研究中的重要性。但是,許多領域的科學家都具有嫻熟的相關技能(特別是物理學領域),許多人在這一方面已經跳過了。
為了對此進行解釋,請允許我介紹Will Hanninger,澳洲聯邦銀行數據科學家。之前,Will是歐洲核子研究中心的粒子物理學家,發現了希格斯玻色子,下面是他的語錄:
“在物理學界,你能夠自然而然地學習到所需要的數據科學領域的知識:編程、操作數據,獲取原始數據并根據實用性對數據進行轉換。你能夠學習到統計學知識,重要的是:你將學到解決問題的能力。這些是作為一名數據科學家應當具備的基本技能。”
因此,技能組合具有高度可轉換性,最重要的是獲取解決問題的能力。工具與技術兩者之間將會產生差異,例如,盡管機器學習是數據科學的同義詞,但是,就更為寬泛的科學而言,這種同義關系是不常見的。在上述討論中,我們一直談及的是高智商人才,他們具有在短時間內學會使用工具與技術的能力。
下面我們以Sean Farrell的科研經歷為例。Sean所學專業是天體物理學,之后進入澳大利亞商業數據科學研究領域,在研究過程,他就“為什么科學家在數據科學領域的損失反而是收獲”這一題目寫了一篇著名的博文。下面這段話尤為中肯:
“至今為止,尚未發現一種能夠培養出一位數據科學家的正式訓練方法。多數數據科學家都來自統計學或計算機科學領域。然而,盡管其他研究領域也能夠培養上述列舉的技能,但是不能涵蓋所有的相關技能。統計學家非常擅長數學和統計,通常在編程這一塊兒的技能稍顯欠缺。計算機科學家非常擅長編程,但是,在理解統計學知識方面存在難度。兩個領域的科學家都具備高水平的(盡管不同的)數據分析技能,但是不擅長創新性地解決問題,這種技能也是難以教會的。”
為了避免誤解,請記得我們今天討論的上下文語境。Sean的一席話并不意味著來自統計學或計算機科學領域的所有數據科學家都缺乏創新性解決問題的能力;他的觀點是:相比統計學和計算機科學,廣泛意義上的科學對解決問題的技能要求很高。
統計學
談及到科學,應當仔細研究統計學。近來,許多統計學中的分支學科被重新冠以數據科學之名,因此,在某種程度上,我們好像正在談論語義學知識。但是,正如我先前談到的,我認為科學方法應當被當作一門科學:難道提出假設,設計可行的實驗方案等研究步驟不能稱得上“方法論”嗎?倘若不是的話,也許像“統計學家”或“模型分析師”這樣的頭銜更為貼切。
暫且將這一問題放一放,倘若你是產業界的一名統計員或者剛剛從統計學專業畢業,那么你可能已經擁有成為一名數據科學家應當具備的知識與素養。相關知識素養的形成主要依靠以下因素:
首先,你在機器學習技能方面有何經驗?正如我們在第一章提到的,統計建模與機器學習是相互關聯的,但是,在應用到大型數據集中,后者具有更多的優勢。當機器學習在產業界的應用越來越受到關注,實際上,機器學習已經成為各種類型的數據科學。
其次,我們再重復一遍,你對數據科學的哪一領域感興趣?很明顯,擁有統計學背景更加有利于你勝任A類型職位,因而,如果你將目標設定為B類型職位,未來還需要學習很多知識。
最后,你是否擁有處理數據的實際經驗?正如我們在第一章中提到的,手動轉換數據是商業數據科學的重要組成部分,而來自統計學領域的科學家手動轉換數據的能力相對薄弱。
計算機科學/軟件工程
如果你在人工智能或計算機科學領域的學習已經達到前沿水平,你極有可能已經能夠勝任B類型的數據科學研究工作。但是,我們這里將要考慮一條數據科學家常走的科研道路:一名經驗豐富的軟件工程師想要轉型進入數據科學領域。
一名軟件工程師在機器學習領域可能富有經驗,也可能經驗甚少。但是,B類型數據科學要求在軟件工程原則方面擁有扎實的基礎,因而,不論怎樣,擁有軟件工程方面的學術背景將使你更適合該領域的研究。我曾經與澳洲聯邦銀行高級數據科學家(先前是一名軟件工程師)就此問題交流過,以下是他的觀點:
“大量數據科學工作其實都涉及到軟件工程方面的知識,不僅僅包括設計健全的系統,而且包括簡單地編寫軟件。你可以通過自動化完成眾多任務,如果想要開展實驗,你需要編寫代碼,如果你能夠快速編碼,將對實驗進展產生重大影響。在攻讀博士學位過程中,我每天要做成千上萬項實驗,如此浩大的工程是不可能通過人工完成的。擁有軟件工程專業的學術背景意味著我能夠快速完成設定的實驗任務,然而,許多其他學術背景的學生需要費力處理基本的軟件問題:他們真的非常擅長數學,但是要切實證明他們的觀點還需要耗費大量時間。”
Dylan對于該問題補充道:
“如果你想要在生產環境中高效運用機器學習算法,良好的軟件工程實踐能力是非常寶貴的。這其中涉及到各種各樣的軟件工程知識——如可維護的代碼,可供分享的代碼庫,以便于更多的人能夠投入到數據科學領域的研究中,如在計算機中記錄信息,排除生產過程中的故障,算法擴展,你應當認識到:一旦這些知識得到加強,你便能夠通過這樣的方式構建數據科學領域的知識框架。因此,如果你正在尋找一份能夠有效利用所掌握的知識的工作,這將使得軟件工程學術背景變得更為重要。”
我認為,上述兩名數據科學家已經對如何成功實現轉型這一問題做出了詳細闡釋,下面由我來總結如下:如果你是一名軟件工程師,而且很喜歡數學,這將有助于你成為一名(B類型)數據科學家,前提是你已經做好準備在工作中掌握統計學/機器學習領域的知識。
數學
很容易得出這樣一個結論:數學知識為數據科學的所有研究領域打下堅實的基礎。因而,期望許多數學家從事數據科學家的研究工作是合理的。但是,相對來講,少之又少的數學家成功轉型成為數據科學家,這一現象引發了我濃厚的興趣。
針對這一現象,有一種解釋:與其他研究領域相比,數學(純理論數學與應用數學)領域有相對較少的畢業生,但是,這種解釋未免顯得牽強。為了深究導致這種現象的原因,我曾經同Building IQ(一家新成立的運用先進的算法優化商業建筑中能源應用的公司)首席數據科學家Boris Sackovic交談過。Boris擁有電氣工程與應用數學雙重學術背景,與當時許多數學家合作過,以下是他對該現象的見解:
“許多數學家為理論層面的問題,美麗的方程著迷,能夠洞察眾多數學原理所蘊含的深層意義,當時商業數據科學研究講求實證性,涉及到的多種多樣的知識與能力。一些數學家喜歡這種實證性,而一些則表現出討厭的態度。真實的情況更為復雜,你不能兼顧所有的情況,因而得具備能夠靈活處理所遇到難題的能力。而這是商業數據科學的重點所在:找到更快更好、切實可行的掙錢方案。對于那些具有濃厚數學背景或理論背景的科學家而言,要理解商業數據科學領域的運行模式可能存在不少難題。我曾經遇到過很多數學專業的博士,他們在由學術界向商業數據科學領域過度期間可是吃了不少苦頭。”
需要注意的是,Boris在這里談及的是純理論數學家,當然,他也補充說,在自己的職業生涯中也曾與許多優秀的應用數學家打過交道。這樣一來上面的討論便講得通了,因為純理論數學家可能會吸引那些熱愛理論的人,而不會吸引那些熱愛解決實際問題的人。理論研究工作并未涉及到太多數據處理問題,但是,我們都知道數據對于數據科學領域的研究極為重要。
就工作類型匹配度問題,多數數學家可能更適合學習A類型數據科學領域的工具和理論。但是,也有一些學習計算機科學的(實質上,理論計算機科學屬于數學的一個分支)數學家,因此,具備這種學術背景的數學家可能更適合B類型數據科學領域的工作。
從上述討論結果中可以得出一條非常重要的觀點,即要理解商業數據科學真正要求數據科學家具備哪些知識和技能。倘若你能夠真正清楚地認識到面臨的挑戰,所需要做的便是為了自己的目標努力前行。但是,倘若相比實際應用,你更熱衷于理論研究,你可能要三思而后行。
一塊空白的畫布
如果你剛剛起步,也許你還是一名學生,喜歡數學、科學與計算,喜歡數據科學,這對你來講不失為一則好消息:你可以不受先前學術背景的限制,選擇屬于自己的科研道路。現在有許多與數據科學相關的專業課程,涵蓋計算機科學和數學/統計學等。當然你不可能一夜之間成為一名數據科學家,現階段你需要樹立不斷學習的理念,利用各種數據科學領域的學習資源, 累積數據處理方面的實際經驗,具備與人交流溝通的能力,積極迎接商業數據科學領域未來的挑戰!