1. 程式人生 > >如何才能獲得一份資料科學家的職位?

如何才能獲得一份資料科學家的職位?

資料科學需要哪些技能?如何才能學會這些技能?

從求職市場的角度來看的話,怎樣做才能最大化在資料科學崗位上被錄用的機會?

你可能會疑惑,憑什麼我能回答這些問題?

因為我每天都和資料科學家打交道,並且作為一個資深的HR,我需要了解相關職業道路,怎樣才能成為一名優秀的資料科學家,以及僱主期望能招到哪一種員工。因此對於這件事我還是相當瞭解的。

但是我也想直接找到那些沿著這條路走下來的人,所以我以不同背景的資料科學家開始,期待能發掘到不同的東西。這一次我找到了一個前軟體工程師、前天體物理學家、甚至還有一個前粒子物理學家(這令我非常激動,因為他曾經親身參與過21世紀以來最重大的科學突破之一)。

在這裡小編給大家推薦一個軟體開發學習圈

大資料學習qq群458345782

python學習qq群250933691

每天有免費的學習資源分享給大家

1什麼是資料科學?

你已經下定決心要做一名資料科學家了,很好你已經開始了。但是現在你有了另外一種選擇:你想做哪一種資料額科學家呢?因為(認識到這個很重要)雖然資料科學被承認是一種職業已經有很多年了,但是有關於它到底是什麼還沒有一個大家都認可的定義。

在現實生活,“資料科學家”這個詞可以指代非常廣泛的工種,因此它存在很多種形式,考慮到工業界以及商業界各種需求的不同,還有問題中目標與輸出角色的不同。因此,在某些方面擁有技能的話比其他要更好一些,這就是為什麼通向資料科學的路徑是不相同的,可以通過多種領域如統計、電腦科學與其他科學學科來實現。

目的是決定資料科學形式類別的最大因素,這也與相應的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就該話題交談過,他的觀點如下:

“我發現一種奇怪的現象,當一些技術型人才開始使用行話與人交流時,他們並不留意他們的交談者——那些非技術型人才,的目光早已落到了別處。在交談過程中,能夠設身處地地為他人著想是重要的。”

搖滾明星

乍看這樣一個標題,你可能會困惑不解:事實上,我用這一標題暗含諷刺意味。當然,資料科學家可不是搖滾明星,忍者,獨角獸或其他任何一種神祕生物。如果你計劃視自己為上述任何一種生物,那你可能該對著鏡子好好大量自己一番。

但是,講到這裡,我離題了。我想要表達的觀點是,有一些資料科學家,他們具備頂尖的專業水平,也可能專業水平更為高階。在別人眼中,可謂稀有物種,尤為寶貴。

如果你有此般天賦或願望成為其中一員,那簡直是太棒了。但是,如果你不具備這種才能或願望,請記得:你可能在資料科學的某些領域做的術業有專攻,而且通常,好的團隊是由精通於不同專業領域的資料科學家組成的。決定自己的研究重點在哪一領域,這個問題有回到我們之前講的個人興趣和能力這個話題上,我們將在下一章對該話題作繼續討論。

2自我剖析

現在我們正在取得進步!成功地消化了第一章的內容之後,你現在要做好準備開始制定個人目標。但是,我們首先要回顧一下——不妨來杯咖啡,尋一隅安靜之所,深思下面的問題:

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型別資料科學領域的工作。

從上述討論結果中可以得出一條非常重要的觀點,即要理解商業資料科學真正要求資料科學傢俱備哪些知識和技能。倘若你能夠真正清楚地認識到面臨的挑戰,所需要做的便是為了自己的目標努力前行。但是,倘若相比實際應用,你更熱衷於理論研究,你可能要三思而後行。

一塊空白的畫布

如果你剛剛起步,也許你還是一名學生,喜歡數學、科學與計算,喜歡資料科學,這對你來講不失為一則好訊息:你可以不受先前學術背景的限制,選擇屬於自己的科研道路。現在有許多與資料科學相關的專業課程,涵蓋電腦科學和數學/統計學等。當然你不可能一夜之間成為一名資料科學家,現階段你需要樹立不斷學習的理念,利用各種資料科學領域的學習資源, 累積資料處理方面的實際經驗,具備與人交流溝通的能力,積極迎接商業資料科學領域未來的挑戰!

在這裡小編給大家推薦一個軟體開發學習圈

大資料學習qq群458345782

python學習qq群250933691

每天有免費的學習資源分享給大家