您好,登錄后才能下訂單哦!
R語言數據挖掘實戰系列(4)——數據預處理
數據預處理一方面是要提高數據的質量,另一方面是要讓數據更好地適應特定的挖掘技術或工具。數據預處理的主要內容包括數據清洗、數據集成、數據變換和數據規約。
一、數據清洗
1.缺失值處理
一般來說,缺失值的處理包括兩個步驟,即缺失數據的識別和缺失值處理。在R語言中缺失值通常以NA表示,可以使用函數is.na()判斷缺失值是否存在,另外函數complete.cases()可識別樣本數據是否完整從而判斷缺失情況。在對是否存在缺失值進行判斷之后需要進行缺失值處理,常用的方法有刪除法、替換法、插補法等。
(1)刪除法
根據數據處理的不同角度可分為刪除觀測樣本、刪除變量兩種。刪除觀測樣本又稱為行刪除法,在R中可通過na.omit()函數移除所有含有缺失數據的行,這屬于以減少樣本量來換取信息完整性的方法,適用于缺失值所占比例較小的情況;刪除變量適用于變量有較大缺失且對研究目標影響不大的情況,意味著要刪除整個變量,在R中可通過data[,-p]來實現,其中data表示目標數據集,p表示缺失變量所在的列。
(2)替換法
變量按屬性可分為數值型和非數值型,二者的處理辦法不同:如果缺失值所在變量為數值型,一般用該變量在其他所有對象的取值的均值來替換變量的缺失值;如果為非數值型變量,則使用該變量其他全部有效觀測值的中位數或者眾數進行替換。
(3)插補法
在面對缺失值問題,常用的插補法有回歸插補、多重插補等。回歸插補法利用回歸模型,將需要插值補缺的變量作為因變量,其他相關變量作為自變量,通過回歸函數lm()預測出因變量的值來對缺失變量進行補缺;多重插補法的原理是從一個包含缺失值的數據集中生成一組完整的數據,如此進行多次,從而產生缺失值的一個隨機樣本,R中的mice函數包可以用來進行多重插補。
2.異常值處理
在異常值處理之前需要對異常值進行識別,一般多采用單變量散點圖或是箱型圖來達到目的。在R中,使用函數dotchart()、boxplot()實現繪制單變量散點圖與箱型圖。
表4-1 異常值處理常用方法
異常值處理方法 | 方法描述 |
刪除含有異常值的記錄 | 直接將含有異常值的記錄刪除 |
視為缺失值 | 將異常值視為缺失值,利用缺失值處理的方法進行處理 |
平均值修正 | 可用前后兩個觀測值的平均值修正該異常值 |
不處理 | 直接在具有異常值的數據集上進行挖掘建模 |
很多情況下,要先分析異常值出現的可能原因,再判斷異常值是否應該舍棄,如果是正確的數據,可以直接在具有異常值的數據集上進行挖掘建模。
二、數據集成
數據集成就是將多個數據源合并存放在一個一致的數據存儲中的過程。
在R中,數據集成是指將存儲在兩個數據框中的數據以關鍵字為依據,以行為單位做列向合并,可通過函數merge()實現,基本形式為merge(數據框1,數據框2,by='關鍵字'),合并后的新數據自動按關鍵字取值的大小升序排列。
實體識別
實體識別是從不同數據源識別出現實世界的實體,任務是統一不同數據源的矛盾之處,如同名異義、異名同義、單位不統一
冗余屬性識別
數據集成往往造成數據冗余,如同一屬性多次出現、同一屬性命名不一致,導致重復。
有些冗余屬性可以用相關分析檢測。給定兩個數值型的屬性A和B,根據其屬性值,用相關系數度量一個屬性在多大程度上蘊含另一個屬性。
三、數據變換
數據變換主要是對數據進行規范化處理,連續變量的離散化以及變量屬性的構造,將數據轉換成“適當的”形式,以滿足挖掘任務及算法的需要。
簡單函數變換
簡單函數變換就是對原始數據進行某些數學函數變換,如平方、開方、取對數、差分運算等。簡單的函數變換常用來將不具有正態分布的數據變換成具有正態分布的數據。
規范化
為了消除指標之間的量綱和取值范圍差異的影響,需要進行標準化處理,將數據按照比例進行縮放,使之落入一個特定的區域,便于進行綜合分析。
數據規范化對于基于距離的挖掘算法尤為重要。
(1)最小-最大規范化:也稱為離差標準化,是對原始數據的線性變換,將數值映射到[0,1]。這種方法的缺點是若數據集中且某個數值很大,則規范化后各值會接近于0,并且將會相差不大。若將來遇到超過目前屬性[min,max]取值范圍時,會引起系統出錯,需要重新確定min和max。
(2)零-均值規范化:也叫標準差標準化,經過處理的數據的均值為0,標準差為1。這種方法是當前用得最多的數據的標準化方法,但是均值和標準差受離群點的影響較大,因此通常需要進行修改。首先用中位數M取代均值,其次用絕對標準差取代標準差。
(3)小數定標規范化:通過移動屬性值的小數位數,將屬性值映射到[-1,1],移動的小數位數取決于屬性值絕對值的最大值。
連續屬性離散化
(1)離散化的過程
連續屬性的離散化就是在數據的取值范圍內設定若干個離散的劃分點,將取值范圍劃分為一些離散化的區間,最后用不同的符號或整數值代表落在每個子區間中的數據值。所以,離散化涉及兩個子任務:確定分類數以及如何將連續屬性值映射到這些分類值。
(2)常用的離散化方法
常用的離散化方法有等寬法、等頻法和(一維)聚類。
等寬法:將屬性的值域分成具有相同寬度的區間、區間的個數由數據本身的特點決定,或者由用戶指定,類似于制作頻率分布表。
等頻法:將相同數量的記錄放進每個區間。缺點是對離群點比較敏感,傾向于不均勻地把屬性值分布到各個區間。
(一維)聚類:包括兩個步驟,首先將連續屬性的值用聚類算法進行聚類,然后再將聚類得到的簇進行處理,合并到一個簇的連續屬性值并做同一標記。聚類分析的離散化方法也需要用戶指定簇的個數,從而決定產生的區間數。
屬性構造
為了便于提取更有用的信息,挖掘更深層次的模式,提高挖掘結果的精度,需要利用已有的屬性集構造出新的屬性,并加入到現有的屬性集合中。
小波變換
小波變換是一種新型的數據分析工具,具有多分辨率的特點,在時域和頻域都具有表征信號局部特征的能力,通過伸縮和平移等運算過程對信號進行多尺度聚焦分析,提供了一種非平穩信號的時頻分析手段,可以由粗到細地逐步觀察信號,從中提取有用信息。
能夠刻畫某個問題的特征量往往是隱含在一個信號中的某個或者某些分量中,小波變換可以把非平穩信號分解為表達不同層次、不同頻帶信息的數據序列,即小波系數。選取適當的小波系數,即完成了信號的特征提取。
(1)基于小波變換的特征提取方法
基于小波變換的特征提取方法有:基于小波變換的多尺度空間能量分布特征提取、基于小波變換的多尺度空間的模極大值特征提取、基于小波包變換的特征提取、基于適應性小波神經網絡的特征提取。
表4-2 基于小波變換的特征提取方法
基于小波變換的特征提取方法 | 方法描述 |
基于小波變換的多尺度空間能量分布特征提取方法 | 各尺度空間內的平滑信號和細節信號能提供原始信號的時頻局域信息,特別是能提供不同頻段上信號的構成信息。把不同分解尺度上信號的能量求解出來,就可以將這些能量尺度順序排列,形成特征向量供識別用 |
基于小波變換的多尺度空間的模極大值特征提取方法 | 利用小波變換的信號局域化分析能力,求解小波變換的模極大值特征來檢測信號的局域奇異性,將小波變換模極大值的尺度參數s、平移參數t及其幅值作為目標的特征量 |
基于小波包變換的特征提取方法 | 利用小波分解,可將時域隨機信號序列映射為尺度域各子空間內的隨機系統序列,按小波包分解得到的最佳子空間內隨機系數序列的不確定性程度最低,將最佳子空間的熵值及最佳子空間在完整二叉樹中的位置參數作為特征量,可以用于目標識別 |
基于適應性小波神經網絡的特征提取方法 | 基于適應性小波神經網絡的特征提取方法可以把信號通過分析小波擬合表示,進行特征提取 |
(2)小波基函數
小波基函數是一種具有局部支集的函數,并且平均值為0,小波奇函數滿足Ψ(0)=∫ψ(t)dt=0。常用的小波基有Haar小波基、db系列小波基等。
(3)小波變換
(4)基于小波變換的多尺度空間能量分布特征提取方法
應用小波分析技術可以把信號在個頻率波段中的特征提取出來,基于小波變換的多尺度空間能量分布特征提取方法是對信號進行頻帶分析,再分別以計算所得的各個頻帶的能量作為特征向量。
四、數據規約
數據規約可以產生更小的但保持原數據完整性的新數據集。數據規約的意義在于:降低無效、錯誤數據對建模的影響,提高建模的準確性;少量且具有代表性的數據將大幅縮減數據挖掘所需的時間;降低儲存數據的成本。
屬性規約
屬性規約通過屬性合并來創建新屬性維數,或者直接通過刪除不相關的屬性(維)來減少數據維數,從而提高數據挖掘的效率、降低計算成本。屬性規約的目標是尋找出最小的屬性子集并確保新數據子集的概率分布盡可能地接近原來數據集的概率分布。屬性規約的常用方法有:
合并屬性:將一些舊屬性合為新屬性;
逐步向前選擇:從一個空屬性集開始,每次從原來屬性集合中選擇一個當前最優的屬性添加到當前屬性子集中。直到無法選擇出最優屬性或滿足一定閾值約束為止;
逐步向后刪除:從一個全屬性集開始,每次從當前屬性子集中選擇一個當前最差的屬性并將其從當前屬性子集中消去。直到無法選擇出最差屬性為止或滿足一定閾值約束為止;
決策樹歸納:利用決策樹的歸納方法對初始數據進行分類歸納學習,獲得一個初始決策樹,所有沒有出現在這個決策樹上的屬性均可認為是無關屬性,因此將這些屬性從初始集合中刪除,就可以獲得一個較優的屬性子集;
主成分分析:用較少的變量去解釋原始數據中的大部分變量,即將許多相關性很高的變量轉化成彼此相互獨立或不相關的變量。
數值規約
數值規約通過選擇替代的、較小的數據來減少數據量,包括有參數方法和無參數方法兩類。有參數方法是使用一個模型來評估數據,只需存放參數,而不需要存放實際數據,如回歸(線性回歸和多元回歸)和對數線性模型(近似離散屬性集中的多維概率分布)。無參數方法需要存放實際數據,如直方圖、聚類、抽樣。
(1)直方圖
屬性A的直方圖將A的數據分布劃分為不相交的子集或桶。如果每個桶只代表單個屬性值/頻率對,則該桶成為單桶。通常,桶表示給定屬性的一個連續區間。R中用函數hist()繪制直方圖,用以說明變量取值的分布情況。
(2)聚類
聚類技術將數據元祖(即記錄,數據表中的一行)視為對象。它將對象劃分為簇,使一個簇中的對象相互“相似”,而與其他簇中的對象“相異”。在數據規約中,用數據的簇替換實際數據。該技術的有效性依賴于簇的定義是否符合數據的分布性質。R中常用的聚類函數有hclust()、kmeans(),前者在使用系統聚類法時使用,后者為快速聚類的函數。
(3)抽樣
抽樣也是一種數據規約技術,它用比原始數據小得多的隨機樣本(子集)表示原始數據集。抽樣類型有:有放回簡單隨機抽樣、無放回簡單隨機抽樣、聚類抽樣、分層抽樣等。用于數據規約時,抽樣最常用來估計聚集查詢的結果。在指定的誤差范圍內,可以確定(使用中心極限定理)估計一個給定的函數所需的樣本大小。通常樣本的大小s相對于N非常小。
(4)參數回歸
簡單線性模型和對數線性模型可以用來近似給定的數據。(簡單)線性模型對數據建模,使之擬合一條直線,在R中使用函數lm()即可實現。
對數線性模型:用來描述期望頻數與協變量(指與因變量有線性相關并且探討自變量與因變量關系時通過統計技術加以控制的變量)之間的關系。對數線性模型一般用來近似離散的多維概率分布。
五、R語言主要數據預處理函數
表4-3 R主要數據預處理函數
函數名 | 函數功能 | 所屬函數包 |
lm() | 利用因變量與自變量建立線性回歸模型 | 通用函數包 |
predict() | 依據已有模型對數據進行預測 | 通用函數包 |
mice() | 對缺失數據進行多重插補 | mice函數包 |
which() | 返回服從條件的觀測所在位置 | 通用函數包 |
scale() | 對數據進行零-均值規范化 | 通用函數包 |
rnorm() | 隨機產生服從正態分布的一列數 | 通用函數包 |
ceiling() | 向上舍入接近的整數 | 通用函數包 |
kmeans() | 對數據進行快速聚類分析 | 通用函數包 |
dwt() | 對數據進行小波分解 | waveslim函數包 |
princomp() | 對指標變量矩陣進行主成分分析 | 通用函數包 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。