1. 數據的標准化和正態化變換
數據挖掘過程中,不同變數數據單位不一,比如,我們想知道一個人身體健康狀況,其身高是180cm,體重是80kg,視力是2.5,心跳是70/min,這些指標都是描述一個人身體狀況的數據,這些單一不一的指標會對建模的准確度有一定影響。因此,在數據挖掘之前,我們要對數據做標准化處理。
另外,建模之後,我們產生了有價值的目標變數數據,但是這些數據都是標准化數據形式,跟實際業務問題的需求有一定偏差。如此,源拆需要對數據做一定的變換,比如使其接近正態分布,這樣從數據形式上可以對業務問題有更好的解釋。
數據標准化有很多形式,這里簡單總結三種,如下:
假設我們有一個X向量,x(i,j),i = 1,..,m;j = 1,..,n。z_score規范化如下:
x(i,j)' = [x(i,j) - E(j)] / S[j] ,即x(i,j)減去第j列的均值再除以第j列的標准差。
這樣處理之後,原數據就變成了均值為0,方差為1,記作:
X' = [X - E(X)] / S(X) ,其中,E(X) = 0, S(X) = 1。
假設我們有讓裂彎一個X向量,x(i,j),i = 1,..,m;j = 1,..,n。中心化如下:
x(i,j)' = x(i,j) - E(j) ,E(j)是第j列的均值。
如此變化以後,均值為0,但是方差矩陣不變。
假設我們有一個X向量,x(i,j),i = 1,..,m;j = 1,..,n。極差標准化如下:
x(i,j) = [x(i,j) - E(j)]/ ( max(j) - min(j) .
這樣變換後,均值為0,方差為1.
小數定標規范化通過移動數據A的小數點位置進行規范化。小數點的移動位置依賴數據A的最大值。由下式計算:|max(A)|<1的最小整數。假設A的取值為-986 ~ 917,A的最大絕對值為986,使用小數定標規范化,用1000除以每個值,這樣-986標准化為-0.986,917則為0.917.
注意:極差標准化和小數定標規范化都改變了原數據,如果想統一轉換為原數據比較麻煩。所以可以盡量通過前兩種方法來做規范化。
R語言中有現成的函數,比如scale,可以通過設置scale的參數來實現z_score和中心化的數據標准化,具體參考?scale.
當然,可以可以自己寫一個規范化函數,如下:
數據正態化,目的是穩定方差,直線化,使數據分布正態或者接近正態。
如果y = f(x) 是x的線性函數,不影響分析;但是如果是非線性函數,y和x的表現就完全不同,包括分布,方差和數據間關系也會不同。
這個不做過多解釋,請參考 這里
Box-Cox在1964年從實際數坦悶據出發提出了一個很有效的變換,如下:
y = ifelse(k = 0,log(y),[y^k-1]/k) ,此變換有如下特點:
實際應用中,Box-Cox還有個擴展式,如下:
y = ifelse(k1 = 0,log(y+k2),[(y +k2)^k1-1]/k1) ,任意y,保證y+k2>0,即k2已知,k1為參數。
請參考這個文章, Box-Cox Transformation
1, Box-Cox Transform: An Overview
2, Box-Cox變換
3, 統計學與R語言筆記-徐俊曉
2. 何為數據要中心化和標准化其目的是什麼
數據標准化是指:數值減去均值,再除以標准差。
數據中心化是指:變數減去它的均值。
數據中心化和標准化在回歸分析中的意義是取消由於量綱不同、自身變異或者數值相差較大所引起的誤差。