R語言數據挖掘實戰系列(4)

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='關鍵字'),合併後的新數據自動按關鍵字取值的大小升序排列。

  1. 實體識別

    實體識別是從不同數據源識別出現實世界的實體,任務是統一不同數據源的矛盾之處,如同名異義、異名同義、單位不統一

  2. 冗餘屬性識別

    數據集成往往造成數據冗餘,如同一屬性多次出現、同一屬性命名不一致,導致重複。

有些冗餘屬性可以用相關分析檢測。給定兩個數值型的屬性A和B,根據其屬性值,用相關係數度量一個屬性在多大程度上蘊含另一個屬性。

三、數據變換

數據變換主要是對數據進行規範化處理,連續變量的離散化以及變量屬性的構造,將數據轉換成“適當的”形式,以滿足挖掘任務及算法的需要。

  1. 簡單函數變換

    簡單函數變換就是對原始數據進行某些數學函數變換,如平方、開方、取對數、差分運算等。簡單的函數變換常用來將不具有正態分佈的數據變換成具有正態分佈的數據。

  2. 規範化

    爲了消除指標之間的量綱和取值範圍差異的影響,需要進行標準化處理,將數據按照比例進行縮放,使之落入一個特定的區域,便於進行綜合分析。

    數據規範化對於基於距離的挖掘算法尤爲重要。

    (1)最小-最大規範化:也稱爲離差標準化,是對原始數據的線性變換,將數值映射到[0,1]。這種方法的缺點是若數據集中且某個數值很大,則規範化後各值會接近於0,並且將會相差不大。若將來遇到超過目前屬性[min,max]取值範圍時,會引起系統出錯,需要重新確定min和max。

    (2)零-均值規範化:也叫標準差標準化,經過處理的數據的均值爲0,標準差爲1。這種方法是當前用得最多的數據的標準化方法,但是均值和標準差受離羣點的影響較大,因此通常需要進行修改。首先用中位數M取代均值,其次用絕對標準差取代標準差。

    (3)小數定標規範化:通過移動屬性值的小數位數,將屬性值映射到[-1,1],移動的小數位數取決於屬性值絕對值的最大值。

  3. 連續屬性離散化

    (1)離散化的過程

    連續屬性的離散化就是在數據的取值範圍內設定若干個離散的劃分點,將取值範圍劃分爲一些離散化的區間,最後用不同的符號或整數值代表落在每個子區間中的數據值。所以,離散化涉及兩個子任務:確定分類數以及如何將連續屬性值映射到這些分類值。

    (2)常用的離散化方法

    常用的離散化方法有等寬法、等頻法和(一維)聚類。

    等寬法:將屬性的值域分成具有相同寬度的區間、區間的個數由數據本身的特點決定,或者由用戶指定,類似於製作頻率分佈表。

    等頻法:將相同數量的記錄放進每個區間。缺點是對離羣點比較敏感,傾向於不均勻地把屬性值分佈到各個區間。

    (一維)聚類:包括兩個步驟,首先將連續屬性的值用聚類算法進行聚類,然後再將聚類得到的簇進行處理,合併到一個簇的連續屬性值並做同一標記。聚類分析的離散化方法也需要用戶指定簇的個數,從而決定產生的區間數。

  4. 屬性構造

    爲了便於提取更有用的信息,挖掘更深層次的模式,提高挖掘結果的精度,需要利用已有的屬性集構造出新的屬性,並加入到現有的屬性集合中。

  5. 小波變換

    小波變換是一種新型的數據分析工具,具有多分辨率的特點,在時域和頻域都具有表徵信號局部特徵的能力,通過伸縮和平移等運算過程對信號進行多尺度聚焦分析,提供了一種非平穩信號的時頻分析手段,可以由粗到細地逐步觀察信號,從中提取有用信息。

    能夠刻畫某個問題的特徵量往往是隱含在一個信號中的某個或者某些分量中,小波變換可以把非平穩信號分解爲表達不同層次、不同頻帶信息的數據序列,即小波係數。選取適當的小波係數,即完成了信號的特徵提取。

    (1)基於小波變換的特徵提取方法

    基於小波變換的特徵提取方法有:基於小波變換的多尺度空間能量分佈特徵提取、基於小波變換的多尺度空間的模極大值特徵提取、基於小波包變換的特徵提取、基於適應性小波神經網絡的特徵提取。

    表4-2 基於小波變換的特徵提取方法


    基於小波變換的特徵提取方法方法描述
    基於小波變換的多尺度空間能量分佈特徵提取方法各尺度空間內的平滑信號和細節信號能提供原始信號的時頻局域信息,特別是能提供不同頻段上信號的構成信息。把不同分解尺度上信號的能量求解出來,就可以將這些能量尺度順序排列,形成特徵向量供識別用
    基於小波變換的多尺度空間的模極大值特徵提取方法利用小波變換的信號局域化分析能力,求解小波變換的模極大值特徵來檢測信號的局域奇異性,將小波變換模極大值的尺度參數s、平移參數t及其幅值作爲目標的特徵量
    基於小波包變換的特徵提取方法利用小波分解,可將時域隨機信號序列映射爲尺度域各子空間內的隨機系統序列,按小波包分解得到的最佳子空間內隨機係數序列的不確定性程度最低,將最佳子空間的熵值及最佳子空間在完整二叉樹中的位置參數作爲特徵量,可以用於目標識別
    基於適應性小波神經網絡的特徵提取方法基於適應性小波神經網絡的特徵提取方法可以把信號通過分析小波擬合表示,進行特徵提取

    (2)小波基函數

    小波基函數是一種具有局部支集的函數,並且平均值爲0,小波奇函數滿足Ψ(0)=∫ψ(t)dt=0。常用的小波基有Haar小波基、db系列小波基等。

    (3)小波變換

    (4)基於小波變換的多尺度空間能量分佈特徵提取方法

    應用小波分析技術可以把信號在個頻率波段中的特徵提取出來,基於小波變換的多尺度空間能量分佈特徵提取方法是對信號進行頻帶分析,再分別以計算所得的各個頻帶的能量作爲特徵向量。

四、數據規約

       數據規約可以產生更小的但保持原數據完整性的新數據集。數據規約的意義在於:降低無效、錯誤數據對建模的影響,提高建模的準確性;少量且具有代表性的數據將大幅縮減數據挖掘所需的時間;降低儲存數據的成本。

  1. 屬性規約

    屬性規約通過屬性合併來創建新屬性維數,或者直接通過刪除不相關的屬性(維)來減少數據維數,從而提高數據挖掘的效率、降低計算成本。屬性規約的目標是尋找出最小的屬性子集並確保新數據子集的概率分佈儘可能地接近原來數據集的概率分佈。屬性規約的常用方法有:

    合併屬性:將一些舊屬性合爲新屬性;

    逐步向前選擇:從一個空屬性集開始,每次從原來屬性集合中選擇一個當前最優的屬性添加到當前屬性子集中。直到無法選擇出最優屬性或滿足一定閾值約束爲止;

    逐步向後刪除:從一個全屬性集開始,每次從當前屬性子集中選擇一個當前最差的屬性並將其從當前屬性子集中消去。直到無法選擇出最差屬性爲止或滿足一定閾值約束爲止;

    決策樹歸納:利用決策樹的歸納方法對初始數據進行分類歸納學習,獲得一個初始決策樹,所有沒有出現在這個決策樹上的屬性均可認爲是無關屬性,因此將這些屬性從初始集合中刪除,就可以獲得一個較優的屬性子集;

    主成分分析:用較少的變量去解釋原始數據中的大部分變量,即將許多相關性很高的變量轉化成彼此相互獨立或不相關的變量。

  2. 數值規約

    數值規約通過選擇替代的、較小的數據來減少數據量,包括有參數方法和無參數方法兩類。有參數方法是使用一個模型來評估數據,只需存放參數,而不需要存放實際數據,如迴歸(線性迴歸和多元迴歸)和對數線性模型(近似離散屬性集中的多維概率分佈)。無參數方法需要存放實際數據,如直方圖、聚類、抽樣。

    (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()對指標變量矩陣進行主成分分析通用函數包


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章