閱讀337 返回首頁    go 技術社區[雲棲]


職業轉換:從金融工程師到數據科學家


0?wx_fmt=jpeg


Rachel:我之所以開設數據科學專欄,是因為我時常會收到谘詢相關問題的郵件。如果你也有此類困惑,可以給我發郵件到rachel@fast.ai,將你的問題清晰而簡潔的列出來。上一期的大數據專欄講述了你應該怎樣組建你的數據科學與工程師隊伍,並給了對深度學習感興趣的學生一些建議。


此次專欄的話題是我從收到的郵件中歸納出來的。提問人往往編程能力有限,住在灣區之外,但有意向成為一名數據科學家,比如以下這些郵件:


Q1:我在一家大銀行做財務分析師,想往技術領域轉行做軟件工程師。我對機器學習很感興趣,看過您的郵件《人工智能的多種危機》。如果要進入人工智能領域工作,我是否需要博/碩士學位?


Q2我目前數學博士六年級在讀,馬上就要畢業了。我對大數據很感興趣,如果要進入這個領域工作,我能做什麼或者應該準備些什麼,才能具備相關公司需要的技能呢?我正在讀一些相關方麵的書籍,試著找一些我能做的小項目。我要去哪裏找到吸引雇主的項目呢,您對此有什麼建議嗎?


Q3:我有STEM(科學、技術、工程和數學)學曆,以前做過研究人員和教師。我現在正在職業轉型中,想尋找那些需要分析和指導技能的工業界崗位。我的知識更側重於科學方麵而不是軟件。我認為互聯網將成為一個勢不可擋的領域,使得我們能夠在沒有實際分享的情況下收集信息。您能不能推薦一些在教師預算能力內的編程課程?您認為哪些編程語言或相關技能對開發工作是最有效的?


A:我認為自己沒有正統的數據科學的教育背景,雖然乍看起來好像我有:我在高中學了兩年C++,在大學主修計算機科學(還有數學),獲得了概率論博士學位,曾做過金融工程師。然而,我的計算機課程都是理論性的,我的數學畢業論文也都是基於假設的(和計算沒有任何關係!!),這些年我C/C++用得越來越少,而MATLAB越來越多(真想吐槽我為什麼要這麼做?!?我有時甚至在MATLAB上寫網頁爬蟲......)我在大學所學的知識能讓我證明NP完全問題或圖靈可計算問題,但這些與測試、版本控製、網頁程序、網絡如何工作沒有一點關係。我之前做金融工程師的公司用的也是現在高新技術產業並不會用的專有軟件/語言。


在能源貿易行業做了兩年金融工程師後,我發現我最愛的是這份工作中的編程和數據。我煩透了大公司的官僚主義和過時的專用軟件,想做些改變,於是參加了2012年2月的數據科學會議,學習更多灣區的數據科學知識。在那裏,我被徹底完全地感染了。對大數據的熱情、一切令人激動的工具(很多我之前根本沒聽說過)、那些放棄學術界或大公司生活而專注於他們所熱愛的創業公司的大咖故事...各種和以前大相徑庭的見聞讓我耳目一新。


開完會後,我在舊金山又待了幾天,向創業者們做訪談,和那些好久不見的熟人喝咖啡,我發覺我應該搬到舊金山去——每個人都願意給予我幫助,而且大家都特別喜歡Four Barrel Coffee(幾乎和我聊過的所有人都願意在那裏約見)


我曾經是個追星族,但轉到科技行業後我就徹底退圈了...一開始我和那些科技領域的人談話時,總覺得他們像在說另一種語言。


我在德克薩斯州長大,20多歲的時候生活在賓夕法尼亞和北卡萊羅納州,不認識任何技術領域的人。我從沒上過統計學課程,以為概率論就是真正的分析。我對創業公司和技術公司的運營沒有任何了解,我第一次采訪一個初創公司的時候,一個被采訪者自誇他們公司如何不用擴張人手就快速獲利,我驚恐地反問道:“你的意思是這個公司不賺錢?!”(是的,我大聲地說了出來,用一種驚訝的語調)。那場麵我現在想起來都覺得丟人。在另一場采訪裏,我壓根沒搞明白“impression”這個概念(當播放一則互聯網廣告時),以至於我花了不少時間才理順問題的邏輯。


我在這裏待了5年了,以下是一些我希望在我當初轉行時應該知道的東西。我知道我是白人、美國公民、在畢業的學校拿過不少獎學金、也沒有學貸,而且轉行時還單身、沒有孩子,對於不滿足這些條件的人來說,他們可能會麵臨更加險阻的道路。你可以對於我的這些趣聞軼事半信半疑,但我希望下麵的這些建議能夠真正幫到你:


一、為轉行數據科學做準備


1. 最重要的事:

找到一種可以使你在當前工作中學到東西的工作方式。去做一個包含更多編程或數據分析並對你的雇主有價值的項目。接受任何看似無聊的任務,試著讓它自動化運行。即使這個過程要花5倍的時間(即使你隻做一次),你也要做下去,因為這是一個學習的過程。


2. 分析任何你已有的數據:

即將發生的購買潮研究(比如要買哪種微波爐),個人健康指數的追蹤數據,你烹飪的營養指數,你正在為孩子找的學前班。把它轉變為一個小型研究項目,並為它寫一個博客。例如,如果你是個老師,你可以分析你的學生的畢業成績。


3. 學習最重要的數據科學軟件:

Python的數據科學技能棧(pandas/numpy/scipy)是最應該學習的技能(讀這本書!),緊隨其後的是SQL。如果我要轉行數據科學,我會在學習其他語言之前重點學習Python和SQL。Python適用範圍很廣也很靈活。如果你決定更多的參與軟件開發工作或全力以赴學習機器學習,你將因此獲益良多。


4. 用Kaggle:

瀏覽輔導材料、參加論壇、參加比賽(不用擔心你的名次,每天都做得更好一點就行了),這是學習實用機器學習技能的最好方法。


5. 尋找你領域裏的數據科學和技術見麵會:

隨著近幾年大數據的爆炸,現在全世界很多城市都有這些見麵會。比如,Google最近在加利福尼亞州舉辦了一個TensorFlow峰會,但是世界各地都有在線上觀看直播的群體(包括阿布賈、尼日利亞、哥印拜陀、印度和摩洛哥)


二、在線課程

在線課程是非常好的資源。你在自己家中就可以向世界上最頂尖的數據科學家們學習。課後作業通常是最能學到東西的地方,所以千萬不要跳過它們。這裏列舉了幾個我最喜歡的課程:


  • Andrew Ng(吳恩達)在Coursera的經典課程machine learning(雖然沒有在 Octave\MATLAB上花費過多時間,但是他依然在解釋算法方麵做得很好。用Python來完成課後作業可能會更好,像這樣https://www.johnwittenauer.net/machine-learning-exercises-in-python-part-1/)


  • fast.ai的Practical Deep Learning for Coders課程。透露一下:我參與了創建這個課程,並且我們收到了很多來自學生的正麵反饋。唯一的要求就是你具有一年的編程經驗。


  • Udacity(優達學城)的data science sequence。


  • Udacity(優達學城)的Web Development Course。嚴格來說,你不是必須懂得這些才能成為一名數據科學家,但是成為一個更好的軟件開發者有助於使你成為更好的數據科學家,並且知道如何開發你自己的web程序也是很有用處的。


但就像上麵那個提問者強調的,過多的信息、教程和在線課程會讓人感到無所適從。學習數據科學的最大風險之一,就是不斷從一件事跳到另一件事,但是卻從來沒有真正完成一件事,或者是深入學習某一個主題足夠長的時間。找到一個“足夠好”的課程或項目並持續做下去是非常重要的,加入或創建一個交流會、一起完成一門在線課程將對此很有幫助。


在線課程對於你獲取知識是非常有用(完成全部的課後作業十分重要,你就是在這個過程中學到東西的),盡管目前來看,從他們那裏拿到結課證書並不會有什麼助益(僅僅是目前——我知道這是一個正在成長的新領域)。這是我麵試了很多數據科學求職者以及我自身多次求職的經驗之談。


三、消息渠道


Twitter出人意料地是一個找到有趣文章和機會的途徑。例如,我的合作者傑裏米·霍華德為他最喜歡的機器學習論文和博文 機器學習論文和博文提供了超過1000條鏈接(附注:你需要登錄Twitter才能閱讀這個鏈接的內容)。也許弄明白關注誰將花費你一定的時間(這個過程包括關注、取消關注、搜索等),一個捷徑是查看上麵的鏈接中哪些人寫出了你比較喜歡的推文,然後直接關注他們。查找公司裏那些你感興趣的數據科學家,查找那些你使用的或感興趣的庫和工具的作者。當你找到你喜歡的教程或博文候,找出它的作者,接著查找他們轉發了誰的推文。如果你不確定如何發送推文或推送些什麼,我推薦你把Twitter看作一個你喜歡的(公共的)書簽鏈接。我會盡我所能地把所有我可能在幾月之內會回來參考的文章或教程發成推文。


machine learning subreddit是一個近期資訊的很好渠道。你可以找到很多一開始無法理解,但是幾個月後你會理解得越來越多的資訊。


注冊一些時事通訊,比如Import AI newsletter 和 WildML news會很有幫助。


四、搬到灣區


盡你所能搬到灣區!我知道對許多人來說這是不可能的(尤其是你有小孩或者簽證/合法居住權問題)。但這裏有如此多的數據科學見麵會,學生組織,討論會和研究會。這裏也是一個由活躍、有雄心、渴望學習的數據科學家們組成的神奇的社區。我都弄不明白哪些對我的學習最有幫助了。盡管我在搬到這裏之前就開始自學機器學習,但來到舊金山以後我的學習過程立即加速了很多。


來到舊金山的第一年對我來說是一段瘋狂學習的時期:我參加了大量的交流會,完成了幾個在線課程,參加了數不清的討論會和研究會,在一個專注於數據的創業公司中工作學到了很多,更重要的是,遇到了很多可以請教的前輩。我完全低估了與那些開發令人激動的工具和技術的人進行常規交流的神奇效用,那種被一群熱愛學習和推動先進技術的人包圍著的感覺是很難描述的。我有幸參加了上麵提到的那個全世界人矚目的TensorFlow研發峰會,我最喜歡那個峰會的一點就是那些我遇到的人。


一個搬來這裏的好辦法就是接受一個“不是你夢想中的工作”。比如,盡量獲得一個周圍滿是值得學習的人的職位,盡管這個職位在其他方麵並不吸引你。我在2012年初決定轉行,那時Insight或其他數據科學訓練營還不存在。我申請了幾個“夢想中的工作”卻都被拒絕了。事後,我覺得這是因為我缺乏一些必備技能,不知道如何營銷自己,以及求職準備不足等。


2012年3月,一個令我興奮的創業公司的分析師職位給我帶來了希望,伴隨著一份可以讓我在日後成為一個數據科學/建模從業者的非正式協議。總的來說,這是一個不錯的選擇,於是我迅速搬到了舊金山。我加入的那家公司在很多方麵都很不錯(包括有一個把時間花在Bishop模式識別的每周閱讀組和可以見到Trevor Hastie 和Jerome Friedman的交流活動),並且我的經理很支持我去做職責以外更多的工程性項目。一年以後,我獲得了我一直夢寐以求的工作:在一家有著優異數據集的創業公司兼任數據科學家和軟件工程師。


這裏還有一些不錯的訓練營,這些訓練營可以提供很多機會,幫你接觸數據科學領域的有趣的人和公司。


  • Insight Data Science是一個為STEM(科學、技術、工程、數學領域)博士開設的7周免費加強訓練營。缺點:因為隻有7周,所以訓練主要集中在關係網和求職方麵。我覺得這主要是對那些已經具備大部分所需技能的人。另外,進入訓練營的競爭也很激烈。


  • 像Galvanize和Metis這樣的數據科學訓練營。優點:12周身曆其境的體驗提供了訓練體係和交流機會。缺點:這些訓練營相當貴。你需要思考從你的背景到你的需求有多遠的距離。確切點說,如果你隻有一點編程經驗,那麼參加訓練營是必須的,但如果你正從相關領域轉型過來,可能就過頭了。另外,你獨立自學的積極性如何?如果你比較糾結,那麼責任製和體係化的訓練營可能會有幫助。


是否應該參加一個訓練營需要考慮很多因素。其中重要的一點就是你需要多少組織和外部激勵。現在在網上可以獲得很多驚豔的資源,但你的紀律性如何?你得接受那些你需要學好的東西。比如我發現學習在線課程和完成課後作業對我非常有幫助,過去我常常嫌棄這些課程和作業的難度比起完成一個獨立項目來就像小兒科,但現在我接受了它們並努力去完成。另一個需要問的問題是你需要學多少東西,並且你自己能學多快?如果你要學的東西很多,那麼訓練營也許可以加速學習過程。我覺得訓練營最突出的作用就是教你如何將一堆不同的工具/技術一起使用。


如果不想走工作這條路,你也可以搬來這裏。但有幾點要求,包括:充足的存款、合法的美國居住權、沒有孩子等,所以對很多人來說這並不是一個選擇。然而,如果你有條件的話(比如通過投資獲得美國的永久居住權),這也是一個不錯的選擇。找一份全職技術工作(如數據科學或者工程學)需要大量學習來準備麵試,並且要麵臨高強度工作的挑戰,甚至在家也不能放鬆。


我在自己的全職工作崗位上做了幾次快速求職,事後看來,這導致我做出了幾次不是最優的決定。你肯定能找到很多方式去用麵試、編寫小項目和參加研討會和學習小組來充滿你的時間。另外,當我轉而去教人們多久換一次工作,兩份工作之間花時間去學習新東西或旅行(不用擔心你簡曆上的空窗期,隻要你能很好的回答你這段時間都學了什麼)時,有兩件事令我很驚訝。


附加說明:我5年前搬來這裏時並沒察覺到灣區的性別歧視,種族歧視,年齡歧視,變性人歧視和道德敗壞(盡管它浮誇的宣稱去創造一個更好的未來)。但僅僅幾年以後,我就氣餒的想要徹底離開高科技產業。背叛、冷淡和殘忍的故事比比皆是:舉例來說,我身邊有人因為家庭發生緊急情況而被同事利用,我的許多朋友和親人都有類似的糟糕經曆。盡管如此,由那些充滿激情的、有吸引力的人們組成的並且可以使用最先進的科技的社區使我留在了這裏,並且給了我選擇。現在,我為在fast.ai從事解決最有趣的問題並將產生巨大的影響的工作而感到幸運。


五、以下是有關問題的答案


我需要人工智能的碩士或博士學曆嗎?

我堅信答案是否定的,而且我正致力於使這件事變得更現實。事實上,AI博士通常不能很好地處理相關的實際業務問題,因為這不是他們學習的內容。學術界專注於拓展領域的理論邊界,並且是由在頂級期刊發表文章而驅動(這與創造一個商業可行的業務是非常不一樣的!)。在這裏你可以了解更多關於fast.ai的教育理念,也可以看看我們免費的在線課程Practical Deep Learning for Coders。


我應該在學完Python之後學習Ruby嗎?

一個有追求的數據科學家沒有理由要學Ruby。它和Python太相似,不會教給你新的概念(就像學習函數式語言或底層語言那樣),而且它也沒有形成一個數據科學生態係統。


我要在哪裏找到讓雇主感興趣的小項目?

我想在網上找些隨機數據集應該不難,但是我猜雇主真正想知道的是我怎樣解決實際問題。不要覺得你的小程序應該獨一無二,或者用了一個獨特的、不尋常的數據集。把你從Kaggle網站獲得的數據集應用到小項目中就不錯。就算你的項目沒有突破也沒關係。當創建小程序、博客文章或者教程時,把你的受眾定位成這方麵知識能力僅次於你的人,因為他們正是你最適合去幫助的人。你可能會擔心一個項目或博客不能引起該領域內資深人員或經驗人士的興趣。沒關係,隻要你做好這些工作就很不錯了。

原文發布時間為:2017-03-30

本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“BigDataDigest”微信公眾號

最後更新:2017-05-19 14:32:20

  上一篇:go  理解Storm的內部消息緩衝機製
  下一篇:go  為什麼多線程是個壞主意