分享:我的第一次數(shù)據(jù)科學家實習經(jīng)歷
「數(shù)據(jù)科學家」可謂是近幾年的一大熱門職位,很多學習了數(shù)學、信息、計算機相關(guān)專業(yè)的同學都對它表示躍躍欲試。Admond Lee 學習了物理專業(yè),曾參加瑞典歐洲核子研究中心(CERN)的物理夏令營,而今他也走上了數(shù)據(jù)科學家的道路。近期他撰文回憶了自己的數(shù)據(jù)科學家實習經(jīng)歷,編譯如下。
Admond Lee:
在寫本文時,正是我在 Quantum Invention 做數(shù)據(jù)科學家實習生的倒數(shù)第二天。此刻,我坐在筆記本電腦屏幕前,再回想起過去幾個月的學習歷程,非常艱辛但充滿成就感。
旅程總有終點,但問題長存
––––你學到了什么?這就是你想要的嗎?
作為一個搞物理的人,請原諒我總是問正確的問題,以適當?shù)幕卮饋韺で笳胬怼?/p>
事實上,作為一個數(shù)據(jù)科學家,提出正確的問題毫無疑問是重要的(后面將會解釋…)
給你們大致介紹下,這篇文章主要分為三個部分(實習前、實習期間和實習后)來講述我的實習旅程的經(jīng)歷。根據(jù)你的目前的學習階段可跳轉(zhuǎn)到任意部分。讓旅程開始吧!
謝謝您!當我在 Medium 上發(fā)表的***篇文章時,我情緒高漲。因為其受到了非常多人的大力支持,甚至因其特色而發(fā)表在了 towardsdatascience.com 。這真的成為我繼續(xù)與更多的人分享我的學習經(jīng)驗的動力,僅僅是因為學習樂趣,幫助他人變得更好!
實習之前
我仍然清楚地記得,在 2017 年 11 月我的期末考試結(jié)束后,我開始閱讀課本,《統(tǒng)計機器學習入門—R語言的應(yīng)用》。這是我在基本和統(tǒng)計層面上***次接觸到機器學習。
一旦我掌握了這些概念,我就開始學習一門流行的課程,那就是吳恩達在慕課上教的《機器學習》課程。一開始課程內(nèi)容并沒有大家預想的那么容易,但是吳恩達卻一直能抓住大家的注意力,盡管許多概念都很復雜,但都能被他簡化以便于理解消化,似乎沒有其他人能做到。我想這就是我真正學會機器學習的原因。我敢打賭,試一試你就會知道機器學習這個熱門詞匯并不像聽起來那么復雜。
同時,我還學習了人工智能的另一個重點領(lǐng)域––––深度學習?;仡櫼幌?,這個看似外來用語其究竟是什么含義,請看神經(jīng)網(wǎng)絡(luò)的解釋以及神經(jīng)網(wǎng)絡(luò)可用來計算任何函數(shù)。好了,如果讀完了推薦的文章之后,還像我一樣,總是需要某種可視化以了解事物是如何工作的,那就請點擊這里,按「播放」按鈕,坐下來,放松,觀察神經(jīng)網(wǎng)絡(luò)是如何用來做分類和回歸的。很酷,不是嗎?
所有的閱讀、學習和作業(yè)都為我 2017 年 12 月的實習做好了準備。
實習期間
我申請的 Quantum Invention 公司致力于利用其集成的移動性應(yīng)用套件、企業(yè)物流與分析平臺向消費者、企業(yè)和政府提供移動性情報。而我是***個加入 R&D 和分析團隊的數(shù)據(jù)科學家實習生。
在接下來的幾天里,我認識了許多同事,了解到各種行業(yè)術(shù)語,以及正在進行的令人興奮的項目。實習過程中我最喜歡的一點是信任和自由,作為實習生我可以自由選擇我感興趣的項目并全力以赴!
令我驚訝的是,我意識到我是***個開始這個項目的人,因為以前沒有人這么做過。當沒有人做過某事時,就需要研究,這是我感激的地方,盡管帶有不確定性和困難。為什么?僅僅因為我有機會體驗從零開始進行數(shù)據(jù)科學工作的整個流程(如果不是全部)。
請允許我列出我所經(jīng)歷過的這些工作流程,因為這些建立了我的數(shù)據(jù)科學基礎(chǔ)。我希望你在某一天發(fā)現(xiàn)它有用。
1. 了解商業(yè)問題
所選擇的項目是短期高速公路行駛時間預測??雌饋硭坪醴浅:唵?,然而就像我說的,問正確的問題對于數(shù)據(jù)科學家來說是非常重要的。在項目最終確定之前,提出了很多問題來真正理解真實的商業(yè)問題,包括數(shù)據(jù)來源、項目的最終目標(甚至在我離開之后)等。從本質(zhì)上講,我們的目標是預測未來幾分鐘在新加坡高速公路的行駛時間且要比當前的基線估計更準確。
2. 采集數(shù)據(jù)
在新項目的激勵下,我開始從數(shù)據(jù)庫和同事那里收集數(shù)據(jù)(基本上是在辦公室四處走動,詢問數(shù)據(jù)源的問題)。收集正確的數(shù)據(jù)類似于從各種不同的數(shù)據(jù)網(wǎng)站中提取數(shù)據(jù)然后進行數(shù)據(jù)預處理的情況。這是非常重要的,它能影響你在后期構(gòu)建的模型的準確性。
3. 數(shù)據(jù)預處理
真實世界的數(shù)據(jù)是臟的。我們不能指望數(shù)據(jù)像 Kaggle 提供的那樣格式整潔且沒有噪聲。因此,數(shù)據(jù)預處理(其他人可能稱之為數(shù)據(jù)整理或數(shù)據(jù)清理)是非常重要的,以至于我不得不多次強調(diào)它有的重要性。它是最重要的一個階段,因為它可以占據(jù)整個工作流的 40% 到 70% 的時間,只是為了清理數(shù)據(jù)以供你的模型使用。
我喜歡數(shù)據(jù)科學的一件事是你必須對你自己誠實。當你不知道你還不知道什么的時候,你就會開始覺得數(shù)據(jù)預處理已經(jīng)足夠干凈,并準備把它用在你的模型上,此時就存在著用錯誤數(shù)據(jù)試圖建立正確模型的風險。
換句話說,總是不斷質(zhì)疑自己,用你擁有的領(lǐng)域知識判斷數(shù)據(jù)在技術(shù)上是否是正確的,請嚴格而仔細地檢驗數(shù)據(jù),以檢查在整個數(shù)據(jù)集中任何其他的離群值,缺失或不一致的數(shù)據(jù)。
有一次,我喂給模型的數(shù)據(jù)是錯誤的,只是因為在預處理步驟中的一個簡單錯誤,在犯了這個錯誤后我特別小心。
4. 建立模型
經(jīng)過研究,我提出了支持向量回歸(SVR)、多層感知器(MLP)、長短期記憶網(wǎng)絡(luò)(LSTM)和狀態(tài)空間神經(jīng)網(wǎng)絡(luò)(SSNN)四種模型并用在我的項目中。此處不詳細展開,你可以在許多網(wǎng)站上找到每個模型的詳細解釋的資料。
對于一個像我這種仍在學習慕客課程以及教科書的人看來,從頭開始構(gòu)建各種不同的模型是一個陡峭的學習路線。幸運的是,Scikit-learn 和 Keras(采用 Tensorflow 作為后端)算是我的一個救星,因為它們很容易讓你快速學習模型原型且是采用 Python 實現(xiàn)的。此外,我還學會了如何優(yōu)化模型及使用各種各樣的技術(shù)微調(diào)每個模型的超參數(shù)。
5. 模型的評價
為了評估每個模型的性能,我主要使用以下的一些度量:
- 平均絕對誤差(MAE)
- 均方誤差(MSE)
- 決定系數(shù)(R2)
在這個階段,上述步驟 3 - 5 被重復(互換)直到確定***模型能夠超過基線模型的估計精度。
實習之后
嗯,實習已經(jīng)印證加強了我對數(shù)據(jù)科學的熱情,我很感激我的實習工作,其確實為我將來工作帶來了一些動力。在研究和開發(fā)階段,與不同的利益相關(guān)者交談所需的溝通技巧、用數(shù)據(jù)來解決商業(yè)問題的好奇心和熱情等等方面都提高了我對此領(lǐng)域的興趣。
數(shù)據(jù)科學行業(yè)仍然很年輕,它的工作描述對我們這樣的求職者來說可能顯得模糊不清。不具備所有需要的技能是非常正常的,因為大多數(shù)工作描述是理想化的,以符合他們的***期望。
當有疑問時,只要從慕課、書籍和文章(我現(xiàn)在還在做的)中學習基本原理,然后通過你自己的個人項目或?qū)嵙晛磉\用你所學到的東西。要有耐心。學習之旅需要時間。津津有味地去開始你的學習旅程吧。因為…
旅程總有終點,但問題長存
–––– 你學到了什么?這就是你想要的嗎?
謝謝大家的閱讀。