工作中人們常提到的數(shù)據(jù)預處理,說的到底是什么?
數(shù)據(jù)預處理一方面是為了提高數(shù)據(jù)的質量,另一方面也是為了適應所做數(shù)據(jù)分析的軟件或者方法。
在做數(shù)據(jù)分析時,我想許多數(shù)據(jù)分析師會像《R語言實戰(zhàn)第二版》的作者卡巴科弗那樣發(fā)出感嘆:“數(shù)據(jù)分析師在數(shù)據(jù)預處理上花費了60%的時間……”
是的,我們所知道的建模,評估模型等數(shù)據(jù)分析工作所花費的時間遠遠沒有數(shù)據(jù)預處理的多。這件事雖然麻煩多事但卻“功在千秋”,如果在做數(shù)據(jù)分析時前期的數(shù)據(jù)預處理做的很好,那后面的步驟會說話的話,相信我,它們一定會感謝你的。這就跟減肥一樣,過程艱難,但人家創(chuàng)造101的楊超越不也下定決心唱出一句:“燃燒我的卡路里,你是最棒的”嘛。
數(shù)據(jù)預處理一方面是為了提高數(shù)據(jù)的質量,另一方面也是為了適應所做數(shù)據(jù)分析的軟件或者方法。一般來說,數(shù)據(jù)預處理步驟有數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)變換、數(shù)據(jù)規(guī)約,每個大步驟又有一些小的細分點。當然了,這四個大步驟在做數(shù)據(jù)預處理時未必都要執(zhí)行。
一、數(shù)據(jù)清洗
數(shù)據(jù)清洗,顧名思義,“黑”的變成“白”的,“臟”的數(shù)據(jù)變成“干凈”的,臟數(shù)據(jù)表現(xiàn)在形式上和內容上的臟。
- 形式上的臟,如:缺失值、帶有特殊符號的;
- 內容上的臟,如:異常值。
1. 缺失值
缺失值包括缺失值的識別和缺失值的處理。
在R里缺失值的識別使用函數(shù)is.na()判別,函數(shù)complete.cases()識別樣本數(shù)據(jù)是否完整。
缺失值處理常用的方法有:刪除、替換和插補。
- 刪除法 :刪除法根據(jù)刪除的不同角度又可以分為刪除觀測樣本和變量,刪除觀測樣本(行刪除法),在R里na.omit()函數(shù)可以刪除所含缺失值的行。這就相當于減少樣本量來換取信息的完整度,但當變量有較大缺失并且對研究目標影響不大時,可考慮刪除變量R里使用語句mydata[,-p]來完成。mydata表示所刪數(shù)據(jù)集的名字,p是該刪除變量的列數(shù),-表示刪除。
- 替換法 :替換法顧名思義對缺失值進行替換,根據(jù)變量的不同又有不同的替換規(guī)則,缺失值的所在變量是數(shù)值型用該變量下其他數(shù)的均值來替換缺失值;變量為非數(shù)值變量時則用該變量下其他觀測值的中位數(shù)或眾數(shù)替換。
- 插補法 :插補法分為回歸插補和多重插補?;貧w插補指的是將插補的變量當作因變量y,其他變量看錯自變量,利用回歸模型進行擬合,在R里使用lm()回歸函數(shù)對缺失值進行插補;多重插補是指從一個包含缺失值的數(shù)據(jù)集中生成一組完整的數(shù)據(jù),多次進行,產生缺失值的一個隨機樣本,在R里mice()包可以進行多重插補。
2. 異常值
異常值跟缺失值一樣包括異常值的識別和異常值的處理。
- 異常值的識別通常用單變量散點圖或箱形圖來處理,在R里dotchart()是繪制單變量散點圖的函數(shù),boxplot()函數(shù)繪制箱現(xiàn)圖;在圖形中,把遠離正常范圍的點當作異常值。
- 異常值的的處理有刪除含有異常值的觀測(直接刪除,當樣本少時直接刪除會造成樣本量不足,改變變量的分布)、當作缺失值(利用現(xiàn)有的信息,對其當缺失值填補)、平均值修正(用前后兩個觀測值的均值修正該異常值)、不處理。在進行異常值處理時要先復習異常值出現(xiàn)的可能原因,再判斷異常值是否應該舍棄。
二、數(shù)據(jù)集成
所謂數(shù)據(jù)集成就是將多個數(shù)據(jù)源合并放到一個數(shù)據(jù)存儲中,當然如果所分析的數(shù)據(jù)原本就在一個數(shù)據(jù)存儲里就不需要數(shù)據(jù)的集成了(多合一)。
數(shù)據(jù)集成的實現(xiàn)是將兩個數(shù)據(jù)框以關鍵字為依據(jù),在R里用merge()函數(shù)實現(xiàn),語句為merge(dataframe1, dataframe2,by=”關鍵字“”),默認按升序排列。
在進行數(shù)據(jù)集成時可能會出現(xiàn)如下問題:
- 同名異義,數(shù)據(jù)源A中某屬性名字和數(shù)據(jù)源B中某屬性名字相同,但所表示的實體不一樣,不能作為關鍵字;
- 異名同義,即兩個數(shù)據(jù)源某個屬性名字不一樣但所代表的實體一樣,可作為關鍵字;
- 數(shù)據(jù)集成往往造成數(shù)據(jù)冗余,可能是同一屬性多次出現(xiàn),也可能是屬性名字不一致導致的重復,對于重復屬性一個先做相關分析檢測,如果有再將其刪除。
三、數(shù)據(jù)變換
數(shù)據(jù)變換就是轉化成適當?shù)男问?,來滿足軟件或分析理論的需要。
1. 簡單函數(shù)變換
簡單函數(shù)變換用來將不具有正態(tài)分布的數(shù)據(jù)變成有正態(tài)分布的數(shù)據(jù),常用的有平方、開方、取對數(shù)、差分等。如在時間序列里常對數(shù)據(jù)對數(shù)或差分運算,將非平穩(wěn)序列轉化成平穩(wěn)序列。
2. 規(guī)范化
規(guī)范化就是剔除掉變量量綱上的影響,比如:直接比較身高和體重的差異,單位的不同和取值范圍的不同讓這件事不能直接比較。
- 最小-最大規(guī)范化:也叫離差標準化,對數(shù)據(jù)進行線性變換,將其范圍變成[0,1]
- 零-均值規(guī)范化:也叫標準差標準化,處理后的數(shù)據(jù)均值等于0,標準差為1
- 小數(shù)定標規(guī)范化:移動屬性值的小數(shù)位數(shù),將屬性值映射到[-1,1]
3. 連續(xù)屬性離散化
將連續(xù)屬性變量轉化成分類屬性,就是連續(xù)屬性離散化,特別是某些分類算法要求數(shù)據(jù)是分類屬性,如:ID3算法。
常用的離散化方法有如下幾種:
- 等寬法:將屬性的值域分成具有相同寬度的區(qū)間,類似制作頻率分布表;
- 等頻法:將相同的記錄放到每個區(qū)間;
- 一維聚類:兩個步驟,首先將連續(xù)屬性的值用聚類算法,然后將聚類得到的集合合并到一個連續(xù)性值并做同一標記。
四、數(shù)據(jù)規(guī)約
數(shù)據(jù)規(guī)約能夠降低無效錯誤的數(shù)據(jù)對建模的影響、縮減時間、降低存儲數(shù)據(jù)的空間。
1. 屬性規(guī)約
屬性規(guī)約是尋找最小的屬性子集并確定子集概率分布接近原來數(shù)據(jù)的概率分布。
- 合并屬性:將一些舊的屬性合并一個新的屬性;
- 逐步向前選擇:從一個空屬性集開始,每次在原來屬性集合選一個當前最優(yōu)屬性添加到當前子集中,一直到無法選擇最優(yōu)屬性或滿足一個約束值為止;
- 逐步先后選擇:從一個空屬性集開始,每次在原來屬性集合選一個當前最差屬性并剔除當前子集中,一直到無法選擇最差屬性或滿足一個約束值為止;
- 決策樹歸納:沒有出現(xiàn)在這個決策樹上的屬性從初始集合中刪除,獲得一個較優(yōu)的屬性子集;
- 主成份分析:用較少的變量去解釋原始數(shù)據(jù)中大部分變量(用相關性高的變量轉化成彼此相互獨立或不相關的變量)。
2. 數(shù)值規(guī)約
通過減少數(shù)據(jù)量,包括有參數(shù)和無參數(shù)方法,有參數(shù)如線性回歸和多元回歸,無參數(shù)法如直方圖、抽樣等。
本文由 @CDA數(shù)據(jù)分析師 原創(chuàng)發(fā)布于人人都是產品經理。未經許可,禁止轉載
題圖由作者提供
- 目前還沒評論,等你發(fā)揮!