Data Mining:(2)數據預處理

  • 該博客爲數據挖掘系列博客的第二部分:數據預處理
  • 該博客主要介紹數據預處理的流程及其內容。

緣何興起

在做一件事之前,我們需要問下自己爲什麼要做這件事,不至於自己糊里糊塗地在那瞎忙活而耽誤了真正重要的事情。
那麼問題來了,我們爲什麼需要進行數據預處理呢?
根據各種資料以及我個人的經歷,我總結爲以下兩點:

  1. 原始數據大多是骯髒的:由於數據來源缺乏有效的管控,因此源數據大多數都是比較髒的,會有不一致、不完整、含噪聲、重複等情況發生。
  2. 沒有高質量的數據,就沒有高質量的挖掘。正所謂“garbage in, garbage out”。
數據存在的問題 含義
不一致 數據內涵出現不一致情況,如編碼存在差異
不完整 感興趣的屬性值缺失
含噪聲 數據中存在着錯誤、或異常(偏離期望值)的數據
重複 記錄重複

怎麼定義

數據預處理是一項將原始數據轉換成易於理解和處理的數據格式的數據挖掘技術。
真實世界的數據通常是不完整的、不一致的,伴隨着一定的缺失,並且有許多錯誤。
數據預處理正是解決這些問題的有效方法。

Data preprocessing is a data mining technique that involves transforming raw data into an understandable format. Real-world data is often incomplete, inconsistent, and/or lacking in certain behaviors or trends, and is likely to contain many errors. Data preprocessing is a proven method of resolving such issues.

該怎麼辦

數據預處理的方法主要有以下四種:

  • 數據清洗
  • 數據集成
  • 數據變換
  • 數據歸約

數據清洗(Data Cleansing)

概念闡述

數據清理也稱爲數據清洗,其作用就是清除數據噪聲和與挖掘主題明顯無關和不一致數據,包括填補缺失值、平滑噪聲數據、識別刪除孤立點、解決不一致性。

數據選取參考原則

  • 儘可能賦予屬性名和屬性值明確的含義
  • 統一多數據源的屬性值編碼
  • 去除惟一屬性
  • 去除重複屬性
  • 去除可忽略字段
  • 合理選擇關聯字段(相關性分析)

處理空缺值

  • 忽略元組(該記錄):當類標號缺少時通常這麼做(假定挖掘任務涉及分類或描述),當每個屬性缺少值的百分比變化很大時,它的效果非常差
  • 去掉屬性
  • 人工填充空缺值:工作量大,可行性低
  • 使用全局變量或默認值填充空缺值
  • 使用屬性的平均值填充空缺值
  • 使用同類樣本的平均值填充空缺值
  • 使用最可能的值填充空缺值:使用像貝葉斯公式或判定樹這樣的基於推斷的方法

消除噪聲數據

分箱

  • 概念:把待處理的數據進行排序,然後按照一定的規則放進一些箱子中,考察每一個箱子中的數據,採用某種方法分別對各個箱子中的數據進行處理。
  • 分箱技術需要確定兩個主要問題:
    • 分箱方法:即如何分箱
    • 數據平滑方法:即如何對每個箱子中的數據進行平滑處理
  • 分箱方法主要有:
    • 等深分箱法
      按記錄行數分箱,每箱具有相同的記錄數,每箱記錄數稱爲箱的權重,也稱爲箱子的深度。
    • 等寬分箱法
      在整個屬性值的區間上平均分佈,即每個箱子的區間範圍是一個常量,稱爲箱子寬 度。
    • 最小熵
      使在各區間分組內的記錄具有最小的熵。
    • 用戶自定義區間
      根據需要自行定義箱子範圍
  • 數據平滑方法主要有:
    • 按平均值平滑
      對同一箱值中的數據求平均值,用平均值替代該箱子中的所有數據。
    • 按邊界值平滑
      用距離較小的邊界值來替代箱子中的非邊界數據
    • 按中值平滑
      取箱子中的數據的中值,用中值替代該箱子中的所有數據。

聚類

通過聚類分析查找孤立點,去除孤立點以消除噪聲。
聚類算法可以得到若干數據類(簇),在所有類外的數據可視爲孤立點,即噪聲數據。

迴歸

發現兩個相關的變量之間的變化模式,通過使數據適合一個函數來平滑數據,即利用擬合函數對數據進行平滑。

消除不一致

通過描述數據的元數據來消除數據命名的不一致
通過專門的例程來消除編碼的不一致

數據集成(Data Integration)

概念闡述

將多個數據源中的數據整合到一個一致的數據存儲中,由於數據源的多樣性,就需要解決可能出現的各種集成問題。

模式匹配

通過整合不同數據源中的元數據來實施數據模式的集成,特別需要解決各數據源中屬性等命名不一致的問題。

數據冗餘

  • 集成多個數據源時,經常會出現冗餘數據(data redundancy)
  • 常見的是屬性冗餘,如果一個屬性可以由另外一個表導出,則它是冗餘屬性,如“年薪”可由“月薪”計算出
  • 有些冗餘可以採用相關分析檢測得到:如果rA,Br_{A,B}足夠接近1時,可視爲一個屬性蘊含另一個屬性的可能性極大,可將其中一個屬性作爲冗餘屬性去掉。

數據值衝突

  • 對現實世界中的同一實體,來自不同數據源的屬性值可能是不同的。
  • 產生的原因有表示的差異、比例尺度的不同或編碼的差異等。

數據轉換(Data Transformation)

概念闡述

  • 數據轉換是將數據轉化爲易於進行數據挖掘的數據存儲形式
  • 一般包含在數據集成過程中。
  • 常見的方法有平滑、聚集、數據概化、數據規範化及屬性構造等

平滑

去除噪聲,將連續的數據離散化,增加粒度。

聚集

對數據進行彙總,可以用來構造數據立方體。

概化

用更高層次(更抽象)的概念取代低層次的數據對象。

規範化

  • 將數據按比例進行縮放,使之落入一個特定的區域,以消除數值型屬性因大小不一而造成挖掘結果的偏差。
  • 方法主要有最小-最大規範化、零-均值規範化、小數定標規範化

最小-最大規範化

  • 已知屬性的取值範圍,將原取值區間[old_min,old_max]映射到[new_min,new_max]
  • v=vminAmaxAminA(new_maxAnew_minA)+new_minAv' = \frac{v-min_{A}}{max_{A}-min_{A}}(new\_max_{A}-new\_min_{A})+new\_min_{A}
  • 保留了原來數據中存在的關係,但若將來遇到超過目前屬性[old_min,old_max]取值範圍的數值,將會引起系統出錯。

零-均值規範化

  • 根據屬性的均值和偏差對屬性進行規範化,也稱 Z-Score 規範化
  • 常用於屬性最大值與最小值未知,或使用最大最小規格化方法時出現數據異常的情況。
  • v=vAˉσA v' = \frac{v-\bar{A}}{\sigma_{A}}
    Aˉ\bar{A}表示A的平均值,σA\sigma_{A}表示A的標準差

小數定標規範化

  • 通過移動屬性A值的小數位置,將屬性A的值映射到 [0,1] 之間,用小數的科學表示法來達到規範化的目的。
  • 移動的小數位數取決於屬性A絕對值的最大值
  • v=v10j v' = \frac{v}{10^{j}}
    其中的j爲滿足 maxA10j<1\frac{max_{|A|}}{10^{j}}<1 的最小整數

屬性構造

利用已有屬性集構造出新的屬性,並加入到現有屬性集合中以幫助挖掘更深層次的模式知識,提高挖掘結果準確性。

數據歸約(Data Reduction)

概念闡述

  • 數據歸約又稱數據約簡或數據簡化。
  • 對於大數據集,通過數據歸約可以得到其歸約表示,它小得多但仍接近於保持原數據的完整性,這樣在歸約後的數據集上挖掘效率更高,產生的分析結果也基本相同。

歸約標準

  • 用於數據歸約的時間應當不超過在歸約後的數據上挖掘所節省的時間。
  • 歸約得到的數據雖然比原數據小,但可以產生幾乎相同的分析結果。

歸約類別

  • 屬性歸約(橫向減少數據量)
  • 記錄歸約(縱向減少數據量)

歸約方法

  • 數據立方體聚集
    將n維數據立方體聚集爲n-1維的數據立方體
  • 維歸約
    • 去掉無關的屬性,減少數據挖掘處理的數據量
    • 常用方法有向前選擇、向後剔除、逐步迴歸、判定樹、基於統計分析的歸約等。
  • 數據壓縮
    • 用數據編碼或者變換,得到原始數據的壓縮表示
    • 常用方法有主成分分析法(Principal Component Analysis,PCA)等。
  • 數值歸約
    • 用較小的數據表示數據,或採用較短的數據單位,或者用數據模型代表數據,減少數據量。
    • 常用方法有直方圖、聚類、抽樣、參數迴歸法等。
  • 離散化和概念分層
    • 連續屬性的離散化就是在特定的連續屬性的值域內設定若干個離散化的劃分點,將屬性的值域範圍劃分爲一些離散化空間,最後用不同的符號或整數值表示落在每個子區間內的屬性值。從本質上看,連續屬性的離散化就是利用選取的斷點對連續屬性構成的空間進行劃分的過程。
    • 數據離散化的常用方法有:分箱、直方圖分析、聚類分析等。
    • 概念分層定義了一組由低層概念集到高層概念集的映射。它允許在各種抽象級別上處理數據,從而在多個抽象層上發現知識。用較高層次的概念替換較低層次的概念,以此來較少取值個數。
    • 概念分層結構可以用樹來表示,樹的每個節點代表一個概念。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章