官术网_书友最值得收藏!

1.3 數據科學項目的生命周期

1.3.1 創建項目

在創建項目步驟中,需要確定項目目標和人員分配情況。

在項目開始之初,要明白這個項目是什么,為什么要做這個項目,以及這個項目將以什么形式存在。回答完以上問題,便可以考慮人員分配了。數據科學項目是團隊項目,因此要打造混合團隊并確認每種技術人才介入和離開項目的恰當時機,這一點非常重要。

1.3.2 獲取數據

數據科學項目的第二步是獲取數據,即從業務系統或從外部獲取所需的數據。

許多公司已經收集并存儲了數據,如果仍然缺乏數據,通常可以從第三方購買。不要害怕從公司之外獲得數據,如今已經有越來越多的第三方公司在免費提供公共的、商用的高質量數據。

1.數據集

在介紹如何獲取數據之前,需要先了解什么是數據集。簡而言之,數據集是數據獲取階段的輸出結果。

數據集是創建在數據連接上的,數據集中的數據可以看作數據連接中的子集,兩者的關系如圖1-3所示。通常來說,數據集和數據庫中表的概念類似,數據集中的記錄擁有相同的字段格式。如果數據連接代表了一個MySQL數據庫,那么數據集通常是這個數據庫中的一個表;如果數據連接是一個HDFS集群,那么數據集可能是其中的一個目錄或者文件。

圖1-3 數據連接與數據集

2.從存儲在公司內的數據開始

首先應該評估公司內現有數據的相關性和質量。這些數據可以存儲在官方數據存儲庫中,如存儲在數據庫、數據集市、數據倉庫以及由 IT 專業人員維護的數據湖中。數據湖中包含的是原始格式的數據;數據倉庫中的是經過預處理的數據,主要用于讀取和分析;數據集市是數據倉庫的一個子集,面向特定的業務部門提供服務。

但有時在公司內部查找數據也是一個挑戰,因為隨著公司業務的增長,數據會分散在許多地方。訪問數據是另一項艱巨的任務,因為每個公司都知道數據的價值和敏感性,并且會出臺相應的政策限制每個人只能訪問他們所需的內容,而不能訪問其他內容。這些都是查找和訪問數據的障礙。

3.尋找外部數據

如果公司內部沒有數據,則需要尋找外部數據。

許多公司專門收集有價值的信息,例如在零售行業中廣為人知的尼爾森和GFK。有些公司提供的數據可以達到豐富公司的服務和生態系統的目的,比如Twitter、LinkedIn和Facebook。目前已經有越來越多的政府和組織向世界免費提供他們擁有的數據,表1-1列舉了一部分開放數據提供者。

表1-1 開放數據提供者

4.數據質量

從公司內部以及外部獲取到足夠的數據集以后,要對收集到的數據集進行質量檢查,以防出現問題,即進行數據檢索。

數據檢索過程中會檢查數據是否與源文檔中的數據相同,并查看數據類型是否正確。這不會花費很長時間,當有足夠多的證據表明數據與源文檔中的數據相同時,這個過程即可停止。

還可以在數據準備和數據探索步驟中進行更詳細的檢查,如檢查拼寫錯誤、查看數據的統計特性等。

了解了如何在數據獲取過程中提高數據的質量,接下來我們將介紹數據準備的步驟。

1.3.3 數據準備

數據準備是指對獲取到的數據進行清洗、整合,并將其由原始表單轉換為可在模型中直接使用的數據的過程。為了實現這一點,我們將檢測并糾正數據中的各種錯誤,合并來自不同數據源的數據,然后進行轉換。下面我們具體來看一下數據準備的各個環節中需要注意的事項。

1.數據清洗

數據清洗是數據科學流程的一個子流程,專注于消除數據中的錯誤。數據中的錯誤通常有以下兩種類型。

解釋錯誤。這一類錯誤是指,不加以分辨地認為數據中的值是沒有問題的,比如不加以思考地說一個人的年齡大于300歲。

數據不一致,即數據源之間不一致或標準化值不一致。例如,當表示一個人的性別為“女”時,在一張表中使用“Female”表示,而在另一張表中使用“F”表示。

2.數據整合

數據整合是指對來自不同數據源的數據進行整合。模型使用的數據來自多個不同的源頭,因此數據的大小、類型和結構可能各不相同。

我們可以執行兩個操作將來自不同數據集的信息組合起來。第一個操作是關聯(JOIN),即通過一個表中的信息豐富另一個表中的信息。第二個操作是追加(APPENDING),即將一個表中的信息添加到另一個表中。

3.數據轉換

某些模型要求數據具有某種格式。我們已經清洗并整合了數據,接下來我們將執行下一個任務:轉換數據,生成符合模型要求的數據格式。

大部分模型要求我們將數據集加工成“寬表”,即按樣本組織數據,使一個樣本占據一行,每行又由若干列組成,每列數據被標識為該樣本的一個指標(或屬性、特征)。數據轉換就是將寬表加工出來的過程。

1.3.4 數據可視化

數據可視化是指將相對晦澀的數據通過可視的、交互的方式進行展示,從而形象直觀地表達數據中蘊含的信息和規律的方法。本質上,任何能夠借助于圖形展示事物原理、規律、邏輯的方法都屬于數據可視化方法,數據科學中的可視化要求更加靈活地將晦澀的模型結果以及算法結果展現出來,提供給數據使用者,在數據科學場景中,自助可視化分析(Self-Service Analysis)越來越成為一種趨勢。

數據可視化元素越來越多樣化,除了樸素的柱狀圖、餅狀圖、折線圖,還有氣泡圖、樹圖等各種樣式。

一般而言,完整的可視化流程包括以下幾步。

1.可視化輸入:輸入的內容對可視化任務的描述,數據的來源與用途,數據的基本屬性、概念模型等。

2.可視化處理:對輸入的數據進行加工,包括清洗、篩選、降維、聚類等,并將數據與視覺編碼進行映射。

3.可視化輸出:基于視覺原理和任務特性,選擇合理的生成工具和方法,生成可視化作品。

1.3.5 數據探索

數據探索是指通過各種方法對數據集進行探索,研究各變量的分布以及變量之間的關系等。探索性數據分析的過程既包括使用可視化技術(如簡單的線圖、直方圖,復雜的 Sankey和網絡圖等)來了解變量,也包括通過寫代碼完成機器學習模型的訓練、機器學習模型的調優等工作。

1.數據探索中的常見問題

數據量的增大也帶來了新的問題。例如內存過載以及算法不能停止運行。另外,即使計算機可以執行運算,也應該注意如I/O(輸入/輸出)和CPU計算資源匱乏等問題,因為這些問題會導致計算速度減慢。

內存過載

計算機只有有限的RAM,當處理大數據集時,操作系統會將內存塊換成磁盤,這種情況下的執行效率比將所有數據全部放在內存上要低得多。

算法不能停止運行

解決了內存問題,還需要處理另一個有限資源的問題:時間問題。某些算法不考慮運行時間,永無止盡地運行。有些算法實際上只需要處理幾 MB 數據,但不能在合理的時間內結束。

計算速度降低

處理大型數據集時,第三個問題是由于某個計算機組件存在性能瓶頸導致其他組件閑置。盡管這不像無休止地運行算法或內存不足那么嚴重,但仍然會帶來嚴重的成本問題。某些程序由于必須從硬盤驅動器讀取數據,因此不能以足夠快的速度為處理器提供數據,因為硬盤驅動器是計算機上速度最慢的組件之一。隨著固態硬盤(SSD)的推出,這個問題已經得到解決,但從 SSD讀取數據仍然比從內存讀取慢,且 SSD 比更普遍的硬盤驅動器(HDD)技術成本高得多。

2.解決經驗

問題和解決方案之間并不是一一映射的,一些解決方案無法同時兼顧內存和計算性能。例如,壓縮數據集可以幫助解決內存問題,但會影響計算速度,因為需要從慢速硬盤轉移到快速CPU。

一般來說,解決方案可以分為三類:使用適合的算法;選擇合理的數據結構;使用正確的工具。下面具體說明。

(1)使用適合的算法

選擇適合的算法比添加更多更好的硬件更能解決問題。有一類算法非常適合處理大數據問題,不需要將整個數據集加載到內存中進行預測。理想情況下,這類算法還支持并行計算,常見的有在線算法、塊算法和MapReduce算法等。

在線算法

在線算法是指以序列化的方式一個個處理輸入的算法,即開始時并不需要知道所有輸入,因此不需要將所有數據存入內存。在新數據到達后,模型會被訓練并且“忘記”觀察結果。例如,用于預測天氣的模型會在不同地區使用不同的參數(如大氣壓力或溫度)。這種“使用而忘記”的工作方式是針對內存問題的完美解決方案。

塊算法

某些使用全矩陣的算法可以轉化為使用矩陣塊的算法。在這種情況下,可以將較小的矩陣加載到內存中并執行計算,從而避免出現內存不足的問題。

MapReduce算法

我們用一個比喻來說明 MapReduce 算法:假設要統計某國選舉活動中的所有選票,該國有25個政黨,1500個投票辦公室和200萬人,我們可以單獨收集每個辦公室的所有投票并集中統計它們,也可以要求當地辦事處統計25個參與方的選票并將結果上交,然后按政黨匯總,后者即MapReduce算法思路。MapReduce算法的一個優點是易于并行處理和分發,因此在分布式環境(如 Hadoop)中性能很好,但它也可以在單臺計算機上使用。

(2)選擇合理的數據結構

為了解決數據探索中的問題,選擇合理的存儲數據方式同樣重要。實際應用中,有許多不同的數據結構可供選擇,我們在這里討論其中的三個:稀疏數據、樹數據和散列數據。

稀疏數據

稀疏數據是指,數據集中絕大多數數值缺失或者為零的數據,如圖1-4所示。稀疏數據集包含的信息相對較少。

圖1-4 稀疏數據

例如在圖1-4中,幾乎所有的值都是“0”,只有變量9的第二個觀察結果為“1”。這樣的數據可能看起來很荒謬,但這通常是將文本數據轉換為二進制數據時得到的結果。幸運的是,現在許多算法能夠通過處理稀疏矩陣來壓縮存儲空間。

例如,針對圖1-4中的情況,可以通過如下代碼進行處理,為第2行第9列保存數值1。

樹結構

樹是數據結構中的一種,檢索信息的速度比表更快。樹有根節點和子樹,運用簡單的決策規則可以很容易地找到數據所在的子樹。

哈希表

哈希表在數據庫中常被作為索引廣泛用于快速檢索信息,它為數據中的每個值計算一個密鑰,并將這些密鑰放入一個存儲桶。可以通過查看正確的存儲桶來快速檢索信息。Python中的字典便是一個哈希表實現。

(3)使用正確的工具

有了適合的算法和合理的數據結構,就可以選擇正確的工具了,比如 Python 庫。Python 中有許多庫可以幫助我們處理大數據,從代碼優化器的智能數據結構到即時編譯器。大多數軟件都有Python接口,這使我們能夠輕松地使用Python附帶的專業軟件。通過這種方式,Python能將自己與其他流行的數據科學語言(如R語言和SAS語言)區分開來。

1.3.6 部署上線

數據科學項目的成果可通過數據集、模型及數據應用等形式來展現。此前數據的自由流通和模型應用的計量計價是數據科學家與開發者們面臨的難題,現在通過 TalkingData SDMK便可以實現快速上線變現了。

主站蜘蛛池模板: 通州市| 安宁市| 那曲县| 巴青县| 绵竹市| 左贡县| 怀集县| 通城县| 扎鲁特旗| 钟山县| 灵武市| 黄平县| 青川县| 赤水市| 南汇区| 礼泉县| 陵川县| 循化| 嘉义县| 兴宁市| 徐汇区| 九寨沟县| 澄江县| 宜都市| 白朗县| 青龙| 应用必备| 广平县| 顺义区| 买车| 延川县| 汝南县| 郧西县| 博客| 阿巴嘎旗| 壶关县| 吉安县| 资兴市| 绩溪县| 寿宁县| 高密市|