數據挖掘過程中:數據預處理
4 人贊了文章
數據挖掘過程中:數據預處理
在數據分析之前,我們通常需要先將數據標準化(normalization),利用標準化後的數據進行數據分析。數據標準化也就是統計數據的指數化。數據標準化處理主要包括數據同趨化處理和無量綱化處理兩個方面。數據同趨化處理主要解決不同性質數據問題,對不同性質指標直接加總不能正確反映不同作用力的綜合結果,須先考慮改變逆指標數據性質,使所有指標對測評方案的作用力同趨化,再加總才能得出正確結果。數據無量綱化處理主要解決數據的可比性。數據標準化的方法有很多種,常用的有「最小—最大標準化」、「Z-score標準化」和「按小數定標標準化」等。經過上述標準化處理,原始數據均轉換為無量綱化指標測評值,即各指標值都處於同一個數量級別上,可以進行綜合測評分析。
數據的標準化過程也是歸一化的過程。
數據的標準化(normalization)是將數據按比例縮放,使之落入一個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除數據的單位限制,將其轉化為無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。
數據歸一化的目的是為了把不同來源的數據統一到一個參考系下,這樣比較起來才有意義。1 定義歸一化就是要把你需要處理的數據經過處理後(通過某種演算法)限制在你需要的一定範圍內。首先歸一化是為了後面數據處理的方便,其次是保正程序運行時收斂加快。2 為什麼要用歸一化呢?
首先先說一個概念,叫做奇異樣本數據,所謂奇異樣本數據數據指的是相對於其他輸入樣本特別大或特別小的樣本矢量。下面舉例:m=[0.11 0.15 0.32 0.45 30;0.13 0.24 0.27 0.25 45];其中的第五列數據相對於其他4列數據就可以成為奇異樣本數據(下面所說的網路均值bp)。奇異樣本數據存在所引起的網路訓練時間增加,並可能引起網路無法收斂,所以對於訓練樣本存在奇異樣本數據的數據集在訓練之前,最好先進形歸一化,若不存在奇異樣本數據,則不需要事先歸一化。
3 歸一化方法主要有如下幾種,供大家參考:(by james)(1)線性函數轉換,表達式如下:y=(x-MinValue)/(MaxValue-MinValue)說明:x、y分別為轉換前、後的值,MaxValue、MinValue分別為樣本的最大值和最小值。
在統計學中,歸一化的具體作用是歸納統一樣本的統計分布性。歸一化在0-1之間是統計的概率分布,歸一化在-1--+1之間是統計的坐標分布。(2)對數函數轉換,表達式如下:y=log10(x)說明:以10為底的對數函數轉換。
進行Log分析時,會將原本絕對化的時間序列歸一化到某個基準時刻,形成相對時間序列,方便排查。通過以10為底的log函數轉換的方法同樣可以實現歸一下,具體方法也可以如下: 看了下網上很多介紹都是x『=log10(x),其實是有問題的,這個結果並非一定落到[0,1]區間上,應該還要除以 log10(max),max為樣本數據最大值,並且所有的數據都要大於等於1。(3)反餘切函數轉換,表達式如下:y=atan(x)*2/PI歸一化是為了加快訓練網路的收斂性,可以不進行歸一化處理(4)z-score 標準化(zero-mean normalization)也叫標準差標準化,經過處理的數據符合標準正態分布,即均值為0,標準差為1,其轉化函數為: 其中μ為所有樣本數據的均值,σ為所有樣本數據的標準差。4 在matlab裡面,用于歸一化的方法共有三種:(1)premnmx、postmnmx、tramnmx(2)prestd、poststd、trastd(3)是用matlab語言自己編程。premnmx指的是歸一到[-1 1];prestd歸一到單位方差和零均值;關於自己編程一般是歸一到[0.1 0.9] 。5 注意
需要說明的事並不是任何問題都必須事先把原始數據進行規範化,也就是數據規範化這一步並不是必須要做的,要具體問題具體看待,測試表明有時候規範化後的預測準確率比沒有規範化的預測準確率低很多.就最大最小值法而言,當你用這種方式將原始數據規範化後,事實上意味著你承認了一個假設就是測試數據集的每一模式的所有特徵分量的最大值(最小值)不會大於(小於)訓練數據集的每一模式的所有特徵分量的最大值(最小值),但這條假設顯然過於強,實際情況並不一定會這樣.使用平均數方差法也會有同樣類似的問題.故數據規範化這一步並不是必須要做的,要具體問題具體看待.
歸一化首先在維數非常多的時候,可以防止某一維或某幾維對數據影響過大,其次可以程序可以運行更快。方法很多,min-max,z-score,p範數等,具體怎麼使用,要根據數據集的特徵來選擇。http://cda.pinggu.org/view/20179.html推薦閱讀:
TAG:數據挖掘 | 數據挖掘入門 | 數據挖掘演算法工程師 |