如何成為一名資料科學家(附學習資源)
譯者注:本文是出自Springboard上面一篇文章的摘錄,介紹瞭如果想成為一名資料科學家,需要掌握哪些技能,熟練使用哪些工具,以及如何對資料進行處理等。以下為譯文。
這篇博文是Springboard上面一篇文章的摘錄,文章標題是“幫你找到一份資料科學工作的免費指南”,最初出現在Springboard的部落格上。
資料科學技能
大多數資料科學家每天都使用組合技能,其中一些是他們在工作當中自學的,也有可能通過其他途徑學到的。他們有各自不同的背景。不是說你非要有什麼學位證書才能證明你是資料科學家。
本文涉及到的所有技能都可以自學。我們已經列出了一些資源,以幫助你走上資料科學家這條路。你可以把本文的內容看作是指導你如何成為一名資料科學家。
數學
數學是資料科學的重要組成部分。從微積分到線性代數這些大學數學的基礎知識,要確保你都能知道。你知道的越多,你也會越來越好。
當資料變得越來越龐大,也就意味著它越來越難處理。這時候你就必須使用數學來處理資料了。
別以為你在大學沒上過這些課,你就可以不知道了。說到底你還得需要了解如何操作資料矩陣,演算法數學背後的大致思路你也得知道。
參考資料: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這樣的平臺讓你可以處理真正的公司或社會問題。通過使用你的資料科學技能,你可以展示你的能力,並創造出最強大的投資組合資產:表現出對行動的偏見。
在哪裡找工作
你也可以通過網路和找導師來尋找機會。我們需要繼續強調的是最好的工作職位通常是通過與資料科學社群的人交談來發現的。這就是你成為資料科學家的方式。
你也可以在創業論壇上找到工作的機會。Hacker News有一個專門為Y Combinator孵化的創業公司(也許是世界上最有聲望的創業加速器)。Angellist是一家尋求融資的創業公司的資料庫,它有一個就業部門。
資料科學麵試
我們完全可以將面試寫成一本書,事實上,我們也真的這麼做了!
如果你接受了面試,你接下來會做什麼?在資料科學的面試中,有很多問題都是被問到的:你的背景,編碼問題,以及應用機器學習的問題。在任何資料科學的採訪中,你都應該預見到技術和非技術問題的混合。確保你對你的程式設計和資料進行科學研究,並試著將它與你的個人故事交織在一起。
你也經常被要求分析資料集。你可能會被問到文化契合度和統計問題。為了準備編碼問題,你必須把對資料科學的採訪部分看作是軟體工程的練習。你應該複習一下所有的程式設計面試資源,其中很多都是線上的。下面是一些你可能會遇到的資料科學問題。在這些問題中,你會看到一些常見的問題:
在這些問題中,你會看到一些常見的問題:
Python vs R:你更喜歡哪種語言?
什麼是k-均值(一種特定型別的資料科學演算法)?描述你什麼時候使用它。
請告訴我一些你工作的最後一個數據科學專案。
你對我們業務的主要增長驅動力有什麼瞭解?
第一類問題測試你的程式設計知識。第二種型別的問題測試你對資料科學演算法的瞭解,並讓你與他們分享你真實的生活經歷。第三個問題是深入研究你以前對資料科學所做的工作。最後,第四種類型的問題將測試你對你所面試的企業的瞭解程度。
如果你能證明你的資料科學是如何幫助你的潛在僱主的,你就會給他們留下深刻印象。他們會知道,他們有足夠的人關心他們的工作,而且他們對這個行業瞭解得足夠多,他們不需要教給你很多東西。這就是成為資料科學家的方法。
關於Springboard
訪問Springboard,可以幫助你瞭解更多關於Springboard的資料科學職業生涯軌跡,並提供有保證的工作機會和精心篩選的導師!