人們總是問我如何有效的成為一名資料科學家。我的經歷是先成為一名軟體工程師,然後讀了資料科學相關的PhD (是在它變成熱點之前)。在這篇文章裡,基於我在這個領域的經驗總結,給出了成為資料學家的首要步驟,目的是為了幫助那些想從純軟體工程領域轉行到資料科學。
當我們就讀PhD 課程的過程中,如果你已經明確要成為一名資料科學家,那麼我並不建議使用傳統的學習方法。當我們自主學習時,我們可以從網際網路上找到大量可用的學習資料。事實上,我們可以比讀一個PhD進步的更快,因為PhD專案有很多循規蹈矩的事情花費我們大量的精力。
這篇文章由五個相關步驟構成。儘管我列出了順序,但是很多步驟可以同時進行。
第一步:從解決一個難題開始
儘管你對於資料科學領域的機器學習和資料方面一無所知,從解決一個難題開始非常重要。理想化的,你可以找一些自己感興趣的東西,因為這樣做起來會更有激情。
你可以用一些原有的難題,例如 Kaggle competition 或者 UCI datasets. 或者你也可以自己蒐集資料分析,這樣會更具挑戰。
當時,我的興趣點是 natural language processing 和 user modeling. 我的導師被授予一批經費對調查問卷進行情感分析,那也成為了我研究的方向。這個課題很快被著眼於研究作者和他們表達情感的方式之間的關係上面,同時也被應用於提高情感分析演算法的準確性上面。為了達到研究目的,我收集了大量IMDb使用者的文字資料。難點在於結合這些使用者自己的評論去推斷他們的等級,假設考慮作者的身份的方法比忽略其身份背景更有用。
第二步:跨越你知識的屏障
無論你選擇了什麼問題,你都會面對跨領域知識的學習,像維基百科,教材和網上課程都會是類似機器學習和資料,最好的基礎教程。當你面對一個具體的難題時,閱讀專業論文將會有助於你更好地理解眼下這個難題。
讀PhD就是給了我寶貴的時間,例如用一個月時間去閱讀文獻。我閱讀地200多頁地論文中大部分都是有關情感分析的,那讓我對於這個領域地成就有了全面的瞭解。然而,最有效的方法時停止閱讀,開始動手解決問題。這也是我認為最好的建議:沒有比親自動手解決困難更有效的學習方法了。
第三步:弄“髒”你的手
當選好的課題和跨領域學習都已經基本完成,是時候做一個計劃並且努力實現它。由於我的背景是軟體工程師以及對於early collaborative filtering approaches to recommender systems的嘗試,我的計劃很大程度上就像 Leo Breiman 所說的演算法模型文化。那就是:我將更多關注於開發處理蒐集資料過程的建模演算法。該方法更像是由直線思維的軟體工程師提出來的,而不像是數學家或者資料學家的方法。
這個計劃非常的簡單:
• 複製結果,結果顯示rating inference 模型是由很多目標群體提供的文字測試過的(i.e.,寫了文字的作者的等級是我們用來預測的);outperform 模型有更多多樣性的客戶提供的文字測試過的。
• 用一種被聯合篩選的方法,以目標客戶提供的文字為基礎,把許多單一作者的模型和infer rating 的模型就目標群體的共同點進行對比。
• 多種相似的實驗方法基於訓練和目標客戶提供的大量文字中各種各樣的限制條件。
• 重複這些方法直到結果出來。
這個計劃的原理是:因為不同的人表達情緒的方法不同,而相似的人表達情緒的方法相似(e.g.,不同文化背景下描述事物的方法不同)。最主要的推動因素是 Pang 和 Lee 的發現-在同一目標試驗足夠的文字量的模型是最好的。
我當時用來實現這項計劃的方式與今天我將怎麼做截然不同。那是2009年,結合 Weka package 用Java 的主要模型看起來比我以前用的C/C++是顯著的提高。我很大程度上依賴於學校網路去執行實驗和寫一大堆程式碼去處理試驗邏輯,包括一些 Perl 指令碼 for post-processing。 雖然結果很複雜,但是那樣確實很奏效並且我得到了可以用來發表文章的結果。如果我當時做像今天這樣的工作,我會把 Python用於所有的事情。 IPyhon Notebook 是跟蹤實驗過程很好的方法,以及Python packages 例如 pandas, scikit-learn, gensim, TextBlob, 等,都是對於資料科學入門簡單而成熟的方法。
第四步:發表你的結果
制定一個發表結果的期限的確很有壓力,但是它會有兩個積極的效應。第一,把你的實驗結果公佈開來可以讓你得到有價值的反饋。第二,艱難的截止日期可以有助於你制定切實的目標。你可以一直保持收穫無數細小的進步,但是出版截止日期可以強制你停下來。
我的例子是,UMAP 2010 會議是我的截止日期,會議承諾的免費去夏威夷履行也稱為了一個很好的激勵因素。但是及時你沒有精力和時間去發表一篇專業論文,你也應該給自己制定一個發表一些東西在部落格或者論壇的截止時間;也或者是一個導師可以關注到你工作的報告。得到持續不斷的反饋是進步的主要因素,所以應該儘早公佈,經常公佈。
第五步:完善你的結果並且繼續前進
恭喜你!你已經把你的努力公之於眾了。接下來應該幹什麼?你可以繼續專注於同一個難題-探索更多的方法,加入更多的資料,改善限制條件,等。你也可以著眼於其他你感興趣的難題。
我的例子是,因為我接下來要學習的東西與我第一篇論文的試驗結果有關,我不得不再次回到那個議題。結果是我把所有的實驗材料都組織整理好去支撐我的論文(寫一篇論文是讀PhD的首要任務)。如果我可以選擇,我將不會那樣做。我將追求如何有效地加強我的論文,例如用一個客戶為主體,使用更多的切實全面有效地方法,和測試不同方法而不是僅僅去支援向量機器。因此,我仍然在審視核心觀點-在情感分析當中,客戶的身份背景應該被考慮進去,這個方法直到今天仍然切實有效。但是我已經採取了自己地方法並且繼續進行下去。