像數據科學家一樣思考:12步指南(上)
介紹
目前,數據科學家正在受到很多關注,因此,有關數據科學的書籍正在激增。我看過很多關于數據科學的書籍,在我看來他們中的大多數更關注工具和技術,而不是數據科學中細微問題的解決。直到我遇到Brian Godsey的“像數據科學家一樣思考”,它討論了哪些工具最有用以及為什么,但主要目標是在智能,高效和成功的情況下完成數據科學工程,以解決實際數據中心問題的解決方案。
數據科學項目的生命周期
在書中,Brian提出數據科學項目包括3個階段:
- ***階段是準備階段:在項目開始時收集信息所花費的時間和精力可以避免以后的麻煩。
- 第二階段是構建產品:從規(guī)劃到執(zhí)行,使用你在準備階段學到的知識以及可以用的所有工具。
- 第三階段即將完成:交付產品,獲得反饋,進行修訂,產品運維以及完成項目。

從圖像中可以看出,這3個階段包含12個不同的任務。我想用這篇文章總結這12個步驟,因為我相信任何有抱負的數據科學家都可以從熟悉它們中受益。
***階段:準備
數據科學項目始于準備。你需要建立你所知道的、擁有的、能得到什么、你在哪里以及你想成為什么樣。***一個是最重要的,數據科學項目需要有目的和相應的目標。只有當你有了明確的目標時,才能開始調查可用資源以及實現這些目標的所有可能性。
1-設定目標

數據科學項目與許多其他項目一樣,主要目標應在項目開始時設定。在設定目標后,你所做的所有工作都是利用數據、統(tǒng)計數據和編程來實現這些目標。
首先,數據科學的每個項目都是有一個“客戶”的。有時,“客戶”是向你或你的企業(yè)支付費用的人,例如,客戶或承包代理商。在學術界,“客戶”可能是一位要求你分析數據的實驗室科學家。有時,“客戶”是你的老板或其他同事。無論“客戶”是誰,他們都會對可能從你那里得到的東西抱有一些期望。
為了理解這些期望,你需要對“客戶”提供的數據提出好的問題。提出好的問題是一項重要且微妙的挑戰(zhàn),因為改變世界的是問題。在他們的假設中好的問題是具體的,但好的答案是可衡量的而且不必要太多的成本。
雖然有時候好問題、相關數據或富有洞察力的分析比其他要素更容易獲得,但這三者對于獲得有用的答案至關重要。任何舊問題,數據和分析的產品并不總是一個答案。值得注意的是,你需要在項目的每個步驟中都要深思熟慮,而且關鍵性的要素必須存在。例如,如果你個好問題但不相關的數據,則很難找到答案。
開始的時候是在數據和答案的背景下評估項目目標的好時機。通常,初始目標的設定需要考慮一些商業(yè)目的。如果你不從事商業(yè)活動,例如,你正在進行研究,那么目的通常是對結果進行一些外部使用,例如在特定領域中推進科學知識或為其他人提供分析工具。

雖然目標源于項目本身的背景,但每個目標都應該通過基于數據科學的實用過濾器來實現。此過濾器包括以下幾個問題:(1)有什么可能?(2)什么是有價值的?(3)什么是有效的?將此過濾器應用于好問題、可能的答案、可用數據和可預見的障礙,可以幫助你實現一系列可靠、有價值且高效的項目目標。
2-探索數據
數據科學項目準備階段的第二步是探索現有數據。下圖顯示了數據科學家可能訪問數據的3種基本方式。數據可以是文件系統(tǒng)上的文件,數據科學家可以將文件讀入他們最喜歡的分析工具中。數據也可以在數據庫中,數據庫也在文件系統(tǒng)上,但是為了訪問數據,數據科學家必須使用數據庫的接口,這是一個幫助存儲和提取數據的軟件層。***,數據可能位于應用程序編程接口(API)之后,API是數據科學家與某些系統(tǒng)之間的軟件層。
熟悉數據可能需要接觸到表單以及如何查看和操作這些表單,以下是其中一些:平面文件(csv,tsv)、HTML、XML、JSON、關系數據庫、非關系數據庫、API。有時你無法決定選擇哪種格式,數據會以你想象不到的格式出現,但你必須處理它。如果你發(fā)現某個格式效率低下、笨拙或不受歡迎,你可以嘗試設置可能使事情變得更容易的輔助數據存儲格式,但需要花費大量時間和精力來設置輔助數據商店。但對于訪問效率至關重要的應用程序而言,這個成本是值得的。對于較小的項目,也許不是。當你到達那里時,你必須越過那座橋。

現在你已經了解了常見的數據形式,你需要對它們進行偵察。以下是你應該考慮的方法:Google搜索,組合不同的數據源,從網絡爬蟲或自行收集它們。就個人而言,我是網絡爬蟲的忠實粉絲。Web scraper必須做的兩件重要事情是以編程方式訪問大量URL并從頁面中捕獲正確的信息。如果你想在Facebook上了解你的朋友網絡,理論上可以編寫一個腳本來訪問所有朋友的Facebook個人資料,保存?zhèn)€人資料頁面,然后解析這些頁面以獲取他們的朋友列表,訪問他們的朋友配置文件等等。
3-數據整理
第三步是數據整理,就是將困難、非結構化或其他任意格式獲取數據和信息轉換為傳統(tǒng)軟件可以使用的內容的過程。整理不是一項任務,并不可以事先準確地規(guī)定步驟,因為每個案例都不同,需要解決的問題也不一樣。
在整理之前,好的整理歸結為可靠的計劃,然后進行一些猜測和檢查,看看哪些有效,花費一點時間進行數據整理可以為你減少很多痛苦。通常,數據整理計劃的選擇應在很大程度上取決于你在***調查數據時發(fā)現的信息。如果你可以想象解析數據或以某種假設的方式訪問它,你可以嘗試編寫一個執(zhí)行操作的腳本。數據整理是一個不確定的過程,因此***先探索一下,然后根據你所看到的內容制定整理計劃。
沒有一種方法或一種工具可以實現使混亂數據清潔的目標。市面上有許多工具可以做很多事情,但沒有一個工具能夠處理任意格式數據。數據以如此多的形式存在,并且出于不同的目的,甚至目前沒有一個應用程序能夠以任意目的讀取任意數據。簡而言之,數據整理是一個不確定的事情,需要在特定情況下使用特定工具來完成工作。你可以嘗試使用文件格式轉換器或專有數據管理器并編寫腳本來處理數據。
4-評估數據
在開發(fā)以數據為中心的產品之前,了解數據內容值得花費一點時間和精力。如果你對數據有更多了解,你將在整個數據科學項目的每一步做出更明智的決策,并在獲益到***。如果沒有初步的評估,你可能會遇到異常值、偏差、精、特異性或數據其他固有的問題。為了更好地發(fā)掘這些數據并更好地了解數據,整理數據后的***步應該是計算一些描述性統(tǒng)計數據。
描述性統(tǒng)計是定量描述信息集合的主要特征或定量描述本身的學科??紤]描述、***值、最小值、平均值、數據集的摘要。如果不提及推論統(tǒng)計數據,通常很難討論描述性統(tǒng)計數據。推論統(tǒng)計是指你在沒有完全統(tǒng)計數據的情況下得出的結論。對于數據集,你可以說以下內容:
- 描述性統(tǒng)計數據:“我有什么?”
- 推論統(tǒng)計數據:“我能得出什么結論?”
大多數統(tǒng)計學家都認為推論統(tǒng)計數據可以得到大部分很酷的結論:當世界人口達到峰值然后開始下降時,病毒流行病的傳播速度有多快;當股市上漲時,人們是否會在Twitter上對一個主題有一般積極或消極的情緒等等。而描述性統(tǒng)計在使這些結論成為定論方面起了非常重要的作用。總之,了解你擁有的數據以及它可以為你做些什么是值得的。
使用描述性統(tǒng)計信息,你可以在數據集中找到與特定概念描述匹配的實體。如果你從事在線零售業(yè)務,你可能會將客戶視為你的實體,并且你希望識別那些可能購買特定作者新書的。如果你在金融領域工作,你可能會在股票市場上尋找即將上漲的股票。如果可以對這些特征進行簡單搜索,那么工作就很容易,你不需要數據科學或統(tǒng)計數據。但是,如果這些特征并不是所有數據固有的。
第二階段-建設
在詢問了一些問題并設定一些目標后,你調查了數據世界,整理了一些具體數據,并了解了這些數據。在每一步中,你都學到了一些東西,現在你應該能夠回答在項目開始時提出的一些問題?,F在讓我們進入建設階段。
5-制定計劃
第五步是制定計劃。與早期的規(guī)劃階段一樣,不確定性和靈活路徑應該是你的首要考慮因素。你現在對你的項目了解了更多,所以之前存在的一些不確定因素已不復存在,但某些新的不確定因素已經出現。把你的計劃想象成一條通往城市的試驗性路線,這條城市的街道正在不斷建設中。你知道你想去哪里以及去往那里的幾種方法,但是在每個十字路口都可能有道路封閉、交通不暢或人行道坍塌和破碎。當你遇到這些障礙時,你必須做出決定,但是現在只需要一兩個備用計劃就足夠了。
如果給了新信息或新約束或其他原因,計劃和目標可隨時改變。你必須向與項目有關的每個人(包括客戶)傳達重大更改信息。該項目的客戶對項目的最終產品具有既得利益,因此應該讓客戶了解目標的任何變化??蛻艨赡芤矊M度報告感興趣,包括你到目前為止的初步結果以及如何獲得它們,但這些是***優(yōu)先級。
關注客戶關心的事情:客戶是整個項目的核心,它們希望我們實現什么,他們到底關心什么,知道這些很重要。如果他們的目標錯誤,及時的溝通很重要。在此階段與客戶會面的唯一必須結論是,你清楚地溝通新目標是什么以及他們批準這些目標。
你也可以考慮將你的基本計劃傳達給客戶,特別是涉及使用他們的資源時,例如數據庫、計算機和其他員工,他們會有興趣了解你將如何以及使用它們的程度。
6-分析數據

第六步是數據的統(tǒng)計分析。統(tǒng)計方法通常被認為是進行良好數據科學所需技能和知識的近一半或三分之一,另一大部分是軟件開發(fā),剩下的較小部分是主題或領域專業(yè)知識。
統(tǒng)計學的一方面是數學,另一方面是數據。數學 ,尤其是應用數學,我們需要通過一組工具提供統(tǒng)計數據,以便進行分析和解釋。無論如何,數學通常不會觸及現實世界,它完全是基于邏輯并始終從一組假設開始,每個數學陳述都可以用if開頭(如果假設是真的),這可以將語句及其結論提升為抽象性。這并不是說數學在現實世界中沒用,恰恰相反數學而不是科學,更多的是我們可以用來描述事物的詞匯。其中一些可能在現實世界中與詞匯表包含的單詞一樣,但很少有描述完全正確。
然而,數學確實提供了統(tǒng)計使用的大量基礎。統(tǒng)計分布通常由復雜的方程式描述,其根源在實際的科學意義上是有意義的。擬合統(tǒng)計模型通常是使用數學優(yōu)化技術,即使假設項目數據所在的空間也必須用數學方法描述,描述可能僅僅是“N維歐幾里德空間”。
除數學外,統(tǒng)計學還擁有一套專屬的以數據為中心的技術。
- 描述性統(tǒng)計是一種通常直觀或簡單的統(tǒng)計數據,可以提供對數據的良好概述,不會過于復雜或難以理解。在某種意義上,描述性統(tǒng)計通常與數據保持接近。
- 推理統(tǒng)計本質上是從數據中刪除的一個或多個步驟。推斷是基于可測量的相關量來估計未知量的過程。通常,推論統(tǒng)計涉及統(tǒng)計模型,該模型定義數量,可測量和不可測量,以及它們彼此之間的關系。推論統(tǒng)計的方法可以從簡單到復雜,也可以在抽象性和可解釋性方面有所不同。
- 統(tǒng)計建模是使用描述性統(tǒng)計系統(tǒng)后使用模型來幫助分析和解釋與系統(tǒng)相關數據的一般實踐。描述性和推論性統(tǒng)計都依賴于統(tǒng)計模型,但在某些情況下,模型本身的明確構造和解釋起次要作用。
通過統(tǒng)計建模,主要關注的是理解模型及其描述的底層系統(tǒng)。數學建模是一個相關概念,它更強調模型構建和解釋,而不是與數據的關系。統(tǒng)計建模側重于模型與數據的關系,以下是你應該了解的統(tǒng)計建模中的一些重要概念:
- 線性、指數、多項式、樣條、微分、非線性方程;
- 潛在變量;
- 量化不確定性:隨機性,方差和誤差項;
- 擬合模型:***似然估計、***后驗估計、變分貝葉斯、馬爾可夫鏈蒙特卡羅、過擬合。
- 貝葉斯與頻率統(tǒng)計;
- 假設檢驗;
- 聚類;
- 成分分析;
離原始數據最遠的是一組統(tǒng)計技術,通常稱為黑盒方法。機器學習和人工智能的許多方法都是黑盒方法。如果你嘗試將出現在數據集中的個體分類為幾個類別,并且你應用機器學習技術(如隨機森林或神經網絡),事后往往很難說為什么是以某種方式分類。數據進入黑匣子,分類出來,***你通常不能解釋兩者之間究竟發(fā)生了什么。























