《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.3 第2阶段:数据准备...
本節書摘來自異步社區《數據科學與大數據分析——數據的發現 分析 可視化與表示》一書中的第2章,第2.3節,作者【美】EMC Education Services(EMC教育服務團隊),更多章節內容可以訪問云棲社區“異步社區”公眾號查看
2.3 第2階段:數據準備
數據分析生命周期的第2階段是數據準備,其中包括在建模和分析前對數據的探索、預處理和治理。在這一階段,團隊需要建立一個強大的用于探索數據的非生產環境。通常,這個環境是一個分析沙箱。為了將數據導入沙箱,團隊需要執行對數據的提取、轉換操作和加載,即ETLT。一旦數據被導入沙箱,團隊需要了解和熟悉這些數據。詳細了解數據是項目成功的關鍵。團隊還必須決定如何治理和轉換數據,使其格式便于后續分析。團隊可以利用數據可視化來幫助團隊成員了解數據,包括數據趨勢、異常值、數據變量之間的關系。本節將討論數據準備階段的每個步驟。
數據準備往往是分析生命周期中最費力的。事實上常見的是,在數據科學項目中至少50%的團隊時間都花在這個重要階段。如果不能獲取到足夠高質量的數據,團隊可能無法進行生命周期過程中的后續階段。
圖2.4顯示了數據分析生命周期的第2階段。通常,數據準備階段是最繁復的,同時又是最容易被團隊輕視的。這是因為大多數團隊和領導者都急于開始分析數據、檢驗假設、獲得第1階段提出的一些問題的答案。許多人會在沒有花足夠時間準備數據的情況下就急于跳到第3和第4階段去快速開發模型和算法。結果,當他們發現手中的數據無法兼容想要執行的模型時,他們又不得不回到第2階段。
2.3.1 準備分析沙箱
數據準備階段的第1個子階段,團隊需要獲取一個分析沙箱(通常也稱為工作區),以便在不干擾到生產數據庫的前提下探索數據。假設團隊需要處理公司的財務數據,那么團隊應該在分析沙箱中用財務數據的拷貝進行分析,而不是直接用公司的生產數據庫進行分析。直接操作生產數據庫是受到嚴格控制的,只有在制作財務報表時才能進行。
當準備分析沙箱時,最好能收集所有數據放入沙箱,因為團隊成員在進行大數據分析時需要訪問大量的不同種類的數據。取決于計劃進行的分析,這些數據可能包括匯總的聚合數據、結構化數據、原始數據,以及從通話記錄和網頁日志中獲取的非結構化文本數據。
這種全盤收集數據的方式和許多IT組織機構提倡的方式非常不同。許多IT部門只會為特定目的提供特定數據段的訪問。通常,IT部門的心態是提供最少的數據,讓團隊實現目標即可,而數據科學團隊則想著拿到所有數據。對于數據科學團隊來說,數據越多越好,因為數據科學項目通?;旌狭四康尿寗有头治龊蜏y試各種想法的實驗性方法。在這種情況下,如果訪問每個數據集和每個數據屬性都需要單獨申請,這對于數據科學團隊是非常有挑戰的。由于在數據訪問和數據使用上有不同的考量,數據科學團隊與IT部門的合作至關重要,一定要共同明確需要完成什么樣的目標,并且目標一致。
在與IT團隊溝通時,數據科學團隊需要證明一個獨立于組織機構內由IT部門管理的傳統數據倉庫的分析沙箱的必要性。為了在數據科學團隊和IT部門之間取得成功且良好的平衡,需要在多個團隊和數據所有者之間建立積極的工作關系。而這樣做產生的回報是巨大的。分析沙箱使得組織機構可以執行目標更遠大的數據科學項目,超越傳統數據分析和商業智能的范疇,進行更為強大和高級的的預測分析。
沙箱可能會很大。它可能包含原始數據、聚合數據和其他在組織機構不常使用的數據類型。沙箱的大小可以根據項目的不同有所變化。一個有用的準則是沙盤至少應該是原始數據集的5~10倍大小,部分原因在于項目中數據的多份拷貝可能被分別用來創建特定的數據表或存儲以進行特定的數據分析。
盡管分析沙箱是一個相對較新的概念,已經有公司著手于這一領域,尋找沙箱和工作區的解決方案,以便數據科學團隊能夠采用一種可被IT部門所接受的方式來訪問和處理數據集。
2.3.2 執行ETLT
當團隊開始轉換數據時,需要確保分析沙盤擁有足夠的帶寬和可靠的網絡來連接到底層數據源,以進行不間斷的數據讀寫。在ETL過程中,用戶從數據存儲中提取數據,執行數據轉換,并將數據加載回數據存儲。然而,分析沙箱方法略有不同,它主張先提取、加載,然后轉換,即ELT。在這種情況下,數據是以原始格式提取的,然后加載到數據存儲中,在那里分析員可以選擇將數據轉換到一個新的狀態或者保持它的原始狀態。使用這種方法是因為保留原始數據并將它在發生任何轉變之前保存到沙箱具有重要的價值。
例如,考慮信用卡欺詐檢測的分析案例。很多時候,數據中的異常值代表著象征信用卡欺詐行為的高風險交易。使用ETL的話,這些異常值在被加載到數據存儲之前,可能就已經被無意中過濾掉或者被轉換和清洗。在這種情況下,用于評估欺詐活動的數據已經被無意中丟棄,團隊也就無從進行相應的分析。
遵循ELT方法可以在數據存儲中為團隊提供干凈的數據用于分析,也可以讓團隊訪問數據的原始形式,以查找數據中隱藏的細微差別。分析沙箱的大小之所以能夠快速增長,部分原因正在于采用了ELT方法。團隊既可能想要干凈的數據和聚合的數據,也可能需要保存一份原始格式的數據以進行比較,或者是在清洗數據前找到數據中隱藏的模式。這整個過程可以被概括為ETLT,意味著團隊可以選擇在一個分析案例中執行ETL,而在另一個案例中執行ELT。
根據數據源的大小和數量,團隊可能需要考慮如何將數據并行地導入到沙箱。導入大量數據有時候被稱為Big ETL。數據導入可以使用Hadoop或MapReduce等技術并行化。我們將在第10章中詳細介紹這些技術,它們可以用于執行并行數據攝取,以及在很短的一段時間內并行產生大量的文件或數據集。Hadoop可以用于數據加載以及后續階段的數據分析。
在將數據導入到分析沙箱之前,確定要在數據上執行的轉換。這涉及評估數據質量和構建合適的數據集,以便在后續階段的分析。此外,考慮團隊將可以訪問哪些數據,以及需要從數據中生成哪些新的數據屬性來支持分析,也很重要。
作為ETLT的一部分,建議盤點數據,并將當前可用的數據與團隊需要的數據進行比較。這種差距分析能幫助理解團隊目前可以利用的數據集,以及團隊需要在何時何地開始收集或訪問當前不可用的新數據集。這個子過程涉及從可用源提取數據,以及確定用于原始數據、在線事務處理(OLTP)數據庫、聯機分析處理(OLAP)數據集或其他數據更新源的數據連接。
應用程序編程接口(API)是一種越來越流行的訪問數據源的方式[8]。現在許多網站和社交網絡應用程序都提供可以訪問數據的API,用于為項目提供支持,或者補充團隊正在處理的數據集。例如,通過Twitter API可以下載數以百萬計的Twitter信息,用于對一個產品、一個公司或一個想法的情感分析項目。大部分的Twitter數據都是公開的,可以在項目中和其他數據集一起被使用。
2.3.3 研究數據
數據科學項目的關鍵之一是熟悉數據。通過花時間了解數據集的細微差別,可以幫助理解什么是有價值的和預期的結果,以及什么是意外的發現。此外,重要的是要對團隊可以訪問的數據源進行歸類,并識別團隊可以利用但是暫時無法訪問的其他數據源。這里做的一些事情可能會與在發現階段對數據集的初始調查有重疊。研究數據是為了達成幾個目標。
明確數據科學團隊在項目時可以訪問的數據。
識別組織機構內那些對團隊來說可能有用但是暫時還無法訪問的數據集。這樣做可以促使項目人員開始與數據擁有者建立聯系,并尋找合適的方法分享數據。此外,這樣做可以推動收集有利于組織機構或者一個特定的長期項目的新數據。
識別存在于組織機構外的,可以通過開放的API、數據共享,或者購買的方式獲取的新數據,用于擴充現有數據集。
表2.1展示了一種數據清單的組織方法。
2.3.4 數據治理
數據治理(data conditioning)是指清洗數據、標準化數據集和執行數據轉換的過程。作為數據分析生命周期中的一個關鍵步驟,數據治理可以涉及許多關聯數據集,合并數據集,或者其他使數據集日后能被分析的復雜操作。數據治理通常被視為數據分析的預處理步驟,因為在開發模型來處理或分析數據之前,數據治理還需要對數據集進行多種操作。這意味著數據治理是由IT部門、數據所有者、DBA或者數據工程師執行的。然而,讓數據科學家參加數據治理也很重要,因為數據治理階段所做的許多決策會影響到后續的分析,包括確定特定數據集的哪些部分將被用于后續階段的分析。團隊在這一階段開始需要決定保留哪些數據,轉換或丟棄哪些數據,而這些決策應由大多數團隊成員共同參與。如果讓一個人來拍板,可能會導致團隊日后返回這一階段來獲取已經被丟棄的數據。
在前面信用卡欺詐檢測的案例中,團隊在選擇要保留的數據和要丟棄的數據時需要深思熟慮。如果團隊在數據處理的過程中過早地丟棄了許多數據,可能會導致重新回溯前面的步驟。通常,數據科學團隊寧愿保存更多而不是更少的數據用于分析。與數據治理相關的其他問題和考量如下所示。
數據源是什么?目標字段是什么(例如,數據表的列)?
數據有多干凈?
文件和內容一致嗎?如果數據包含的值與正常值有偏差,確定數據值缺失和數據值不一致到哪種程度?
評估數據類型的一致性。例如,如果團隊期望某些數據是數值型的,要確認它是數值型的或者是字母數字字符串和文本的混合。
審查數據列的內容或其他輸入,并檢查以確保它們有意義。例如,如果項目涉及分析收入水平,則要預覽數據確定收入值都是正值,如果是0或者負值需確認是否可接受。
尋找任何系統性錯誤的證據。比如由于傳感器或其他數據源的不為人察覺的損壞,導致數據失效、不正確,或者缺失數據值。此外,要審查數據以衡量數據的定義在所有的尺度標準下是否是相同的。在某些情況下,數據列被重新調整,或者是數據列被停止填充,而且這些變化并沒有被注釋或沒有通知給其他人。
2.3.5 調查和可視化
在團隊收集和獲得用于后續分析的部分數據集后,一種有用的步驟是利用數據可視化工具來獲得數據的概述。觀察數據的抽象模式可以幫助人們快速理解數據特征。一個例子是使用數據可視化來檢查數據質量,比如數據是否包含很多非預期值或者其他臟數據的跡象(臟數據將在第3章進一步討論)。另一個例子是數據傾斜(skewness),比如,大部分數據集中在某個數值或者連續統(continuum)的一端。
Shneiderman[9]因其可視化數據分析的理念(即全盤觀察,放大及過濾,然后按需獲取細節)而眾所周知。這是一個務實的可視化數據分析方法。它允許用戶找到感興趣的領域,然后通過放大和過濾來找到與數據的特定區域相關的更詳細信息,最后找到特定區域背后詳細的數據。這種方法提供了數據的一個高層視圖,可以在相對較短的時間內獲悉給定數據集的大量信息。
當該方法與數據可視化工具或統計軟件包一起使用時,推薦下述指導意見和考量。
審查數據以確保針對一個數據字段的計算在列內或者在表間保持一致。例如,客戶壽命的值在數據收集的中期有改變嗎?或者當處理財務信息時,利率計算是否在年底由單利變為復利?
所有數據的數據分布是否都保持一致?如果沒有,應該采取怎樣的措施來解決這個問題?
評估數據的粒度、取值范圍和數據聚合水平。
數據是否代表目標群體呢?對于營銷數據,如果項目關注的是育兒年齡的目標客戶,數據是否代表這些群體?還是也包含老年人和青少年?
對于與時間相關的變量,是以每日、每周還是每月來測量呢?這些測量間隔是否足夠?是否都在以秒計算時間?或者有些地方以毫秒為單位?確定分析所需的數據粒度,并評估當前數據的時間戳級別能夠滿足需要。
數據是標準化/規范化的嗎?數據尺度一致嗎?如果不是,數據是如何不一致或不規則的?
對于地理空間數據集,數據中的州或國家的縮寫一致嗎?人的姓名是規范化的嗎?是英制單位還是公制單位?
當團隊評估項目中所獲得的數據時,這些典型的考量應該是思考過程的一部分。在后面階段構建和運行模型時,對數據的深入了解非常關鍵。
2.3.6 數據準備階段的常用工具
這個階段有下面幾種常用的工具。
Hadoop[10]可以執行大規模并行數據攝取和自定義分析,可用于Web流量解析、GPS定位分析、基因組分析,以及來自多個源的大規模非結構化數據的整合。
Alpine Miner[11]提供了一個圖形用戶界面(GUI)來創建分析工作流程,包括數據操作和一系列分析事件,例如在Postgress SQL和其他大數據源上的分段數據挖掘技術(例如,首先選擇前100名顧客,然后運行描述性統計和聚類)。
Openrefine(以前稱為Google Refine)[12]是一個免費、開源、強大的雜亂數據處理工具。這是一個流行的帶GUI的工具,用于執行數據轉換,而且是目前可用的最強大的免費工具之一。
Data Wrangel[13]和OpenRefine相似,是一個用于數據清洗和轉換的交互式工具。Data Wrangler是斯坦福大學開發的,可以對一個給定的數據集執行許多轉換。此外,數據轉換的輸出可以使用JAVA或Python處理。這個特性的優點是,可以通過Data Wrangler的GUI界面來操控數據的一個子集,然后相同的操作可以以JAVA或Python代碼的方式用來在本地分析沙箱中對更大的完整數據集進行離線分析。
在第2階段,數據科學團隊需要來自IT部門、DBA或EDW管理員的幫助,以獲取需要使用的數據源。
總結
以上是生活随笔為你收集整理的《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.3 第2阶段:数据准备...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Access 2007开发指南(修订版
- 下一篇: ubuntu 13.04 安装 GRUB