乾貨稿|數據科學職業發展講座內容整理

1月8日,數據應用學院邀請4位資深數據科學家為北美數據求職者提供了一次極具價值的「數據科學職業發展研討」。以下為講座整理稿:

-----------------JASON------------------------------------------------------------

Jason(數據應用學院CEO):

在之前我們的講座說過大數據有3個skill sets(技能集合),現在我們還要強調這3個skill sets。

第一個是編程能力,主要是 SQL,R,Python還有一些領域裡面會用到的SAS。

另外一個技能的集合是你的數理基礎,包括統計和機器學習,還有數學方面的東西。這些我們中國學生都是很強的。

第三個就是business market,就是用你的數理基礎去解決一些商業問題。這個東西非常重要,也是我們在整個學習過程中需要特別注意的一個東西。數據應用學院的方法是就通過一些case study,通過大學生們做項目,做Kaggle的比賽,做作業,一個一個商業問題帶同學做過來,培養同學們的這方面的能力。

進入2016年開始,數據科學變得越來越細分化。這是我們做的一個圖。首先最左邊你的編程能力仍然是重要的一個skill set。然後上邊你的分析,包括統計包括機器學習,自然語言過程,這個還是很重要的。

但是另一方面,data management和storage,就是右上角的部分,也變得非常重要。因為越來越多的情況下在公司裡邊,一個數據科學家其實是support一個產品線的。那麼你需要能力把這個產品的數據能夠妥善處理好,保存好,並且還能夠到data warehouse提取出來以便於做進一步分析。所以你需要很強的數據管理 SQL的能力。

右下角就是data visualization。因為我們在做數據科學的時候,如何去展示你的結果,最基本的就是做一個dashboard,看到整個產品的數據流,進而通過一些圖、一些data visualization的方法來說明你的方案。這些都是另外一個非常重要的技能,我們把它放在communication和visualization裡面。

最後一個就是entrepreneurship。因為現在越來越多的就業機會不僅僅來自於Google,Facebook,Snapchat,微軟,IBM這樣的公司,有很多startup,他們也在招數據分析師,大數據工程師和數據科學家。他們對entry level求職者會更關注於你是否有一個smart idea,是否有domain knowledge,是否來了就能解決一些問題,並且你能否參與到產品線的設計。這是一個非常全占的職位。這是一些startup對我們進一步的要求。

下面介紹一下在矽谷這裡我們應用最廣的一個大數據框架。我們先看這個框架的名字叫做lambda。我們先回憶一下下面,就是我們剛才說到的amazon的例子。儘管amazon每天可能有成千上萬的orders,系統的運轉非常的繁重。但是我們仍然希望有一些用戶的數據是以實時的系統進來。這些就是lambda架構下面的部分,他有一個real-time pipeline。這個是在Hadoop裡面通過storm實施的;在spark裡面是通過spark streaming來實現的。無論你用哪一個大數據的框架,你都會考慮在這個系統當中有一個實時通道讓這個數據很快地進入到你的系統。這是下面的這一部分。上面的這一部分我們叫做批處理。

在很多公司其實data warehouse和production line是分開的。比如說一個電商,他每天有million級的transaction,用戶的買賣信息,都放在OLAP裡面。它的online transaction的信息會以log的形式存儲到文件裡邊。然後這個數據文件被轉移到數據後台,就是data back apk裡面,然後我們比如說每天每兩個小時把收到的數據以批處理形式進入data warehouse,這就是我們講的框架里上面的batch和processing的部分。幾乎所有用大數據平台做數據分析的公司在處理數據時都採用lambda框架。相信同學們以後會越來越熟悉。

最後我來講一下數據科學在今天是一個什麼過程,你要做一個數據應用,data application,大概需要經過哪幾個步驟。

第一個步驟就是把一個商業問題轉換成一個商業需求。我們叫它business specification,相當於功能的需求。有了需求之後,根據需求去定義數據。這個非常重要。以前的時候我們講data mining我們都說,我有數據了,然後我用data mining去發現一些規律,然後去定義模型。其實工業不是這麼做的。工業界你沒有數據都能做數據分析,都能做大數據。你要先有一個商業問題,把商業問題轉換成一個商業需求。然後根據商業需求、功能需求去定義你想要的數據。有些數據你是有的,有些數據你沒有,那你可以通過購買用戶的信譽記錄,通過購買醫院的一些check-in記錄來分析病人的一些情況。你還可以去購買地理信息系統的數據,來做數據整合。也就是說你是通過一個商業需求去定義你的data set,然後做數據整合,然後數據入庫,再做一些data cleanup和data normalization去做進一步的計算。

再下一步才是做建模相關的。當然建模也不是說一上來就做模型。要先做feature engineering。先把原始數據里的一些你需要的features提取出來。這需要你對這個domain的專業知識非常了解。第二方面你還要有一些數據計算,feature computation。當你做完feature engineering之後,你拿到了有效的feature,下一步才是我們熟悉的建模、machine learning。這個過程里你可能還要繼續去完善你的feature set。有一些feature你有可能會去掉,有一些有可能會增加。當你把模型做好之後,你會把它放在產品線里。但是這時候我們的工作還沒有結束,我們需要產品線上用戶的反饋。比如說你在amazon上的推薦系統給了用戶,用戶是不是真的買了你的產品,是不是真的點擊了你推薦的產品,這都是非常重要的feedback,而這些feedback會成為你的新的數據來修訂你的推薦系統。所以我們要把模型應用到產品線之後還要採集反饋,之後用這些反饋數據來優化模型。

我來簡單介紹一下我們的培訓計劃,之後其他老師會具體講你在求職過程中要怎麼準備,具體的一些技巧。首先數據應用學院的過往學員找工作還是非常樂觀的。畢竟大數據和就業市場是蠻好的,就是供應小於需求。很多公司其實還是在找不到人才的階段。也就是說就業市場還是很好的。我們的很多學員也是去了很多非常不錯的公司,這裡我們就舉了一些公司的logo。過往學員在我們的指導下才加Kaggle比賽也獲得了非常好的成績。也被主流技術媒體評為top數據培訓計劃。和很多的獵頭也有合作關係,讓他們來推薦我們的學員。另外我們學員網路和內推網路也會內推一些工作。1月21號開始的那個是一個16周的培訓計劃。其中8周教學,8周實踐。我們對項目實踐是非常重視的,拿出了8周的時間。我們的授課時間是周六和周日,每天2小時講課。周二周四有一些小課程,幫助大家完善一些面試中的比如說python演算法推導,比如python刷題。在周中也提供一對一的TA office hour,來提供更完善的幫助。

我們的培訓階段幾乎覆蓋所有數據師需要的技能,包括python tools,可視化,還增加了一些深度學習的內容。另一個特色就是我們的數據分析是建立在大數據結構裡面的,包括很多大數據方面的東西,包括剛才說的數據存儲和管理,data collection在大數據平台上應該怎麼做。這是最基本的技能。我們也增加了一些高級的技能課程,包括自然語言和推薦系統。最後我們帶同學做end-to-end的項目,從商業需求到網站。你可以根據自己的興趣選擇項目,選擇完之後你會有一個個人的網站來作為最後面試時demo的使用。我們今年大概準備了四個項目:自然語言過程,GIS等等。

在16周中還會提供6次面試輔導,包括面試,resume輔導,如何準備你的LinkedIn,怎麼在LinkedIn上發展你的social network。

-----------------PETER------------------------------------------------------------

今天我來分享一下如何從STEM專業轉到data science,應該也算個人經歷。我現在個人在data science有四五年的經歷,主要回顧一下如何進入領域,以及這個領域的一些需求。

我主要講一個case study:五年前我個人是什麼情況。我相信在我們的70多個同學中,會有不少STEM專業的,估計有一半是PhD或者on track的PhD。當時我的處境與大家有些相像。在我的專業相關的領域,faculty position是非常少的。如果想要faculty position的話基本上是需要五年以上post-doc經驗的。當時在我畢業前一兩年的時候看到實驗室有一些post-doc的師兄們努力地在找faculty position,我個人也是很鬱悶。因為前景不是太樂觀。第二就是那個大公司並沒有similar position open。一般相關的research scientist,他們的position opening都是要求十年以上經歷。當時我看了看整個industry的情況,existing scientist年齡的分布大部分在40到50歲,甚至以上。所以基本上當時我可以申請的industry job是有一個20年或者15年的斷檔的。這個斷檔並不是因為沒有人才,而是公司不招。大家現在在自己學術領域上,如果想往學術或者industry發展,可以看一下目前的situation是什麼樣子的。如果比我這個好,那麼我建議explore一下。如果和我之前情況差不多甚至略差一些,可以考慮alternative approach。當時我在想我要找一個除了academia和industry之外的一些領域。當時在學校裡面大家聽到最多的就是consulting,finance,還有當時比較新興的data science領域。之前我也面試了些consulting和finance的一些公司,但是發現每個人的興趣愛好是不一樣的。當你和finance公司面試的時候你會發現有時候你個人的behavior或者興趣愛好不在那塊。慢慢發現data和產品是我的興趣愛好。慢慢就把找工作放在了data領域,包括data analyst,data scientist。當時沒有想太多research science。

為了提高自己的競爭力,第一步就是簡歷和cover letter。簡歷和cover letter決定了公司是不是有next step的一個非常重要的stage。如果你的簡歷非常academia,或者不是非常容易被工業界認同,那麼你的簡歷很容易被扔在一邊。如果簡歷上你的skill sets和工作要求的skill sets是exactly match的,那麼你就會進入到下一步,去做on site或者phone interview。我當時是在這一步是去學校的career center。career center提供了很多很豐富的服務,很多學生其實在之前很多是不知道的,甚至畢業了也不知道。我建議大家多用這個資源來修改自己的簡歷和cover letter。我當時是每周去見一到兩次,個人感覺是很用幫助的。

另外一個如果找data相關的職業,如果你的PhD或者Master或者本科背景並不是data相關的,比如不是computer science或者statistics的背景,那麼我個人建議可以去拿一兩個certificate。因為這相當於把personal skill set和company skill set連在一起了,這樣的話公司就會去考慮下一步。也相當於你對公司有一個正面的commitment,相當於你是commit來做這個industry的。其實這裡面我和一些recruiter討論過這些certificate有沒有用。其實對於已經在industry裡面的人用處不大。比如說我現在再找SAS領域的工作,之前的certificate基本上是沒用的。但是如果對於新人,這個certificate是個很好的閃光點。有時候HR看到一些比如生物PhD畢業,有很好的publication,很好的材料,這樣背景就很不錯。但是他一看你的背景都是生物相關,那麼他就會懷疑你投他們公司的認真程度。如果你有一個SAS Certificate或者一些SAS相關的項目,至少公司會覺得你對這個領域感興趣,所以他也會用更多的時間在你的申請上面。所以這就是certificate方面我當時的一些行動。

另外我知道了自己的已知的知識水平和產業界需要的知識水平的區別和不足,這點是和industry的人討論的。當時學校附近的career fair會有很多校友回來,你就可以問一問在industry你需要哪方面的知識或者工具。當時我發現對我而言最大的不足就是SQL和Python。SQL就是學術界用的很少。學術界一般都是,比如大家做計算化學、計算物理、計算生物的話,都是師兄傳給師弟CSV file。這樣的話你真正query database的情況並不是很多。SQL其實是工業界非常重要的技能。如果你的SQL能到達比較高級的水平,那麼要拿到第一輪面試問題都不應該很大。所以SQL和Python是我當時的弱點,我就補了補。

當我prepare好了之後,我應該怎麼向公司證明我能做一個真實的project呢?我當時臨畢業5個月的時候找了一個project,那時候Kaggle並不是很火,所以是工業界的project。當時幾個人想了想,用data visualization做了個小項目來向committee member證明。在那個項目中我在自己的統計,SQL方面得到了練習,並且可以寫在自己的簡歷裡面。這就是當時我為了讓自己加入data science領域時做的準備。當時我是計算化學背景,所以大家如果是物理,生物,信息學背景其實都是可以轉的。同時我在PhD期間上了不少統計和cs的課。所以如果大家還在PhD,如果可以上一兩門課,會對於自己基礎的培養非常好的。

至於面試經驗,我的面試經歷是比較特殊的。我的面試基本上都是直接拿offer的,都是還不錯就直接過去了。所以我在面試時並沒有收很多offer比一比。從我的角度,個人準備是很重要的。如果現在大家還是PhD四五年的時候,那麼大家一定要為之後的一兩年準備一下,最好知道我們需要知道什麼,首先要知道,比如data science領域,在長期你的興趣是不是在這裡。因為今後五到十年或者三到五年,你應該都在一個領域。之後就是思考自己的技能是否符合data science所需要的基本技能。

如果你看數據科學的技能要求,基本上就是數據科學相關的所有要求。比如你要做visualization的話,你要知道visualization的所有信息。或者如果你做機器學習的話,你要學到所有機器學習的內容。這個技能要求就太大了。所以我在這裡說我們需要知道一些基礎的技能需求。你們只要能知道基本的東西,比如基本統計,基本演算法,基本工具,基本過程。如果現在不知道的話,我希望大家思考一下大家是否願意花時間把這些基本技能學下來。

再下一步就是希望大家想一想是不是比較好地知道industry market。比如對電商感興趣,你是否對電商的發展方向有一些了解。如果是logistics的話,那麼是否又知道logistics的structure有哪些,以及它與傳統structure的區別。這樣大家投簡歷時就會更清楚知道自己的興趣有哪些。比如當時我投簡歷的時候,我發現有一個公司是做配電硐的,如果我對那個行業有了解的話,我估計自己都不會投簡歷。

另外我希望大家可以從LinkedIn上面搜索一下當前existing job description。因為只有你看到job description時你才會知道你具備的技能和公司要求的技能有哪些差別。比如公司說要求用spark,你現在不會spark,你就會花一些時間學。所以在這裡大家要看一下dream和interest的區別,看看dream job的job description。我個人認為找工作之前這些準備是非常重要的。

這裡有我的一些建議。首先是familiarize with the data science toolkit。Python或者R都是可以的。Python我個人比較喜歡,因為他和engineering有很密切的聯繫。R的統計性會更強。所以如果大家把這些都掌握地很熟,這樣面試時的問題就不會特別大。

其次我們要know the basic data science language。我指的不是Python這種,而是大家交流時需要用什麼語言,比如說P-value, regression,random forest。

再次希望大家和industry內部的人建立聯繫。如果有industry的朋友,多聊聊天,了解一下這個行業是在成長還是萎縮的。比如之前有一個公司叫做Sears Holding,是一個很大的百貨店。如果你發現這個公司每年都是虧損的,那麼你就會知道如果我進入這個公司,有可能我進入的是shrinking pie,而不是growing pie。

第四個建議就是如果有事就去拿一個證書,或者項目。個人而言,證書方面SAS目前在矽谷方面用處並不是很大。但是如果對finance感興趣的話,SAS還是非常有用的。考個證書一星期之內也是沒有問題的。項目的話Kaggle是個很好的平台,大家可以做一做。也不一定非要得前10名或者前100名。只要能把數據科學的過程了解一下,去複製一下,這樣對大家也是有很大益處的。

所以今天我講的內容主要是STEM專業如何轉到數據科學。主要大家就是建立一下自己的現有知識和industry所需要技能的關係,找到不足,慢慢向數據科學領域進軍。

-----------------FRANK------------------------------------------------------------

我們今天主要說的是在finance和數據領域(或者cs領域)有關的兩個職位。一個是Quant Developer,實際上和software engineer是一樣的,在公司開發系統。因為公司自己的系統需要自己開發,不允許用外界提供的系統。而且他們也不傾向於外界提供的系統,出了問題之後不好解釋,尤其是交易系統。在developer行業,事實上大部分是學cs的同學。另一方面,在第一批Quant Researcher實際上大多是數學家和物理學家。他們還沒有成為大家的程度,有可能在自己的領域做了很多年,但是發現工作機會不是很大,而且發掘了finance市場,所以就轉行了,其實也不是被迫轉行,是一個市場的需求。主要的市場需求,第一批Quant是在70-80年代,在冷戰時期其實美國是儲備了大量的數學家和物理學家,做比如說曼哈頓計劃。在冷戰結束之後,實際上沒什麼事情去做了。但是90年代是,垃圾債券開始流行。再往下就是複雜的CDO產品。之前公開課提到的,所謂CDO實際上是一個複雜的玩法,類似於賭場的21點。這個東西需要一個定價,比如進入賭場玩遊戲需要多少門票錢。這個門票錢是由數學家和物理學家決定的。這是一個大的歷史背景。

但是根據歷史的延續,很多衍生品業務已經不存在了,比如我們沒有必要去設置比較複雜的遊戲,玩法,價格。所以大量quant由傳統定價,通過大量的隨機積分,轉向了時間序列。所謂時間序列就是想像一個表格,每一個縱列對應每一行,每一行是一個時間,每一個縱列是一個時間序列。我們主要做預測和分析。學EE的同學應該知道,機器學習有一個是信號處理。比如我現在說話,我現在及時處理我的輸入。這個就是及時處理。如果是數據進來預測未來的事情,這就是機器學習。還有就是數據進來我預測以前的事情。這就是三個狀態。

我今天要說的是比較現實的量化研究的技巧和素質。我們來看看市場。實際上在data science領域有大量的需求,有sell side,buy side, fin-tech,start-up,consulting。sell、buy side是買賣東西,主要是產品和服務。產品都是一個虛擬產品,比如未來和期貨。所有的期貨合約都不會成為現貨合約。有一個例子是曾經有一個交易員在做期貨是忘記了清算,結果在交易時去買了三萬頭奶牛去現場交易。這就類似於去賭場,你看到的籌碼和撲克但是玩的其實是虛擬的規則。所以看不到的產品,主要是期權。然後我們賭一年之後能不能到達一個價格。實際上我們購買的是一個遊戲,這個遊戲就是一個產品。或者購買服務,比如說賣方的研究,類似於行業研究員。賣方賣產品服務,買方買。我們有時候不能嚴格地定義買方和賣方。唯一的定義方法就是他用不用真正的錢去購買服務。如果需要用錢,那他們就是買方,反之是賣方。在data science方面我們有一個限價交易表格,實際上就是股票軟體中的買一賣一等。我們需要用機器識別或者機器學習來談就這個限價交易表格的規律。

Fin-tech對於數據科學家的需求量是比較高的。畢竟我們在傳統的bank中很少看到數據科學家,更多的是quant researcher。他們並不是做data science的工作,更多的是rich regression。目前在傳統行業主要是機器學習。Fin-tech是金融科技公司,本質上是科技公司,不是金融公司。可能創始人背景來自於金融行業。因為金融行業的門檻比較高,而突破性進展一般都是大公司的業務分離出來。比如說一個計算平台,內部軟體養了4000人的團隊,但沒有太多盈利性,這就要外包給在公司里的員工來做。 這實際上就是公司的一個團隊分離出來做這個軟體,然後再賣給其他人,這就是Fin-tech產業做的事情。Fin-tech專業方向有很多,第一個就是個人誠信(credit)。個人誠信在美國是比較強的,但是有很多國家是不夠的。這就是很多信譽公司出現的原因。大公司中單獨出來一個關鍵的部分,往往是fin-tech從0到1的過程。第二個就是只能投資顧問。你把你的個人信息,收入,年齡等等輸入進去,然後系統會出來一個自動優化的投資組合。主要方式是貝司統計或者貝司方法。用這個方法來分析過去的事情,然後來預測未來的行為。比如1000個硬幣,999個fair,1個unfair,投擲十次,然後問這些硬幣unfair的概率有多少。根據實驗更新對未來的預測就是這個方向的主要方法。

另外我來講一下consulting。現在的一個情況就是他們的公司開始招數據科學家了。有可能叫做business analyst。這裡我們指的是business consulting,而不是management consulting。因為management consulting理應僱傭數據科學家,比如說plantier。其次就是戰略諮詢。很多理工科同學認為戰略諮詢是騙人的,實際不然。很多戰略諮詢公司是有很多回頭客的。而且這些回頭客都是很高端的公司。戰略思路是很重要的。在諮詢領域,management consulting是最難進的,management consulting裡面麥肯錫是最難的,尤其是舊金山辦公室。因為他們工作量大,而且面對IT公司,比如說google。最近給google做的諮詢就是放棄google class,而是放在google drive上。把google drive和其他造車公司一起合作。因為有的同學應該知道,google drive的自動駕駛汽車是沒有方向盤的,聲稱自己能達到五級駕車級別。自動駕駛分五個級別,特斯拉現在在第三個級別。然後對於google,在生產時有可能會發現,雖然軟體跟得上,但是一些硬體的生產是跟不上的。所以他們要和造車行業合作。

在management consulting領域,麥肯錫已經在招數據科學家了。所以如果有的同學非常有商業嗅覺可以試試。在初始階段對數據科學家的要求還不是很多,主要是分析數據,對於數據給出一些創新性的看法。一般的職位都是quant researcher,這是金融中最重要的職位。然後還有investment banker,portfolio manager, management consultant等等。

如果我們想找跟商業有關的職位,那麼我們來看一看我們缺什麼?即使是統計和cs的PhD,我們還是有欠缺的。

第一個就是統計傳統的統計是不帶機器學習的,是藉助一些定理。比如傳統統計學裡有linear regression。比如諾獎得主的三因子模型,用三個因子來解決股票的收益率。這就是一個線性回歸模型。不是所有的情況我們一上來就做線性回歸的。我們要觀察數據符不符合一些假設,比如說x和y有沒有線性的關係,x和x是不是獨立的,x的殘差是不是獨立的,x的殘差分布是否隨時間改變。如果大家不知道我以上說的這些東西,那就說明大家還欠缺一些統計的知識。

第二就是機器學習機器學習包括很多東西。我們需要系統的學習和掌握。

第三就是stochastic,是一個隨機的過程,帶有布朗運動的隨機積分或者數學過程。在金融領域的模擬非常重要,還有就是uber的定價也需要用。在uber的例子中,它會隨機給出一些信息計算價格並且算出來平均數。

還有就是做finance時要用的pricing,比如說給一個電腦定價。Greeks(希臘字母)是期權的五個導數。

最後就是我們還需要知道一些面試的真正的題目不是說懂了一個題目就能做得對,因為面試時可能會被忽然問懵了。公司希望的是敏銳思考和解決方法,所以我們需要面試的一些專門題目。

-----------------WILL--------------------------------------------------------------

大家好,我主要介紹一下data science面試新的情況和動向。我先介紹一下我自己,我最近開始找工作,大概花了一個半月,投了七八家公司,拿了兩三個offer。在面試過程中我發現很多以前找實習的方式方法和找全職有很多不同的方面。第一個就是全職對編程的要求更高像原來面試data science,基本上知道一些data structure就夠了,比如說python的list,array。但是現在很多的公司需要比較高的編程能力,需要刷leetcode medium hard的難度。具體的語言無所謂,個人比較推薦python,因為比較簡化定義的步驟。相比於C++和Java,python有很多buildin structure可以避免一些原本面試官不想考你的東西。這時候python你可以直接用。但是python自身也有問題,比如有時候recursion有的參數不可以被直接更新,這是函數語言的問題。所以,data science對於編程的能力要求越來越高,大家要學會在自己在白板上寫代碼,或者電面的時候公司會直接給你一個collaborating package來和面試官一起寫代碼,這在之前都是比較少的。

第二就是對於實際操作能力要求越來越高比如說現在回問一些比較open-mind的問題,而不像原來一樣問很多yes-or-no的問題。比如說What is the assumption of linear regression這種問題越來越少,而逐漸變成結合公司目前狀況來問一個問題。比如一個遊戲公司有可能會問你覺得我們現在的遊戲現在可以設計什麼新的feature,需要搜集什麼數據,怎麼獲取數據,是從cookie獲取還是要去買,怎麼執行你的要求,要用什麼方法去檢測,需要什麼方法建模。這些要求都比較高了,並不是說你只知道統計或者機器學習就可以了。你需要把這些知識聯繫到實際情況中來回答問題。

所以你必須要使用公司的產品,對公司有一定的了解比如你沒有玩過這些遊戲,沒有用過Snapchat,那麼有很多他們公司的專業術語你就有可能不知道。這樣的話從culture fix來講你有可能就無法進入下一輪的面試。對於一個公司,你有可能還要知道這個具體的組做什麼,它的產品針對哪個領域,消費者是誰?如果是一個2C的公司,有可能你還需要去使用它的產品,有一些基本感受,然後去面試,這樣才會有更好的發揮。

另外一個動向就是現在很多工作要求你有industry的經驗,要求實際操作能力。比如你有沒有操作過大數據,怎麼操作的?這就導致數據科學的門檻越來越高,所以對於fresh graduate很不利,因為在學校大家很難接觸industry用的東西,或者直接用SQL的API接到一個程序裡面。

另外實習經歷也很重要,如果沒有實習經歷,那麼一定要有幾個完整的project現在的面試還有一個過程就是它和你過簡歷。如果簡歷里沒有一個很吸引人的project那麼很有可能你的面試就直接結束了。但是如果他發現了很有趣的實習經歷和項目,他會問你一些技術細節。

現在data science對於技術細節的要求也是越來越高所以公司會列出很多機器學習的模型或者演算法,比如SDM,random forest。有可能你直接調用了package,做出了結果,然後寫在了簡歷里。但是實際上你需要知道在每一步你是怎麼實現的這一個演算法,你的假設是什麼,你的數據和假設之間能否match,如果用模型預測結果,如何檢查自己結果的正確程度?這樣一來你就需要對整個過程非常了解,面試官也有可能對整個過程進行提問。比如說如果你用了random forest,那麼面試官有可能會問你怎麼選取的features。如果你用了bootstrap,那麼他有可能問你bootstrap有什麼好處,有什麼不足。bootstrap是有放回還是無放回,你的數據是怎麼取的,你是怎麼parallelize結果,怎麼做預測,怎麼test,怎麼選取number of trees?所以如果簡歷里只寫我用了random forest然後扣了一個python 的package 是不夠的,現在面試對於細節的要求越來越高了。

下一點就是大家有可能會在面試之前去google,或者去論壇看面經我感覺編程的面經還是挺有用的,比如面試SDE,因為leetcode cover了很多內容,有很多新的問題他們也會互相分享,這時候面經就是挺有用的。當然對於數據科學,面經很少,可能只有一兩句話,而且有可能並不是面試官想要考察的點。實際上有些公司會根據你的個人背景來personalize對你的面試過程,這個過程你是沒辦法準備的。所以每個人還是要build up skill set,在簡歷上有所展示,確定你很熟悉這些技能。這樣會對於通過面試比較有幫助。當然有一些面試經驗還是非常有用的,比如說你去面Capital One這種公司,他都是有固定的面試題目的,面經還是很有幫助的。

下一點就是很多公司會更傾向於招女生,這是從diversity考慮的。所以我建議很多女生來進入data science的行業。其實data science不像software engineer一樣需要on call的。數據科學不需要on call,而且有時候還可以work from home。所以有些女性朋友如果組建了家庭,work from home會更利於work-home balance。此外,由於對diversity的考慮,在同等情況下,很多公司傾向於招聘女生。這時候女生是更吃香的。

最後一點就是behavior的問題,尤其是onsite我在實習時我看到過onsite的人,包括我去實習也有很多和我一起onsite的人。develop engineer,因為完全在後台,穿著和行為並不是很重要,技術過硬就可以了。但是數據科學,你需要和客戶交流,或者加入一些帶有exact level的會,或者做marketing project時你會接觸很多marketing的人,所以在面試數據科學家時你不能忽視你的穿著或者一些行為上的問題。雖然平時business casual就可以了,但是你也不能蓬頭垢面。有時候大家會覺得這只是一個笑話,但是這是實際發生的事情。與develop engineer不同,data scientist會參與一些前台的工作,所以行為問題不能完全忽視。當然如果有些公司說不要系領帶,那你就不要系領帶了。當然這些問題都可以在約onsite時提前問一下HR,比如說公司的文化是什麼,有沒有什麼dressing code,如果沒有的話就穿business casual就可以了。

-----------------DAVID--------------------------------------------------------------

前面幾個老師已經介紹了數據的概況,fin-tech領域相關內容和數據科學的求職方向。我結合自己的經驗介紹一下如何準備數據科學。我也是Peter所謂的理工STEM轉行的。我來介紹一下我是怎麼準備數據科學的面試的。

我是根據skill set來準備的,第一就是統計。統計我覺得很多理工科大學的基礎就可以了,必須說概率論,統計理念,參數工具。我之前有一個電話面試就給你快速問答題,完全是統計的知識,比如讓你定義P-value,大數定理,置信區間等等。給你一分鐘,你知道就描述一下,不知道就pass。有的公司就採取這個方式。這樣你就需要統計最基礎的東西。你可以複習一下統計基礎或者複習一下Coursera的統計基礎課。雖然很多人已經上過很多統計基礎課了但是還是很容易犯錯的。比如說置信區間,我當時回答就錯了。我後來維基百科時發現我說的就是維基所說的錯誤理解。後來我才看到維基上真正的理解。有時候Coursera的老師會給你講很多基礎的東西,最後你就可以形成自己的理解。然後你形成自己的理解,這樣你就可以很快地回答上來這些問題。

第二就是機器學習。一般就是台灣林老師的機器學習基礎和機器學習技法這兩門課。機器學習的準備方式就是掌握常見演算法和背後思想,比如linear regression。比如剛才Frank老師說的linear regression的定義,假設,使用條件等等。機器學習中還有比如說防止overfitting有多少種方法,如何做cross validation。如果你選擇了一個模型,他會問你如何去選擇,你的參數怎麼取。還有一些演算法,比如降維,PCA,他也會問你很多細節。對於機器學習,如果你只看書,掌握演算法,推導,其實是不夠的。面試還是會根據你的project來問你相應的演算法。你可以通過Kaggle比賽來準備。Kaggle有一個好處就是數據和matrix的給定的,你只需要知道如何利用數據建模就可以了。有時候數據並不是numerical,然後你就會建立feature engineering的skill set,工作之後你會用到很多,反而建模比較少。所以參加Kaggle比賽時你會遇到這些數據題,你就會建立經驗,工作和面試有可能會問你這些題,比如你能從數據中得到什麼feature。這就是Kaggle帶給我們的機器學習的知識。

另外現在DS並不是不再問演算法。其實演算法問得還是挺多的。在工作中雖然你是數據科學家,系統不需要你寫。但是你需要提供部分代碼,比如production code。這樣你就需要學習一些演算法。因為生產線上其實有時候會有latency 的要求,這時候你就需要熟悉演算法的複雜度,根據要求寫出演算法。我當時就是leetcode寫到了hard難度。我當時的面試除了問到了機器學習之外,還問到了一些medium難度的題,讓你在白板寫出來,很多都是原題。

最後就是大數據。這也是一個skill set,因為作為DS,很多時候你是在做feature engineering。如果數據很大,你用python是不可能的。這時候你就需要用到一些大數據的東西,比如說Hadoop。包括現在工作都需要用到這些工具。有時候你有一個新的想法,比如算一年以內的平均值,這樣你就要寫自己的package,然後運用到模型。

這就要根據公司的工作描述來準備。包括我之前有一個公司要求自然語言處理。這樣我就看了很多關於自然語言處理的東西。起碼讓公司知道你具備這些能力。

加分項是深度學習如果你知道一些基本模型,如果公司在用深度學習,然後你做過相關的project,如果你在面試時回答得很好,這就是加分項。如果你不太理解深度學習,你也沒必要花很多時間在上面。因為現在的數據科學大多是還是重點於傳統的decision tree或者leetcode的演算法題。

這就是我自己的轉行經驗和需要的skill set。

Q&A

Quantitative Investment is more related to financial engineer. Do we have to have this background to do quant investment? For example, I have stats and finance background. What areas do I need to explore to get into financial industry?What skills do I need?n

Stats 和 finance背景非常好。但是這個行業非常激烈,你的統計有什麼程度這是需要測試的。比如對置信區間的理解。如果你的統計和finance背景非常強,那麼你進入這個領域是完全沒有問題的。還有就是如果你的finance背景非常強,那麼比如你對洛克希德馬丁公司的估值看的是PE還是PB。如果你不知道這個答案,那麼就說明你的finance畢竟還不足。這個問題的答案是這樣的。洛克希德馬丁公司是一個軍工公司。因為是重資產,所以earning是負數。所以並不能看PE而是PB。

你需要的技巧就是把統計和finance加深。雖然有時候你從高中到PhD都學了相同的概念,但是事實上在每一個階段你學到的東西是不一樣的。如果在這些方面你是strong higher,那麼你的面試官是有很大幾率錄取你的。如果你能解釋統計中很細微的區別,那麼你的理解才夠深入。所以並不是說你有一個很強的統計背景就可以了,你需要不斷加深不同方面的理解。一般有四種。一是傳統統計;二是我們數據應用學院機器學習的課程,非常細,甚至會問到SVM很細節的實現,比如複雜度,假設檢驗的P-value。如果你認為P-value是第一類錯誤的可能性,那麼下一個問題很有可能就是什麼是第一類錯誤,什麼是第二類錯誤?做分類問題時你有可能還會遇到ROC-curve。那麼這個curve是越抖越好,越接近45°直線越好還是越遠離45°直線越好?這些問題都是層層關聯的。所以說招收PhD的關鍵就是PhD往往對行業有深入的理解。如果你對每個方面都是淺嘗輒止的話,那麼這個素質還是不太夠的。我們希望你有很深入的理解。這是思想的複雜度和深入度。公司希望看到成熟的大腦。

Most of people won』t have access to high frequence trading data. Is there any data and analysis strategy that everyone can access and learn by themselves?n

確實很多人接觸不到高頻交易數據。你可以從Kaggle上搜索2-sigma,這樣你就會有很多數據來玩。2-sigma競賽使用因子模型,最早是由Fama-French提出的三因子模型。這個競賽其實不是三因子模型,而是118因子模型。所以你會發現它有118個feature。所以你可以去看一下。

做Data Scientist一定要有PhD背景嗎?本人目前在製造業,Master讀的工業工程,學過不少統計的課。現在想轉行做數據。由於沒有相關工作經歷,是否應該先從data analyst做起曲線救國?n

之前Frank老師說過PhD背景是因為PhD在一些方面有深入的理解。首先你需要補一些相關方面的課和項目,還有面試的經驗和技巧,這樣你做DS其實是完全沒有問題。DA主要是做一些SQL,如果你對這個有興趣那麼你可以去做,但是如果你覺得這個不如DS有趣,你可以通過訓練直接面試DS的,不一定先從DA做起,因為我覺得DS和DA的工作並不是很相同。但是也有很多人在公司,雖然職位是DS,但是做的是DA的工作。所以你還是要具體看一下DS的工作是什麼,最DS做進一步的了解,完善自己的skill set,然後Master找DS事完全沒有問題的。

其實PhD有時候也有不好的東西,比如說太注重理論,對應用不太了解。所以有時候一些職位有可能PhD還沒有你具有優勢。

(一個物理PhD的)基本技能包括計算機語言python MATLAB java等獲取爭利益及轉化各種實驗數據,根據模型做參數擬合,以及結果圖像化。希望這些基本技能可以有助於進入更大的數據處理行業。想問如何更快更有效的培養更直接相關技能?n

如果要問剛快更有效的方法,那就是參加Kaggle然後贏得前5%。對於計算機語言,推薦python 和R,因為DS幾乎都是用python和大數據的東西。

如果你參加Kaggle比賽,你會發現它和實驗處理數據完全不一樣的。因為你在70%的時間都在做feature engineering。剩下的時間才是用模型做assemble。所以在比賽時你才會經歷feature engineering或者機器學習中如何調參數,如何防止overfitting等等。當然數據應用學院還有一些額外的偏工業的項目,但是你需要具備Kaggle比賽時能夠從clean data裡面實現模型的能力,然後你再結合實際。所以我認為參加Kaggle,得到比較好的名次,給自己定一個目標,這樣你就會得到比較好的DS的技能。

關於Kaggle我們曾經寫過很多文章來探討Kaggle競賽對於數據行業求職的幫助等等,大家可以去查閱一下。1月21日我們會開始第8期的數據科學和數據工程求職訓練營,這是一個16周的訓練營,目的是幫助營員找到工作。如果大家感興趣的話可以來到網站DataAppLab.com看一下項目。

如果大家對講座或是其他的有問題的話,可以通過 info@dataapplab.com來給我們發信。我們的電話是1800-485-7918。感謝大家參加公開課,希望以後我們保持聯繫。我們還會繼續做更多公開課,希望可以對大家有更多的幫助。


推薦閱讀:

一個優秀數據分析師應該培養哪些好習慣?
No.16 沒有專業搞測試的可咋辦
Uber員工被曝侵犯用戶隱私,跟蹤前任和碧昂斯等名
說一說最近打車難的原因
人類正在變成七秒魚還是三秒男(II)

TAG:数据 | 职业发展 | 求职面试 |