數據挖掘中常用的數據清洗方法有哪些?
原文鏈接:https://www.zhihu.com/question/22077960
從兩個角度看,數據清洗一是為了解決數據質量問題,,二是讓數據更適合做挖掘。不同的目的下分不同的情況,也都有相應的解決方式和方法。
包括缺失值處理、異常值處理、重復值處理、空值填充、統一單位、是否標准化處理、是否刪除無必要的變量、是否排序、是否進行主成分或因子分析等等。
-
解決數據質量問題
解決數據的各種問題,包括但不限於:
-
數據的完整性----例如人的屬性中缺少性別、籍貫、年齡等
-
數據的唯一性----例如不同來源的數據出現重復的情況
-
數據的權威性----例如同一個指標出現多個來源的數據,且數值不一樣
-
數據的合法性----例如獲取的數據與常識不符,年齡大於150歲
-
數據的一致性----例如不同來源的不同指標,實際內涵是一樣的,或是同一指標內涵不一致
-
數據清洗的結果是對各種臟數據進行對應方式的處理,得到標准的、干凈的、連續的數據,提供給數據統計、數據挖掘等使用。
那么為了解決以上的各種問題,我們需要不同的手段和方法來一一處理。
每種問題都有各種情況,每種情況適用不同的處理方法,具體如下:
1.1解決數據的完整性問題:(數據缺失,那么補上就好了)
補數據有什么方法?
-
通過其他信息補全,例如使用身份證號碼推算性別、籍貫、出生日期、年齡等等。
-
通過前后數據補全,例如時間序列缺數據了,可以使用前后的均值,缺的多了,可以使用平滑等處理,記得Matlab還是什么工具可以自動補全
-
實在補不全的,雖然很可惜,但也必須要剔除。但是不要刪掉,沒准以后可以用得上
1.2解決數據的唯一性問題(解題思路:去除重復記錄,只保留一條。)
去重的方法有:
-
按主鍵去重,用sql或者excel"去除重復記錄"即可,
-
按規則去重,編寫一系列的規則,對重復情況復雜的數據進行去重。例如不同渠道來的客戶數據,可以通過相同的關鍵信息進行匹配,合並去重。
1.3解決數據的權威型問題
解題思路:用最權威的個渠道的數據
方法:
-
對不同渠道設定權威級別,例如:在家里,首先得相信媳婦說的。。
1.4解決數據的合法性問題
解題思路:設定判定規則
-
設定強制合法規則,凡是不在此規則范圍內的,強制設為最大值,或者判為無效,剔除
字段類型合法規則:日期字段格式為"2010-10-10"
字段內容合法規則:性別 in (男、女、未知);出生日期<=今天
-
設定警告規則,凡是不在此規則范圍內的,進行警告,然后人工處理
警告規則:年齡》110
-
離群值人工特殊處理,使用分箱、聚類、回歸、等方式發現離群值
1.5解決數據的一致性問題
解題思路:建立數據體系,包含但不限於:
-
指標體系(度量)
-
維度
-
單位
-
頻度
-
數據
-
讓數據更適合做挖掘或展示
目標包括但不限於:
-
高緯度----不適合挖掘
-
維度太低----不適合挖掘
-
無關信息----減少存儲
-
字段冗余----一個字段是其他字段計算出來的,會造成相關系數為1或者主成因分析異常
-
多指標數值、單位不同----如GDP與城鎮居民人均收入數值相差過大
2.1解決高緯度問題
解題思路:降維,方法包括但不限於:
-
主成分分析
-
隨機森林
2.2解決維度低或缺少維度問題
解題思路:抽象,方法包括但不限於:
-
各種匯總,平均、加總、最大、最小
-
各種離散化,聚類等
2.3解決無關信息和字段冗余(解決方法:剔除字段)
2.4解決多指標數值、單位不同問題
解決方法:歸一化
-
-
如何刪除重復項
由於各種原因,數據中可能存在重復記錄或重復字段(列),對於這些重復項目(行和列)需要做去重處理。對於重復項的判斷,基本思想是"排序和合並",先將數據庫中的記錄按一定規則排序,然后通過比較鄰近記錄是否相似來檢測記錄是否重復。這里面其實包含了兩個操作,一是排序,二是計算相似度。
常見的排序算法:
插入排序、冒泡排序、選擇排序、快速排序、堆排序、歸並排序、基數排序、希爾排序
常見判斷相似度的算法:
基本的字段匹配算法、標准化歐氏距離、漢明距離、夾角余弦、曼哈頓距離、歐氏距離、切比雪夫距離、相關系數、信息熵等等
對於重復的數據項,盡量需要經過業務確認並進行整理提取出規則。在清洗轉換階段,對於重復數據項盡量不要輕易做出刪除決策,尤其不能將重要的或有業務意義的數據過濾掉,校驗和重復確認的工作必不可少
