大鼻觀點一週年慶:入行三年的心酸血淚QAQ

表格123

大鼻觀點這個部落格成立大概一年多了,當初創立的想法其實很簡單:身邊有很多人想要轉行做資料科學家,卻不得其門而入,我剛好是剛轉行成功的菜逼巴,有一些經驗可以分享,因此決定開了這個部落格。這個部落格其實非常隨性,幾乎就是我想到什麼就寫什麼,所以要非常謝謝各位讀者的包容與支持!我今後會繼續寫下去!在部落格成立滿一週年以及申請博士班如火如荼的時間點,我決定花點時間回顧一下我這三年來的經歷,希望能夠給目前跟我一樣菜逼巴的新鮮資料科學家一點方向,以及 connect the dots 一番。

 

資料科學不是只有機器學習

 

身邊許多想要成為資料科學家的朋友告訴我:我想要運用機器學習解決商業問題,這是個很好的出發點,也是我當初轉往這個領域的主要原因,但在這個領域耕耘了一陣子之後,我理解到一件事情:熱門的機器學習算法只是資料科學家的一小塊必備技能,很多時候機器學習並不足以真正解決一個商業問題。在我看來,資料科學家其實有兩種類型,一是協助公司針對一個重要的議題進行縝密的科學分析,並提出相對的解決方案,另一種則是機器學習科學家,專門針對重要的功能建立機器學習的pipeline與演算法。

 

對於第一種類型的資料科學家,我認為最重要的能力其實是「能夠理解並拆解商業問題」以及「針對分析結果進行有效的溝通」,這類工作的工作夥伴往往是不同領域的專家,比如說:提出問題的部門(如:我在CHOCOLABS主要協助產品、行銷以及商業開發團隊進行分析)、工程師(如:我在CHOCOLABS時常會需要後端工程團隊的協助)等。坦白來說,我認為我在實習時有很多可以改善的環節,比如說:我當時不太敢去跟其他團隊的正職仔細討論他們的商業問題,時常需要依靠我的主管傳達訊息;我當時不太知道怎麼跟後端團隊開需求,我擔心我請他們幫忙會讓大家覺得我不夠有能力等等。當然,我覺得我也有些做得不錯的地方,比如說,盡量用最簡單的方法將分析結果呈現給行銷團隊看,辨認出影響使用者觀看行為的重要因素等等,我覺得之所以能有這些表現,主要是依賴 (1) 對於各類不同資料探勘模型都有一定的掌握,(2) 我在BizPro接受的商業訓練,讓我比較知道怎麼樣跟 business-side 的人傳達訊息。作為這一類的資料科學家,你需要的是廣泛的統計/機器學習知識,基本的資料庫操作技能,對於商業問題的熱誠,以及縝密的邏輯分析能力,並不是單單修了一門機器學習的課,就會具備這些技能了。

 

對於機器學習的資料科學家,就更不只是了解機器學習演算法了!為什麼機器學習這麼有用?主要是因為在大部分的商業問題中,只要能夠 scale up,任何一點微小的改善,都能夠創造巨大的影響。我自己的經驗:通常「不用機器學習可能有80分,用了機器學習變成85分」,80分跟85分的威力在使用者數量多時就會很驚人!然而,要將一個複雜的機器學習模型上線,在資料pipeline的設計非常困難。在設計Pipeline的時候,我自己會建議先要把output想好再去想怎麼跟input串接,在設計時也要注意擴充性的問題,避免想要多加一個功能要重構整組程式碼。另一個機器學習專案的特色是,嚐嚐需要多個開發團隊協作,因此code review以及程式碼管理變得非常重要。這點我非常感謝在 Yoctol 實習時我的主管 Ian 與柏憲的指導!其實我剛到 Yoctol 時非常辛苦,一來是我從來沒寫過 Python,二來我也從來沒用過 Git 以及進行團隊協作過,因此我同時得學很多東西,尤其是第一週為了趕快能夠做事拼了命地學Python,寫了很多爛code給Ian改 XD 在寫程式上面,Ian 給了我很大的啟發:要不斷去思考為什麼要這樣寫,而不是只是可以把 code run起來就好!雖然我現在很少寫 Python 了,但這件事情在寫R時也非常重要。另外團隊開發也是我一開始很不習慣的地方,尤其是 master 與 branch 的管理,我一開始以為是指令不熟的問題,後來才體會到這是流程管理的問題。如果大家對於團隊開發的心態建立有興趣,我滿推薦人月神話的,尤其是對於沒有任何軟體專案開發經驗的人,可以很快具備一些重要心態。

 

盡量學著閱讀學術論文

 

我覺得資料科學很特別的地方是,常常學界走得比業界快 5 年,所以如果遇到不會解的問題,常常可以在學術論文中找到一些解答。我自己在工作上也時常看paper,但看法跟學校做研究不太一樣,由於時間有限,我看機器學習的論文主要都是在看 (1) 這個論文解什麼問題 (2) 作者怎麼解這個問題 (3) 如何衡量這個問題解法的績效好壞,其他technical 的證明可以不用太仔細。如果發現這篇paper的方法可以用,第一件事情就是去 github 上看有沒有已經實作好的套件可以用,如果每有的話也可以自己實作,但要評估實作難度。另外,我也會看一些 information system / quantitative marketing / econometrics 類的論文,主要是因為從領域角度出發的論文很擅長把不同的演算法組在一起,這會給我很多建立模型的想法。像是我在 CHOCOLABS 做的推薦系統,或是我目前工作做的市場情資分析系統,都是靠看一些特殊領域的論文想到的idea做出來的!

 

關於怎麼樣能夠順利讀懂一篇學術論文?我的建議是:當遇到一個不熟悉的主題,先去找 survey paper 來看,通常只要在 Google Scholar 上打 OOO survey 就搜得到了,建議看10年內引用次數特別高的幾篇。看完之後會對於目前這個領域的研究成果有個概念,再針對survey paper裡面提到的幾個重要的論文去搜尋就可以慢慢找到你需要的文章。另外,如果你要讀懂大研討會的論文(像是ICML, NIPS 等),你可能要先去查查這些論文前面有哪些相關議題的論文,才會比較懂一篇論文在幹嘛;如果是要讀 journal articles 我覺得可以不用特別往前查,因為通常裡面都會有比較清楚的背景介紹。另外,看不同類型與不同領域的研討會/期刊,需要懂得知識不太一樣,如果是看機器學習的,懂微積分跟線性代數大概就夠了,可能會用到一點點機率;如果是要看JMLR的,可能要比較深的數學證明底子,尤其是機率的部分;如果要看統計類的論文,數統沒學好大概是看不懂了。

 

過程非常艱辛與痛苦

 

雖然資料科學家是個很性感的職業,但就跟性感的model要維持身材一樣,資料科學家需要付出很多辛勞在學習知識上。我剛轉統計的時候最痛苦的就是線性代數不好,所以我花了一個月的時間把數學系的線代課本啃完,雖然大學有修數統但老師其實也沒有很仔細地在上,所以我也是自己花了一個月啃完。後來在工作的時候時常我要解的問題學校也沒有課程教過,所以會花很多時間自己研究,時常也會茫然手足無措,像是最近一次是我從來沒有寫過R Shiny但我只有一個禮拜的時間把專案做完,我也是硬著頭皮直接看別人的source code 查 document 做出來。

 

我覺得過程之所以會這麼辛苦,主要還是因為學校沒有人會教這些技能與分析方法,也沒有人告訴我在這條路上怎麼學習比較好。台灣大部分企業的資料科學團隊都剛起步而已,對於新鮮的資料科學家,沒有mentor跟老師是必然的。也因為感受到台灣資料科學教育的資源缺乏,尤其是現在市面上課程都只是教怎麼寫程式,離能夠真的在工作中實戰還太遙遠,因此我跟我的朋友目前正在開發比較高階一點的課程,希望能夠盡快發布,一起讓更多想要進入這個領域的朋友有好的資源。

 

最後,希望大家繼續支持大鼻觀點,如果可以的話也幫我祈禱一下博士班申請XDD 希望一月二月能有好消息告訴大家!期待跟大家邁向第二個週年紀念!

About David Huang

目前在台灣大學就讀統計碩士學位學程。我的研究領域是特徵表達與降維分析、序列決策模型、以及財務時間序列,我喜歡用商業的觀點切入大數據與資料科學!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *