2
本文作者: 何忞 | 2016-11-02 09:35 |
在數(shù)據(jù)科學(Data Science)領域,除了“什么是數(shù)據(jù)科學”這個問題以外,大家最感興趣的問題就是“如何學習數(shù)據(jù)科學?”其實這個問題除了新手會問,有時候領域內的老手也有些迷惑。
數(shù)據(jù)科學家被譽為“2016年最佳工作”,甚至是“21世紀最性感的工作”,但學習起來真的并沒有我們想象的那么輕松。
網絡上可以找到大量關于學習數(shù)據(jù)科學的建議,但是如此大量的信息堆疊讓可能還是讓初學者感到無所適從。所以本文想要給出一個較為簡單的學習方法:用八個步驟學習數(shù)據(jù)科學。本文的目的不在于為你提供一個詳盡的學習清單,我們只是為每一個對學習數(shù)據(jù)科學有興趣或者已經從事該領域工作但仍然想要提升自己的人們提供一個指導性意見。(另外,文中的插圖能幫助視覺型學習者更加快速地學習)
原文作者 Karlijn Willems,雷鋒網編譯,未經許可不得轉載。
什么是數(shù)據(jù)科學?
數(shù)據(jù)科學這個概念目前仍然比較模糊。一直以來,跟數(shù)據(jù)科學概念相關的概念層出不窮。下圖是第一張關于“數(shù)據(jù)科學”概念的韋恩圖,由 Drew Conway 在2010年制作。圖中的中心部分是數(shù)據(jù)科學,韋恩圖表明它是黑客技術、數(shù)學、統(tǒng)計學和其他實質性的專業(yè)知識的組合。
多年來,關于數(shù)據(jù)科學領域的概念韋恩圖非常多,并且越做越好。如果你想查看關于這個方面的詳細歷史,這里有一篇文章可以關注:Battle of the Data Science Venn Diagrams。但是最近,對這個概念的討論又有了新的進展。2016年,Gregory Piatetsky-shapiro 制作了一個不同的概念圖,其中有兩點最引人注目:數(shù)據(jù)科學不再處于圖的中心位置;并且他定義數(shù)據(jù)科學的方法也有所不同。最新的研究室是利用數(shù)據(jù)科學與其他學科(如人工智能、機器學習、深度學習、大數(shù)據(jù)、數(shù)據(jù)挖掘)的關系來對其進行定義。由此得出的定義是,數(shù)據(jù)科學是人工智能、機器學習和大數(shù)據(jù)的交集,并與數(shù)據(jù)挖掘有著本質性聯(lián)系,它是數(shù)據(jù)挖掘的擴展集和后繼術語。
這兩個圖示可能看起來完全不同,但是它們的確有很多相似之處:Piatetsky-shapiro 的圖示也運用了 Drew Conway 的韋恩圖中的黑客技術、數(shù)學、統(tǒng)計學和其他實質性的專業(yè)知識。
數(shù)據(jù)科學家的教育背景
過去幾年中,有很多關于數(shù)據(jù)科學家教育背景的調查,調查的結果也不盡相同。2014 年的 O' Reilly 數(shù)據(jù)科學家薪酬調查中,大約 28%的受訪者擁有學士學位,44%擁有研究生學位,20% 擁有博士學位。數(shù)據(jù)科學家們普遍有著數(shù)學/統(tǒng)計學、計算機、工程的學科背景。下圖是 2016 年的調查結果,與 O' Reilly 的調查結果非常接近。
通常來說,你可以從調查中看到,數(shù)據(jù)科學家的普遍教育程度是碩士和博士。學科領域并不是十分重要,但是定量研究類的學科背景仍有一定優(yōu)勢。
第一步:學好統(tǒng)計學、數(shù)學和機器學習
雖然數(shù)據(jù)科學的定義在不斷地改變,但是數(shù)據(jù)科學仍然是一種技術型學科。對統(tǒng)計學、數(shù)學和機器學習的良好知識基礎仍然是對數(shù)據(jù)科學家這一行業(yè)的基本要求。
學好這三門課是非常痛苦的,尤其是對于那些沒有技術背景的人。但幸運的是,有很多高質量的資源可以幫助你學習:Khan Academy 有十分多樣化的在線數(shù)學課程,你會由此受益良多;同時,別忘了在 MIT Open Courseware 上學習線性代數(shù)課程;機器學習部分,你可以參考DataCamp, Stanford Online, Coursera。
第二步:學習編程
提升你的編程技巧也是學習數(shù)據(jù)科學的必經之路。
你可以從熟悉計算機的基本知識開始,了解基礎的數(shù)據(jù)結構和搜索算法,明白端到端的工作流程。因為數(shù)據(jù)科學家的工作需要與其他系統(tǒng)相結合,所以最好能夠明白從需求收集到分析,再到測試、維護的整個過程是如何進行的。當你掌握了這些概念后,就應該開始選擇一種編程語言。你可以選擇開源語言或者收費版的語言,選擇的考量在于學習語言的時間長短、你想要進入的行業(yè)的要求、語言的性價比等等。下圖可以幫助你選擇適合你的語言。
第三步:學習數(shù)據(jù)庫
當你開始學習數(shù)據(jù)科學時,你會發(fā)現(xiàn)很多教程將重點放在從非二進制文件中檢索數(shù)據(jù)的技巧。然而,當你開始工作或進入行業(yè)內部時,你會發(fā)現(xiàn)絕大多數(shù)的工作是與一個或多個數(shù)據(jù)庫相關聯(lián)的。
市面上有很多種數(shù)據(jù)庫。企業(yè)可能使用的是商業(yè)版的數(shù)據(jù)庫(比如 Oracle),或者更傾向于開源的數(shù)據(jù)庫。在眾多數(shù)據(jù)庫中學習的關鍵在于明白數(shù)據(jù)庫是如何運作的,學習數(shù)據(jù)庫的原理、工作過程和輸出結果。其中最應掌握的概念是關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)和數(shù)據(jù)倉庫。你應該充分學習關系型建模和維度建模方法,學習 SQL 和抽取、轉換、裝載的過程(ETL)。
如果你想要學習數(shù)據(jù)庫,你可以查看Mongo DB University,Stanford Online 的在線課程 Introduction to Databases 和 DataStax 及 TutorialsPoint 上的教程。
第四步:探索數(shù)據(jù)科學家的工作流程
學習的下一步就是了解數(shù)據(jù)科學的工作流程。很多指導教程和課程僅僅關注其中的一個或者兩個部分,并沒有對這個工作流程提供一個完整的視角,而對整個工作流程的宏觀了解卻是你今后成為數(shù)據(jù)科學家或是在數(shù)據(jù)組中工作時必須掌握的。其中很重要的問題是,不能忘記數(shù)據(jù)科學家的工作是一個需要不斷迭代的過程。
對已經學會編程的數(shù)據(jù)科學的入門者來說,了解工作流程最簡單的方法就是練習你的編程技巧,用 R 語言或者 Python 語言來開始練習,學習使用數(shù)據(jù)包和數(shù)據(jù)庫來簡化你的編程過程。
對于那些編程技巧不夠的初學者,你可以利用開源的工具,因為它不需要你的任何編程技能。這些工具可以使你在同一時間完成數(shù)據(jù)科學工作流程中的多步工作。比如,RapidMiner 可以對你的數(shù)據(jù)進行收集、標出重點、清潔數(shù)據(jù)、建模、評估等等。應該注意的一點是,你可以去使用這些工具,但是你仍然需要繼續(xù)提升你的編程技術。
第五步:大數(shù)據(jù)進階
很多人在學習的時候過分關注數(shù)據(jù)科學的基本知識,而忘記了其宏觀的結構概念。在之前的步驟中已經對此有一些提示,但是這里仍然有一個矛盾,比如就像你在學習教程時重點關注的是非二進制的文件但是在實際工作使用中卻更多需要數(shù)據(jù)庫。更重要的一個問題在于數(shù)據(jù)的更新速度、多樣性和數(shù)據(jù)量都是明明白白地擺在那里的,我們不可能忽略這些。
大數(shù)據(jù)或許是有些夸大的說法,但是它的確存在,并且認識它,明白它的深刻含義是非常重要的。其中三個最最需要了解的關于大數(shù)據(jù)的內容是:
1、明白為什么大數(shù)據(jù)需要不同的數(shù)據(jù)處理方法?這里最好的學習方法可能是查找使用大數(shù)據(jù)的案例,比如 點擊這里。
2、熟悉分布式系統(tǒng)基礎架構 Hadoop 的模型,因為它被廣泛用于數(shù)據(jù)的分配存儲和處理,詳見Hadoop。
3、不要忘記了 Spark框架。你可以嘗試用 Python 或 Scala 語言來學習 Spark,這樣你既練習了編程技術,也擴展了對數(shù)據(jù)科學的視野,一舉兩得。
第六步:成長,交流,學習
成長。如果你已經成功掌握了之前所說的一些基礎知識,接下來就是成長提升的階段了。你要通過各種數(shù)據(jù)科學方面的問題來不斷地練習,努力將學習的原理應用到實踐中。同時,你也應該從中增強自己在該領域的直覺感。練習題目看這里:Kaggle 和 DrivenData。
溝通。作為一個數(shù)據(jù)科學的初學者,你可能在學習中遇到過很多問題和困惑。你應當多于該領域有經驗的人溝通交流,與他們討論你的問題,向他們尋求幫助和建議。這些人會激勵你繼續(xù)學習,鞭策你走的更遠。
學習。持續(xù)性的學習和數(shù)據(jù)科學也許是一對同義詞。上文提到的Kaggle 和 DrivenData 可以教會你如何在實踐中進行數(shù)據(jù)處理,但是你還可以在自己的日常生活中把知識運用的更深入。
第七步:完全將自己沉浸其中
就像學習語言需要語言環(huán)境一樣,學習數(shù)據(jù)科學也需要這種能夠沉浸其中的環(huán)境。根據(jù)你已有的能力和知識,你可能會考慮參加集訓營,找實習,或者找相關工作。參加集訓營是一種快速提高能力的方法,同時也可以收獲志同道合的朋友,擴展你的人際圈。尋找集訓營,請點擊 Galvanize 和 Metis。
其次,如果你已經熟練掌握了數(shù)據(jù)科學的基本知識,你可以考慮找一個實習崗位。很多大公司(如 Facebook、Quora和亞馬遜)都在尋找相關實習生,你可以從實習崗位開始對該領域的深入探索。你還可以從你的社交網絡渠道中尋找開放的職位和實習信息。最后,你也可以關注創(chuàng)業(yè)企業(yè),小公司也許可以讓你學到更多。AngelList里有一些初創(chuàng)企業(yè)的招聘信息。
最后一種沉浸其中的方法是找相關工作,然而很多初學者在這里遇到了瓶頸。也許你對數(shù)據(jù)科學家的工作十分感興趣,但是在找工作的時候一定要牢記以下內容:
1、工作職位并不是總是符合其定位。他們也許貼出尋找“數(shù)據(jù)科學家”的招聘信息,但實際上是在尋找數(shù)據(jù)工程師或者商業(yè)分析師。查看這篇文章 The Data Industry: Who Does What,你可以了解到企業(yè)究竟在招聘時要什么崗位。
2、正確設定你的期望。如果你沒有數(shù)據(jù)科學家、數(shù)據(jù)庫或端對端方面的工作經歷,直接申請數(shù)據(jù)科學家或分析師的職位是不現(xiàn)實的。請確保在申請時具備相關工作經歷。不要因為無法立刻找到工作而氣餒。相反,你應該保持學習,提升能力,并持續(xù)關注企業(yè)的招聘信息。
第八步:與時俱進
最后這一步有時候經常被大家遺忘。即是你已經在從事數(shù)據(jù)科學方面的工作,你也應該時刻牢記,數(shù)據(jù)科學需要持續(xù)地學習。這個領域總有新的進步,所以保持對周邊事物的好奇心和信息靈敏度非常重要。所以不要忘記時常閱讀社會媒體的評論報道,追蹤行業(yè)大牛動態(tài),總之就是要與時俱進。
數(shù)據(jù)科學領域的最新新聞,你可以從這些地方獲取:KD Nuggets,Data Elixir,Data Science Weekly。行業(yè)大牛的推特也要經常查閱,比如: DJ Patil,Andrew Ng,Ben Lorica。
你還可以加入一些在線社區(qū),及時與同行溝通。
比如 LinkedIn中的“大數(shù)據(jù)”、“分析學”、“商務智能”、“大數(shù)據(jù)分析”、“數(shù)據(jù)科學家”、數(shù)據(jù)挖掘、統(tǒng)計、大數(shù)據(jù)、數(shù)據(jù)可視化、數(shù)據(jù)科學“等等群組。
還有 Facebook 上的“數(shù)據(jù)科學入門”、“分析學”、“機器學習”、“數(shù)據(jù)挖掘”、“R語言”、“Python”等等群組。
Subeddits中還有一些“R/數(shù)據(jù)科學”、“R/stats”、“R/Python”等群組。
Via Kdnuggets
推薦閱讀:
IBM 和 Slack 強強聯(lián)手,開發(fā)更智能的數(shù)據(jù)分析聊天機器人
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。