乾貨分享!數據挖掘,為什麼需要數據預處理

在《數據分析的高級應用,是時候搞懂數據挖掘了

》一文中,為大家詳細介紹了數據挖掘的商業價值,但是質量不高的數據會直接影響挖掘結果,可能導致得出錯誤的商業結論。

跨行業數據挖掘標準流程(CRISP-DM)把完整的數據挖掘過程定義為六個標準階段,分別是業務理解、數據理解、數據準備、創建模型、模型評估和模型應用。

乾貨分享!數據挖掘,為什麼需要數據預處理

其中,數據準備是數據挖掘流程中的一個重要環節。具體工作主要包括清理、規約、轉換、抽樣等一系列的預處理工作,提高數據的質量,使得數據挖掘算法可以更高效的執行以及獲得更加有效的結果。

為什麼要預處理數據

有些小夥伴可能會問,我的數據有現成的,為什麼還要預處理數據,不能直接拿來進行數據挖掘嗎?回答是,當然能。但是,現實往往是殘酷的!

1. 現實世界的數據是骯髒的(不完整,含噪聲,不一致)。

乾貨分享!數據挖掘,為什麼需要數據預處理

2. 沒有高質量的數據,就沒有高質量的挖掘結果。

乾貨分享!數據挖掘,為什麼需要數據預處理

3. 原始數據中存在很多問題,

  • 不一致 :數據內部出現不一致情況
  • 不正確:輸入的數據不符合字段的有效值
  • 不準確:數據可能是正確的,但是不準確
  • 重複數據:重複輸入的數據
  • 不完整 :感興趣的屬性值沒有
  • 含噪聲:數據中存在著錯誤、或異常(偏離期望值)的數據
  • 高維度:存在信息冗餘的多個屬性。
  • 違反業務規則:例如起始日期大於截止日期等情況
乾貨分享!數據挖掘,為什麼需要數據預處理

有哪些數據預處理方法

常用的數據預處理方法可以歸納為四個方面。

1、數據清理

  • 缺失值處理:數據中的缺失值會影響挖掘的正常進行,造成挖掘結果不正確。對較大比例的缺失值可以進行忽略處理,少量的缺失值可以採用最大、最小、均值、中位數、自定義表達式等方式進行填充。
  • 數據集成與過濾:用於去除冗餘數據、進行重複值檢測、編碼一致性、數據一致性等。

2、數據規約

  • 維規約:減少所考慮的隨機變量或屬性的個數(主成分分析PCA)。例如,一個汽車數據的樣本,裡面既有“千米/每小時”的速度特徵,也有“英里/小時”的速度特徵,顯然有一個多餘,需要消除冗餘的特徵。
  • 數量規約和壓縮:
    用替代的、較小的數據表示形式替換原數據。例如,不同年份的數據特徵基本一樣,可以只保留一個年份的數據進行挖掘。

3、數據變換

  • 屬性構造:從給定屬性構造新的屬性,或者將屬性類別進行變換,輔助數據挖掘過程。例如根據月收入和獎金等屬性可以構造出年收入,便於用來預測年收入。
  • 歸一化:將不同度量方式的數據放在同一個度量體系中進行比較。比如通過min-max標準化方法來求某個字段A的新值,然後進行比較分析。歸一化是為了後面數據挖掘算法的方便,保正程序運行時收斂加快,提高挖掘的精度。
  • 標準化:數據的標準化是將數據按比例縮放,使之落入一個小的特定區間。可以通過z-score方法對原始數據的均值(mean)和標準差(standard deviation)進行數據的標準化,同時不改變原始數據的分佈。在某些比較和評價的指標處理中經常會用到,去除數據的單位限制,將其轉化為無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。
  • 離散化:也叫分箱,將數值屬性的原始值用區間標籤或概念標籤進行替換。如年收入數據,可以通過2-3W、3-5W等區間符號標識,也可以用高收入、中等收入、低收入進行離散化。

4、數據抽樣

通過數據抽樣來減少用於挖掘的數據量或者從一個大型數據集中提取大小固定的樣本。

  • 隨機抽樣:按一定比例或者固定行數從總體中隨機的抽取樣本。
  • 分層抽樣:將總體數據分成若干組或者分層,然後從分層中按比例或者固定個數抽取樣本。如果數據按層分佈的特徵比較明顯,可以採用分層抽樣,減少隨機抽樣造成的信息丟失。

如何進行數據預處理

進行數據預處理的一般流程為:

乾貨分享!數據挖掘,為什麼需要數據預處理

我們在網上找到了泰坦尼克乘客數據集(該數據集被評為五大最適合數據分析練手項目之一),想對該數據集進行乘客是否存活的分類挖掘,下期為大家介紹。

這次將為大家介紹如何利用豌豆DM工具的可視化數據探索和預處理功能,提高泰坦尼克乘客數據集的質量,便於後續的挖掘。

乾貨分享!數據挖掘,為什麼需要數據預處理

上圖是泰坦尼克乘客數據集導入後的所有字段,可以看到數據集有12個字段(特徵),除了Survived(表示是否獲救)外,其他是乘客的信息,為方便識別,我們利用豌豆DM為每個字段加了中文標題。

第一步:數據探索

豌豆DM數據探索提供圖表與圖形幫助理解數據集統計信息

乾貨分享!數據挖掘,為什麼需要數據預處理

泰坦尼克乘客數據集一共有891條記錄,其中Age,Cabin和Embarked三個字段有缺失值,為了準確的挖掘,該數據集有下面幾個問題需要處理:

缺失值字段的處理

  • Cabin字段缺失值佔比太高,後續不納入數據挖掘過程。
  • Age字段缺失值較少,且數據呈正態分佈,考慮用平均值填充缺失值。

字段離散化

  • 要按年齡段分析獲救人員情況,需要要將Age字段按年齡段分組為少年兒童、中青年、老年人。

值替換

  • 要進行分析的Survived字段用1和0分別表示是否獲救,不夠直觀,需要替換為更為直觀的 Yes和No。

第二步:數據處理

豌豆DM提供了一些簡便易懂的可視化數據預處理方式,能夠完成不同的數據預處理工作。

乾貨分享!數據挖掘,為什麼需要數據預處理

先用WonderDM創建一個自定義數據集,在這個新數據集上進入”數據預處理”,通過“添加操作”菜單,添加需要的數據預處理操作。

1、設置數據源,選擇創建的titanic數據集對應的表。

乾貨分享!數據挖掘,為什麼需要數據預處理

2、添加“值替換”,將Age字段空值替換為平均值。

3、 添加“離散化”,對Age字段離散化,分為三個年齡段,離散化後的字段名為AGE_GRP。

乾貨分享!數據挖掘,為什麼需要數據預處理

4、 離散化後的AGE_GRP字段值不直觀,則添加“值替換”進一步替換為“少年兒童”,“中青年”,“老年”。

乾貨分享!數據挖掘,為什麼需要數據預處理

5、將Survived字段值替換為Yes和No。由於原字段是邏輯型,需增加一個字符型字段存放Yes和No,在界面上添加一個“添加字段”,輸入相應的轉換表達式。

乾貨分享!數據挖掘,為什麼需要數據預處理

最後,一份完整的數據預處理過程列表見下圖,豌豆DM還提供拖拽操作,調整各項操作的執行順序,用戶可點擊主界面上的“運行”按鈕開始數據預處理工作。

乾貨分享!數據挖掘,為什麼需要數據預處理

最終處理好的數據集如下圖所示,Age字段空值採用了平均值填充,離散化後的字段AGE_GRP採用了明確的年齡分組信息,IS_SURVIVED分別用Yes和No表示是否獲救。

乾貨分享!數據挖掘,為什麼需要數據預處理

至此,我們完成了一個數據處理工作,使用億信豌豆DM可視化的數據預處理操作過程也非常方便易懂。如果您對數據挖掘也感興趣,可以一起交流交流哦~


分享到:


相關文章: