如何成為一名數據科學家(附學習資源)
【看中國2017年7月2日訊】數據科學技能
大多數數據科學家每天都使用組合技能,其中一些是他們在工作當中自學的,也有可能通過其他途徑學到的。他們有各自不同的背景。不是說你非要有什麼學位證書才能證明你是數據科學家。
本文涉及到的所有技能都可以自學。我們已經列出了一些資源,以幫助你走上數據科學家這條路。你可以把本文的內容看作是指導你如何成為一名數據科學家。
數學是數據科學的重要組成部分。從微積分到線性代數這些大學數學的基礎知識,要確保你都能知道。你知道的越多,你也會越來越好。
當數據變得越來越龐大,也就意味著它越來越難處理。這時候你就必須使用數學來處理數據了。
別以為你在大學沒上過這些課,你就可以不知道了。說到底你還得需要瞭解如何操作數據矩陣,演算法數學背後的大致思路你也得知道。
參考資料:15個數學MOOC課程可以幫助你掌握數學技能。麻省理工學院還提供了一個開放課程,專門針對數據科學的數學。
你必須得知道從一些小的數據集裡如何利用統計學從而得出同樣適用於大數據的理論。這是數據科學的基本法則。統計學將為你如何成為一名數據科學家鋪平道路。
你需要知道統計是基於數據的,有了數據才能進行統計。統計能夠讓你更好地理解從數據中觀察到的模式,並提取你需要的觀點來做出合理的結論。例如,理解推論統計學可以幫助你去證實取自於小人群中的觀點放到所有人群中的每一個個體也同樣適用。
要瞭解數據科學,你必須瞭解假設檢驗的基礎知識,並設計實驗以瞭解數據的含義和上下文。
資源:我們的博客發表了一篇關於貝葉斯定理,概率和統計數據相互交叉的文章。這篇文章為理解如何成為數據科學家的統計基礎打下了良好的基礎。
演算法
理解如何使用機器來完成工作對於處理和分析數據集來說是至關重要的,因為這些數據集已經遠遠超出了人類的思維能夠處理的範圍。
如果你想在數據科學方面做出重大的改進,那你就必須瞭解演算法選擇和優化背後的理論。你必須決定問題是否需要回歸分析,還需要決定是否需要一個能夠幫助你將不同數據點分類到已經定義好的類別裡面去的演算法。
這樣以後,你自己就會主動的去瞭解很多不同的演算法以及機器學習的基本原理。機器學習就好比是允許亞馬遜根據你的購買歷史從而給你推薦產品,並且不需要任何直接的人工干預。這是一套演算法,它是利用機器的能力去挖掘你的思維。
為了處理這些大量的數據集,你到時候就得使用機器了,因為這樣你才能擴展你的思維。
參考資料:KDNuggets的這個指南幫助解釋了10個常見的且通俗易懂的數據科學演算法。這裡還有19個免費的公共數據集,你可以在數據上實現不同的演算法。
數據可視化
完成數據分析只是這場戰役的一半。要想推動影響,你必須說服他人相信並採納你的觀點。
人類是視覺生物。據3M和Zabisco透露,傳遞給大腦的幾乎90%的信息本質上是視覺的,通過視覺進行處理的速度比通過文本將近快6萬倍。
數據可視化是一種通過圖表和其他可視化工具來呈現信息的藝術,這樣觀眾就可以很容易地理解數據並從中獲取信息。使用條形圖展示什麼信息最好?我們在散點圖中應該展示什麼類型的數據?
人類天生就會對視覺線索作出反應。你能夠通過數據把你的觀點表達得越好,別人就越有可能根據這些數據從而採取行動。
參考資料:我們有31個免費的數據可視化工具,你可以嘗試使用一下。Nathan Yau的FlowingData blog裡面充分體現了數據可視化提示和技巧,這些技巧可以提高你的水平。
商業知識
數據在沒有上下文的情況下是沒有意義的。你必須瞭解正在分析的業務。清晰度是如何成為數據科學家的核心。
大多數公司之所以依賴於他們的數據科學家,不僅僅是希望他們能夠挖掘數據集,而且還希望他們能夠將其結果傳達給各種利益相關者,並提出可行的建議。
最好的數據科學家不僅有能力處理大型複雜的數據集,而且還能理解他們所工作的業務或組織的複雜性。
擁有一般的業務知識可以讓他們提出正確的問題,並提出有見地的解決方案和建議。
參考資料:免費商業課程可以幫助你獲得你需要的知識。我們的商業課程數據分析可以幫助你與導師一起學習。
專業領域
作為一名數據科學家,你應該瞭解你所從事的行業以及它所處的行業。
除了對所在公司需要深入瞭解之外,你還必須瞭解它在你的商業洞察力中所起的作用。來自生物學研究的數據可能與精心設計的心理學研究中收集的數據具有截然不同的背景。你應該足夠瞭解行業行話。
參考資料:這很大程度上依賴於行業。你必須找到自己的方法,儘可能多地瞭解你的行業。
數據科學工具
分析思維
在數據科學中,你需要擁有一個善於分析的思維模式。很多數據科學都要求你得具有敏銳的頭腦才能解決問題。
參考資料:經常讀書或者解答一些謎題可以幫助你提高思維的敏捷。像Lumosity這樣的網站有助於你在任何時候都能保持敏捷性。
隨著你使用技能越來越熟練,以後你可能需要學習如何使用現代數據科學工具。每種工具都有其優點和缺點,並且在數據科學過程中扮演著不同的角色。你可以使用其中一個,或者全部。下面是對數據科學中最流行的工具做一個廣泛的概述,如果你想深入瞭解這些工具,那麼你將需要正確地學習它們。
文件格式(File Formats)
數據能夠以不同的文件格式存儲。以下是一些最常見的:
CSV:逗號分隔值。你可能已經使用Excel打開了這類文件。csv使用分隔符將數據分隔,一些標點符合就可以把不同的數據點給分隔出來。
SQL:SQL,或者叫結構化查詢語言,將數據存儲在關係表中。如果從右到左定位某一列,那你將在同一個實體上獲得不同的數據點(例如,一個人在AGE,GENDER和HEIGHT類別中將有一個值)。
JSON:JS對象標記是一種輕量級的數據交換格式,易於人閱讀和編寫,同時也易於機器解析和生成。來自Web伺服器的數據通常以這種格式傳輸。
電子文檔(Excel)
Excel簡介:Excel通常是數據科學的入門工具,每個數據科學家都可以從學習excel的過程中獲益。
Excel允許用戶使用一款所見即所得的編輯器就可以輕鬆地操作數據,而且它還允許用戶在數據上不用通過編碼就能執行方程式。對於那些想要輕鬆獲得結果而不會編程的數據分析師來說,這是一款非常方便的工具。
Excel入門很容易,雖然它是一個程序,但是任何人都能在分析中得到直觀的理解。對於那些不會編程的人來說,用它傳遞數據就非常方便:他們可以基於這些數據再做相關操作。
使用人群:傾向於使用Excel的數據分析師。
難度級別:初學者
示例項目:從NBA球員的統計數據中導入一個小數據集,並對聯盟中得分最高的人做一個簡單的圖表。
SQL
SQL簡介:SQL是查找數據最流行的編程語言。
數據科學需要數據。SQL是一種專門設計用來從資料庫中提取數據的編程語言。
SQL是在數據科學家中使用最廣泛的工具。世界上的大多數數據都存儲表中,如果想訪問的話就需要使用SQL。用戶還可以對數據進行過濾和排序。
使用人群:數據分析師以及傾向於使用SQL的數據工程師
難度級別:初學者
示例項目:從Billboard 100的SQL資料庫中選出最流行的10首歌曲
Python
Python的簡介:Python是一種強大的、通用的適用於數據科學的編程語言。
一旦你下載了Yhat的Python集成開發工具Rodeo,你就會很快意識到Python是多麼的直觀。作為一種多用途的編程語言,從網站開發到從web上收集數據,Python有許多代碼庫致力於使數據科學工作更容易。
Python是一種通用的編程語言,具有簡單的語法,易於學習。
Python工程師的平均工資範圍大約是10.2萬美元。Python是大學裡最流行的編程語言:Python程序員的社區在未來幾年只會變得更大。Python社區熱衷於教授Python,並構建有用的工具,可以節省用戶的時間,並允許用戶對數據做更多的事情。
許多數據科學家使用Python來解決他們的問題:o’reilly進行的一項權威數據科學調查中,有40%的人使用了Python,使用Excel的是36%。
使用人群:數據工程師和使用Python來進行中型數據集的數據科學家將
難度級別:中級
示例項目:使用Python來收集名人的推文,然後分析應用編程規則所使用的最常用的單詞
R語言
R語言的簡介:R語言是數據科學社區的主要內容,因為它是為數據科學需求而設計的。它是數據科學中最流行的編程環境,43%的數據專業人員使用它。
R是為數據分析設計的編程環境。當涉及到建立統計模型並顯示結果時,R的優點就會大放異彩。
R是一個可以應用廣泛的統計和圖形技術的環境。
社區提供了類似於Python的包,可以擴展R代碼庫的核心功能,使之能夠應用於具體的問題,例如度量財務指標或分析氣候數據。
使用人群:數據工程師和使用R作為中型數據集的數據科學家
難度級別:中級
樣本項目:利用R來繪製過去5年股市走勢的圖表
大數據工具
大數據來自摩爾定律,這是一種計算能力每兩年翻一番的理論。這掀起了數百萬臺計算機產生的大量數據集的熱潮。想像一下Facebook每時每刻的數據量有多大!
根據麥肯錫的數據,對於像SQL和Excel這樣的傳統數據工具來說,過大的數據集都可以被認為是大數據。其實關於大數據最簡單的定義就是不適合計算機的數據。
以下是解決這個問題的工具:
Hadoop
Hadoop簡介:通過使用Hadoop,你可以將數據存儲在多個伺服器中,同時可以通過一臺機器控制所有的數據。
實現原理是一種稱為MapReduce的技術。MapReduce是一種優雅的編程模型,它將一系列的計算機看作是一個中央伺服器。這樣用戶就可以在多臺計算機上存儲數據,但是通過一臺計算機就可以處理數據。
Hadoop是一個開源的工具生態系統,它允許你對你的數據進行MapReduce,並在不同的伺服器上存儲巨大的數據集。它允許你管理比你在一台電腦上的更多的數據。
使用人群:數據工程師和使用Hadoop來處理大數據集的數據科學家。
難度級別:高級
示例項目:使用Hadoop來存儲實時更新的大型數據集,比如Facebook用戶生成的數量。
NoSQL
NoSQL簡介:NoSQL允許用戶在不需要權重的情況下管理數據。
將所有表的所有數據放在一起會很麻煩。NoSQL包含了大量的數據存儲解決方案,這些解決方案將大數據集分割成可管理的塊。
NoSQL是Google為處理海量數據而開創的。web開發人員通常使用JSON格式構造數據,像MongoDB這樣的解決方案創建了資料庫,可以像SQL表那樣被操縱,但是可以存儲數據結構和密度更小的數據。
使用人群:數據工程師和使用NoSQL來進行大數據集的數據科學家,通常是數百萬用戶的網站資料庫。
難度級別:高級
示例項目:在web上部署的社交媒體應用程序的用戶中存儲數據。
將數據科學過程中的所有工具綜合在一起
我們所描述的每一個工具都是互補的。每個工具都有自己的長處和短處,每一個又都可以被應用到數據科學過程的不同階段。
數據收集
有時,它並不是在進行數據分析,而是在找你需要的數據。幸運的是,我們有很多資源。
你可以通過從所謂的API或應用程序編程介面獲取數據來創建數據集,該介面允許你從某些供應商獲取結構化數據。你可以在Twitter、Facebook和Instagram等其他網站上查詢各種各樣的數據。
如果你想基於公共數據集獲取到一些信息,美國政府已經對所有人免費提供了一些數據集。最流行的數據集都會在Reddit上面留下蹤跡。數據集搜索引擎,比如Quandl,可以幫助用戶搜索出完美的數據集。
Springboard已經在我們的博客上收集了19個我們最喜歡的公共數據集,以幫助用戶隨時隨地都可以用到質量較高的數據。
那麼哪裡可以找到一些有趣的數據集呢?看看Yhat的你之前可能從來沒有見過的7個數據集,其中一個數據集是關於鴿子比賽的!
Python支持大多數數據格式。你可以使用CSV,也可以使用來自web的JSON。你可以直接將SQL表導入到你的代碼中。
你還可以從web創建數據集。Python請求庫使用一行代碼就可以從不同的網站抓取數據。你可以從維基百科的表格中獲取數據,一旦你用beautifulsoup庫清理了數據,你就可以對它們進行深入的分析了。
R語言可以從Excel、CSV和文本文件中獲取數據。在Minitab或SPSS格式中構建的文件可以轉換為R dataframes。
Rvest包允許用戶執行基本的web抓取,而magrittr將為用戶清理和解析這些信息。這些包類似於Python中的請求和beautifulsoup庫。
數據處理
Excel允許用戶輕鬆地使用菜單函數清理數據,這些函數可以清除重複的值、過濾和排序列,以及刪除數據的行或列。
SQL具有基本的過濾和排序功能,因此你可以準確地找到所需的數據。你還可以通過SQL更新表並從表裡面清除某些值。
Python使用Pandas庫進行數據分析。與Excel相比,Python處理更大的數據集要快得多,而且擁有更多的功能。
你可以通過對Pandas的數據應用程序方法來清理數據。例如,可以將數據集中的每個錯誤值替換為一個默認值,比如一行代碼中的零。
R可以幫助你添加信息的列,重新塑造和轉換數據本身。許多較新的R庫,如reshape2,允許你使用不同的數據幀,並使它們符合你所設置的標準。
NoSQL允許你將大數據集子集,並根據你的意願來更改數據,你可以使用它來清理你的數據。
數據探索
Excel可以將列添加到一起,獲得平均值,並使用預先構建的函數進行基本的統計和數值分析。
Python和Pandas可以採用複雜的規則,並將它們應用到數據中,這樣你就可以輕鬆地發現高級趨勢。
你將能夠對Pandas進行深度的時間序列分析。你可以追蹤股票價格變動的細節。
R是用來對大數據集進行統計和數值分析的。你將能夠構建概率分布,對你的數據應用各種統計測試,並使用標準的機器學習和數據挖掘技術。
NoSQL和Hadoop都允許你在與SQL相似的級別上探索數據。
數據分析
Excel可以在高級級別分析數據。使用可以動態顯示數據、高級公式或宏腳本的主表,這些腳本允許你以編程的方式處理數據。
Python有一個數字分析庫:Numpy。你可以用SciPy進行科學計算和計算。你可以使用scikit-learn代碼庫訪問許多預先構建的機器學習演算法。
R有很多的包,用於特定的分析,比如Poisson的分布和概率定律的混合。
數據通信
Excel有基本的圖表和繪圖功能。你可以輕鬆地構建儀錶板和動態圖表,只要有人更改了底層數據,就可以更新這些圖表。
Python有許多強大的選項來可視化數據。你可以使用Matplotlib庫來從你的Python中嵌入的數據生成基本的圖形和圖表。如果你想要一些更高級的東西,你可以試試繪圖。ly和它的Python API。
你還可以使用nbconvert函數將你的Python筆記本轉換成HTML文檔。這可以幫助你將代碼片段嵌入到互動式網站或你的在線投資組合中。許多人使用這個函數創建了在線教程,學習如何學習Python。
R是用來做統計分析並演示結果的。它是一個強大的環境,適合於科學可視化,有許多專門用於圖形顯示結果的包。基本圖形模塊允許你從數據矩陣中生成所有基本的圖表和圖。然後,你可以將這些文件保存為jpg格式的圖像格式。或者你可以將它們保存為獨立的pdf文件。你可以使用ggplot2來獲得更高級的情節,例如使用回歸線的複雜散點圖。
開始找工作吧
既然你已經掌握了數據科學的技能和工具,以及瞭解如何成為一名數據科學家,現在就該把這個理論應用到數據科學工作的實踐中去了。
構建數據科學組合和簡歷
想要進入到數據科學行業,那麼你必須得給面試官留下深刻的第一印象。這需要從你的個人資料和簡歷開始。許多數據科學家都有自己的網站,這既是他們工作的儲存庫,也是他們思想的博客。
這使他們能夠展示他們的經驗和在數據科學社區中創造的價值。為了讓你的個人資料有同樣的效果,它必須具備以下特徵:
你的資料應該突出你最好的項目。相比於展示太多沒有價值的項目,重點突出那些值得紀念的項目會更好。
必須是精心設計的,並且講述一個引人入勝的故事,能讓別人知道你是誰,而不是你的工作。
你應該通過突出你的工作所帶來的影響來為你的訪客建立價值。也許你建立了一個對每個人都有用的工具?也許你有教程?展示在這裡。
應該很容易找到你的聯繫方式。
看看我們的導師Sundeep Pattem的個人資料是如何展示的,比如他所參與的項目。
他研究的是在現實世界中引起共鳴的複雜數據問題。他有5個項目,涉及醫療成本、勞動力市場、能源可持續性、在線教育和世界經濟,這些領域有大量的數據問題需要解決。
這些項目獨立於任何工作場所。他們表明,Sundeep天生喜歡用數據科學來解決複雜的問題。
如果你缺乏項目創意,你可以參加數據科學競賽。像Kaggle、Datakind和Datakind這樣的平臺讓你可以處理真正的公司或社會問題。通過使用你的數據科學技能,你可以展示你的能力,並創造出最強大的投資組合資產:表現出對行動的偏見。
在哪裡找工作
Kaggle提供了一個專門針對數據科學家的工作委員會。
你可以在工作搜索引擎Indeed上面找到一份公開的數據科學家的工作。
Datajobs上面有很多數據科學家的工作。這是一個瞭解如何成為數據科學家的好地方。
你也可以通過網路和找導師來尋找機會。我們需要繼續強調的是最好的工作職位通常是通過與數據科學社區的人交談來發現的。這就是你成為數據科學家的方式。
你也可以在創業論壇上找到工作的機會。Hacker News有一個專門為Y Combinator孵化的創業公司(也許是世界上最有聲望的創業加速器)。Angellist是一家尋求融資的創業公司的資料庫,它有一個就業部門。
數據科學面試
我們完全可以將面試寫成一本書,事實上,我們也真的這麼做了!
如果你接受了面試,你接下來會做什麼?在數據科學的面試中,有很多問題都是被問到的:你的背景,編碼問題,以及應用機器學習的問題。在任何數據科學的採訪中,你都應該預見到技術和非技術問題的混合。確保你對你的編程和數據進行科學研究,並試著將它與你的個人故事交織在一起。
你也經常被要求分析數據集。你可能會被問到文化契合度和統計問題。為了準備編碼問題,你必須把對數據科學的採訪部分看作是軟體工程的練習。你應該複習一下所有的編程面試資源,其中很多都是在線的。下面是一些你可能會遇到的數據科學問題。在這些問題中,你會看到一些常見的問題:
在這些問題中,你會看到一些常見的問題:
Python vs R:你更喜歡哪種語言?
什麼是k-均值(一種特定類型的數據科學演算法)?描述你什麼時候使用它。
請告訴我一些你工作的最後一個數據科學項目。
你對我們業務的主要增長驅動力有什麼瞭解?
第一類問題測試你的編程知識。第二種類型的問題測試你對數據科學演算法的瞭解,並讓你與他們分享你真實的生活經歷。第三個問題是深入研究你以前對數據科學所做的工作。最後,第四種類型的問題將測試你對你所面試的企業的瞭解程度。
如果你能證明你的數據科學是如何幫助你的潛在僱主的,你就會給他們留下深刻印象。他們會知道,他們有足夠的人關心他們的工作,而且他們對這個行業瞭解得足夠多,他們不需要教給你很多東西。這就是成為數據科學家的方法。
(文章僅代表作者個人立場和觀點)