數據採集與預處理
(1)大數據的來源
信息來源
-
1.信息管理系統
-
信息管理系統主要通過用戶輸入和系統二次加工的方式產生數據,其產生的數據大多數爲結構化數據,通常存儲在數據庫中。
-
-
2.網絡信息系統
- 在本質上,網絡信息系統是信息管理系統的延伸,是專屬於某個領域的應用,具備某個特定的目的。
-
3.物聯網系統
- 物聯網是新一代信息技術,其核心和基礎仍然是互聯網,是在互聯網基礎上延伸和擴展的網絡,
-
4.科學試驗系統
數據類型來源
-
1.傳統商業數據
- 來自企業ERP系統、各種POS終端及網上支付系統等業務系統的數據
- 傳統商業是主要的數據來源
-
2.互聯網數據
- 具有大量化,多樣化,快速化等特點
- 指網絡空間交互過程中產生的大量數據
- 互聯網是大數據信息的主要來源
-
3.物聯網數據
物聯網的定義:通過射頻識別(Radio Frequency IDentification,RFID)裝置、傳感器、紅外感應器、全球定位系統、激光掃描器等信息傳感設備,按約定的協議,把任何物品與互聯網相連接,以進行信息交換和通信,從而實現智慧化識別、定位、跟蹤、監控和管理的一種網絡體系。物聯網數據是除了人和服務器之外,在射頻識別、物品、設備、傳感器等節點產生的大量數據,包括射頻識別裝置、音頻採集器、視頻採集器、傳感器、全球定位設備、辦公設備、家用設備和生產設備等產生的數據。
-
主要特點
- 數據量更大
- 傳輸速率更高
- 更加多樣化
- 對數據真實性要求更高
-
(2)數據的採集方法
1.系統日誌的採集方法
-
很多互聯網企業都有自己的海量數據採集工具,多用於系統日誌採集,如Facebook公司的Scribe、Hadoop平臺的Chukwa、Cloudera公司的Flume等。這些工具均採用分佈式架構,能滿足每秒數百兆的日誌數據採集和傳輸需求。
-
Scribe
-
Facebook開源日誌收集系統,爲日誌的“分佈式收集,統一處理”提供了一個可擴展的、高容錯的方案。
-
架構
-
Scribe Agent
- Scribe Agent實際上是一個Thrift Client,Scribe內部定義了一個Thrift接口(唯一方法),用戶使用該接口向Scribe發送數據。
- Scribe Agent發送的每條數據記錄包含一個種類(Category)和一個信息(Massage)。
-
Scribe
- 接收Thrift Agent發送的數據,從各種數據源上收集數據,放到一個共享隊列,推送到後端的中央存儲系統
- 當中央存儲系統出現故障時,Scribe暫時將數據寫入本地文件等系統恢復後再次上傳
- 根據Category將不同主題的數據存儲到不同目錄中,便於分別進行處理
-
中央存儲系統
- Scribe中的store,當前Scribe支持非常多的store類型,包括文件、Buffer或數據庫。
-
-
Chukwa
-
一種對大數據量日誌類數據的採集、存儲、分析和展示的全套解決方案和框架。
-
架構
-
適配器(Chukwa Adapter)
- 適配器是直接採集數據的接口和工具。
- 每種類型的數據對應一個Adapter,同時用戶也可以自己實現一個Adapter來滿足需求。
-
代理(Chukwa Agent)
- Agent給Adapter提供各種服務,包括啓動和關閉Adapter,將Adapter收集的數據通過HTTP傳遞給Collector,並定期記錄Adapter狀態,以便Adapter出現故障後能迅速恢復。
- 一個Agent可以管理多個Adapter。
-
收集器(Chukwa Collector)
- 它負責對多個數據源發來的數據進行合併(防止大量小文件的寫入),並定時寫入集羣。(因爲Hadoop集羣擅長處理少量的大文件,而對大量小文件的處理則不是它的強項)
-
多路分配器(Chukwa Demux)
- 它利用MapReduce對數據進行分類、排序和去重。
-
存儲系統
- 採用HDFS作爲存儲系統。HDFS的設計初衷是支持大文件存儲和小併發高速寫的應用場景,而日誌系統的特點恰好相反,它需要支持高併發低速率的寫和大量小文件的存儲,因此Chukwa框架使用多個部件,使HDFS滿足日誌系統的需求。
-
數據展示
- Chukwa不是一個實時錯誤監控系統,它分析的數據是分鐘級別的,能夠展示集羣中作業運行的時間、佔用的 CPU 及故障節點等整個集羣的性能變化,能夠幫助集羣管理者監控和解決問題。
-
-
Flume
-
Cloudera公司提供的分佈式、可靠和高可用的海量日誌採集、聚合和傳輸的系統。
-
一個管道式的日誌數據處理系統,其中數據流由事件(Event)貫穿始終。Event是Flume的基本數據單位,它包含日誌數據並且攜帶消息頭,其中日誌數據由字節數組組成,這些Event由外部數據源生成。
-
架構
運行核心是Agent
Flume以Agent爲最小的獨立運行單位,一個Agent就是一個JVM。
在實際日誌系統中,Flume由多個Agent串行或並行組成,完成不同日誌數據的分析。
每個Agent是一個完整的數據收集工具,幷包含3個核心組件,一個Agent可以包含多個Source、Channel或Sink。 -
Source
- Source是數據的收集端,負責將數據採集後進行特殊的格式化,將數據封裝到事件(Event)中,然後將事件推入Channel中。
- Flume提供了很多內置的Source類型,支持Avro、log4j、syslog、UNIX終端輸出和http post等不同格式的數據源,可以讓應用程序同已有的Source直接打交道。
- 如果內置的Source無法滿足需求,用戶可自定義Source。
-
Channel
- 連接Source和Sink的組件,可以看作一個數據的緩衝區,可以將事件暫存到內存中,也可以持久化存儲到本地磁盤上,直到Sink處理完該事件。
- Channel支持將數據存在內存、JDBC、File等其他持久化存儲系統中。
-
Sink
- Sink從Channel中取出事件,然後將數據發送到別處(可以是文件系統、數據庫、HDFS,也可以是其他Agent的Source)。
- 在日誌數據較少時,它可以將數據存儲在文件系統中,並且設定一定的時間間隔定時保存數據。
-
2.網頁數據的採集方法
-
網絡大數據有許多不同於自然科學數據的特點,包括多源異構、交互性、時效性、社會性、突發性和高噪聲等,不但非結構化數據多,而且數據的實時性強。大量數據都是隨機動態產生的。
-
一般通過網絡爬蟲來實現
-
網絡爬蟲採集和處理數據的3個重要模塊
-
採集模塊
-
數據處理模塊
-
數據模塊
- 經過處理的數據可以分爲3類。第一類是SiteURL,即需要抓取數據的網站URL信息;第二類是SpiderURL,即已經抓取過數據的網頁URL;第三類是Content,即經過抽取的網頁內容。
-
-
爬蟲的基本工作流程
- (1)從 SiteURL 中抽取一個或多個目標鏈接寫入 URL 隊列,作爲爬蟲爬取信息的起點。
- (2)爬蟲的網頁分析模塊從URL隊列中讀取鏈接。
- (3)從Internet中獲取該鏈接的網頁信息。
- (4)從網頁內容中抽取所需屬性的內容值。
- (5)將獲取的網頁內容值寫入數據庫的Content,並將此URL存入SpiderURL。
- (6)從當前網頁中抽取新的網頁鏈接。
- (7)從數據庫中讀取已經爬取過內容的網頁地址,即SpiderURL中的鏈接地址。
- (8)將抽取出的URL和已經抓取過的URL進行比較,以過濾URL。
- (9)如果該網頁地址沒有被抓取過,則將該地址寫入SiteURL;如果該地址已經被抓取過,則放棄存儲此網頁鏈接。
-
爬蟲的網頁抓取策略
-
深度優先策略
-
寬度優先策略
-
反向鏈接數策略
- 反向鏈接數是一個網頁被其他網頁鏈接指向的數量。反向鏈接數表示的是一個網頁的內容受到其他人推薦的程度。因此,很多時候搜索引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先後順序。
3.其他數據的採集方法
- 對企業生產經營數據或學科研究數據等保密性要求較高的數據,可以通過與企業或研究機構合作,使用特定系統接口等相關方式採集。
- 儘管大數據技術層面的應用可以無限廣闊,但由於受到數據採集的限制,能夠用於商業應用、服務於人們的數據要遠遠小於理論上大數據能夠採集和處理的數據。因此,解決大數據的隱私問題是數據採集技術的重要目標之一。
(3)數據預處理流程
影響數據質量的因素
-
1.大數據處理環節對數據質量的影響
-
數據採集階段
- 數據來源
- 數據錄入
-
數據整合階段
- 數據集成錯誤
-
數據分析階段
- 建模
-
數據可視化階段
- 數據表達質量不高
-
-
2.評估數據質量的標準
-
準確性
-
完整性
-
一致性
- 關聯數據之間的邏輯關係是否正確和完整
-
及時性
-
可信性
- 數據來源的權威性
- 數據的規範性
- 數據產生的時間
-
可解釋性
-
數據預處理的目的
- 數據預處理是一個廣泛的領域,總體目標是爲進行後續的數據挖掘工作提供可靠和高質量的數據,減少數據集規模,提高數據抽象程度和數據挖掘效率。
- 在實際操作中,應根據數據的具體情況選擇合適的預處理方法
- 數據預處理的主要任務包括數據清洗、數據集成、數據變換、數據歸約等。
數據預處理的流程
-
概括
- 數據清洗可以用來清除數據中的噪聲,糾正不一致的數據。數據集成先將數據由多個數據源合併成一個一致的數據,然後進行存儲。
-
數據變換可以用來把數據壓縮到較小的區間,如0.0~1.0。數據歸約可以通過聚集、刪除冗餘屬性或抽樣來降低數據的規模。這可以提高涉及距離度量的挖掘算法的準確率和效率。在數據預處理的實際應用過程中,上述步驟有時並不是完全分開的,可以一起使用。
-
數據清洗
-
現實世界的數據一般是不完整、有噪聲和不一致的。特別是在數據量特別大的情況下
-
數據清洗任務通過填寫空缺值,消除噪聲數據,識別或刪除孤立點,並解決不一致性來“清洗”數據,從而改善數據質量,提高數據挖掘的精度和性能。
-
處理空缺值的基本方法
- ① 忽略元組。
- ② 人工填寫空缺值。
- ③ 用全局常量替換空缺值。
- ④ 用屬性的中心度量(如均值或中位數)填充空缺值。
- ⑤ 使用與給定元組屬同一類的所有樣本的屬性的中心度量填充。
- ⑥ 使用最可能的值填充缺失值,可以用迴歸、貝葉斯或決策樹等方法來確定缺失值。
-
消除噪聲數據
-
噪聲數據是一個測量變量中的隨機錯誤或偏差,包括錯誤的值或偏離期望的孤立點值。
-
出現噪聲數據的原因可能有數據收集工具的問題、數據輸入錯誤、數據傳輸錯誤、技術的限制或命名規則不一致。
-
針對這些原因,我們通常採用分箱法、迴歸法、聚類法等數據平滑方法來消除噪聲數據。
- ① 分箱法。通過考察數據的“近鄰”即周圍的值來光滑有序數據值。這些有序數據值被分佈到一些“桶”或箱中。由於分箱法考察近鄰的值,因此它進行的是局部的光滑。
- ② 迴歸法。迴歸法即採用一個函數擬合數據來光滑數據。線性迴歸涉及找出擬合兩個屬性(或變量)的最佳直線,使一個屬性能夠預測另一個。多元線性迴歸是線性迴歸的擴展,它涉及多個屬性,並將數據擬合到一個多維面。使用迴歸,找出適合數據的數學方程式,能夠幫助消除噪聲。
- ③ 聚類法。它將類似的值組織成羣或簇,將落在簇集合之外的點視爲離羣點。一般這種離羣點是異常數據,最終會影響整體數據的分析結果,因此對離羣點的操作是刪除。
-
-
-
數據集成
-
有時我們分析數據時會使用來自多個數據源的數據,數據集成是將多個數據源中的數據整合到一個一致的數據存儲(如數據倉庫)中,由於數據源存在多樣性,因此需要解決可能出現的各種集成問題。
-
集成過程中的三類主要問題
-
實體識別問題
- 在數據集成時,來自多個信息源的現實世界的等價實體如何才能“匹配”?這就涉及實體識別問題。
- 通常,可以根據數據庫或者數據倉庫中的元數據來區分模式集成中的錯誤。每個屬性的元數據包括名稱、含義、數據類型和屬性的允許取值範圍,以及處理空白、零或NULL值的空值規則
-
冗餘問題
-
集成多個數據源時,冗餘數據經常會出現,常見的是冗餘屬性。如果一個屬性可以由另外一個表導出,則它是冗餘屬性,例如,“年薪”可以由“月薪”計算出來,則“年薪”就被視爲冗餘屬性。另外,冗餘數據還包括同一屬性多次出現、同一屬性命名不一致等情況。
-
有些冗餘可以被相關分析檢測到。給定兩個屬性,這種分析可以根據可用的數據,度量一個屬性能在多大程度上蘊含另一個屬性。
-
-
數值衝突的檢測與處理
-
對現實世界的統一實體,來自不同數據源的屬性值可能是不同的。這可能是因爲數據的表示、比例或編碼、數據類型、單位、字段長度不同。
-
-
-
-
數據變換
-
在數據預處理階段,數據被變換或統一,使挖掘過程可能更有效,挖掘的模式可能更容易理解。
-
數據變換策略
- (1)光滑:去掉數據中的噪聲。光滑方法包括分箱法、聚類法和迴歸法。
- (2)屬性構造(或特徵構造):可以由給定的屬性構造新的屬性並添加到屬性集中,以利於挖掘。
- (3)聚集:對數據進行彙總和集中。例如,可以聚集日銷售數據,計算月和年銷售量。通常,這一步用來爲多個抽象層的數據分析構造數據立方體。
- (4)離散化:數值屬性(如年齡)的原始值用區間標籤(如0~10、11~20等)或概念標籤(如youth、adult、senior)替換。這些標籤可以遞歸地組織成更高層概念,使數值屬性的概念分層。
- (5)規範化:把屬性數據按比例縮放,使之落入一個特定的小區間,如−1.0~1.0或0.0~1.0。
-
-
數據歸約
-
數據歸約技術可以用來得到數據集的歸約表示,歸約後的數據集比原數據集小得多,但仍近似地保持原數據的完整性。
-
數據歸約策略
-
(1)數據立方體聚集
-
(2)屬性子集選擇
- 屬性子集選擇通過刪除不相關或冗餘的屬性(或維)減少數據量。屬性子集選擇的目標是找出最小屬性集,使數據類的概率分佈儘可能地接近使用所有屬性的原分佈。在縮小的屬性集上挖掘還有其他優點:減少了出現在發現模式上的屬性數目,使模式更易於理解。
-
(3)數據壓縮
- 利用數據編碼或數據轉換將原來的數據集合壓縮爲一個較小規模的數據集合。
- 無損壓縮:可以不丟失任何信息地還原壓縮數據,如字符串壓縮,壓縮格式爲 ZIP或RAR。
- 有損壓縮:只能重新構造原數據的近似表示,如音頻/視頻壓縮。
-
(4)數值歸約
- 數值歸約是通過選擇替代的、較小的數據表示形式來減少數據量。
- 有參方法:通常使用一個參數模型來評估數據。該方法只需要存儲參數,而不需要實際數據,能大大減少數據量,但只對數值型數據有效。
- 無參方法:需要存放實際數據,如使用直方圖、聚類、抽樣的技術來實現。
-
-
XMind: ZEN - Trial Version