數(shù)據(jù)的標(biāo)準(zhǔn)化和正態(tài)化變換

  • Author: 杜七

一页滚、前言

數(shù)據(jù)挖掘過程中,不同變量數(shù)據(jù)單位不一贞盯,比如整葡,我們想知道一個人身體健康狀況旬渠,其身高是180cm,體重是80kg,視力是2.5,心跳是70/min,這些指標(biāo)都是描述一個人身體狀況的數(shù)據(jù),這些單一不一的指標(biāo)會對建模的準(zhǔn)確度有一定影響。因此,在數(shù)據(jù)挖掘之前,我們要對數(shù)據(jù)做標(biāo)準(zhǔn)化處理叭披。
另外,建模之后,我們產(chǎn)生了有價值的目標(biāo)變量數(shù)據(jù)贩猎,但是這些數(shù)據(jù)都是標(biāo)準(zhǔn)化數(shù)據(jù)形式,跟實(shí)際業(yè)務(wù)問題的需求有一定偏差。如此桩匪,需要對數(shù)據(jù)做一定的變換,比如使其接近正態(tài)分布贾惦,這樣從數(shù)據(jù)形式上可以對業(yè)務(wù)問題有更好的解釋。

二、數(shù)據(jù)標(biāo)準(zhǔn)化

數(shù)據(jù)標(biāo)準(zhǔn)化有很多形式雁乡,這里簡單總結(jié)三種扩淀,如下:

1象对,標(biāo)準(zhǔn)化(z_score規(guī)范化)

假設(shè)我們有一個X向量,x(i,j),i = 1,..,m;j = 1,..,n。z_score規(guī)范化如下:
x(i,j)' = [x(i,j) - E(j)] / S[j],即x(i,j)減去第j列的均值再除以第j列的標(biāo)準(zhǔn)差蕊玷。
這樣處理之后方庭,原數(shù)據(jù)就變成了均值為0械念,方差為1希停,記作:
X' = [X - E(X)] / S(X),其中违崇,E(X) = 0, S(X) = 1砂客。

2,中心化

假設(shè)我們有一個X向量瘫怜,x(i,j),i = 1,..,m;j = 1,..,n术徊。中心化如下:
x(i,j)' = x(i,j) - E(j),E(j)是第j列的均值。
如此變化以后鲸湃,均值為0赠涮,但是方差矩陣不變。

3暗挑,極差標(biāo)準(zhǔn)化

假設(shè)我們有一個X向量笋除,x(i,j),i = 1,..,m;j = 1,..,n。極差標(biāo)準(zhǔn)化如下:
x(i,j) = [x(i,j) - E(j)]/ ( max(j) - min(j).
這樣變換后炸裆,均值為0株憾,方差為1.

4,小數(shù)定標(biāo)規(guī)范化

小數(shù)定標(biāo)規(guī)范化通過移動數(shù)據(jù)A的小數(shù)點(diǎn)位置進(jìn)行規(guī)范化晒衩。小數(shù)點(diǎn)的移動位置依賴數(shù)據(jù)A的最大值嗤瞎。由下式計(jì)算:|max(A)|<1的最小整數(shù)。假設(shè)A的取值為-986 ~ 917听系,A的最大絕對值為986贝奇,使用小數(shù)定標(biāo)規(guī)范化,用1000除以每個值靠胜,這樣-986標(biāo)準(zhǔn)化為-0.986掉瞳,917則為0.917.

注意:極差標(biāo)準(zhǔn)化和小數(shù)定標(biāo)規(guī)范化都改變了原數(shù)據(jù)毕源,如果想統(tǒng)一轉(zhuǎn)換為原數(shù)據(jù)比較麻煩。所以可以盡量通過前兩種方法來做規(guī)范化陕习。

4霎褐,R中標(biāo)準(zhǔn)化實(shí)現(xiàn)

R語言中有現(xiàn)成的函數(shù),比如scale,可以通過設(shè)置scale的參數(shù)來實(shí)現(xiàn)z_score和中心化的數(shù)據(jù)標(biāo)準(zhǔn)化该镣,具體參考?scale.
當(dāng)然冻璃,可以可以自己寫一個規(guī)范化函數(shù),如下:

data.scale <- function(data,method = "z_score")   
{  
  \# """  
  \# 1) 數(shù)據(jù)標(biāo)準(zhǔn)化有很多種方法损合,這里只用了兩種:z_score,min-max  
  \# 2) 后續(xù)可以再添加其他的標(biāo)準(zhǔn)化的方法  
 # 如果方法選擇z_score  
if(method == "min_max"){  
if(length(data) == 0 )  
  stop("Please input not empty dataset,ok?")  
if(class(data) == "factor")  
  stop("Please transforme factor to numeric or double,integer!")  
 m.value = mean(data,na.rm = TRUE)  
m.var = var(data,na.rm = TRUE)  
new.data = (data - m.value)/m.var  
}  
\# 如果方法選擇min-max  
else {  
if(length(data) == 0 )  
  stop("Please input not empty dataset,ok?")  
if(class(data) == "factor")  
  stop("Please transforme factor to numeric or double,integer!")  
m.value = range(data,na.rm = FALSE)  
new.data = (data - m.value[1])/(m.value[2] - m.value[1])  
}  
}

三省艳、數(shù)據(jù)正態(tài)化

數(shù)據(jù)正態(tài)化,目的是穩(wěn)定方差嫁审,直線化跋炕,使數(shù)據(jù)分布正態(tài)或者接近正態(tài)。
如果y = f(x) 是x的線性函數(shù)律适,不影響分析辐烂;但是如果是非線性函數(shù),y和x的表現(xiàn)就完全不同捂贿,包括分布纠修,方差和數(shù)據(jù)間關(guān)系也會不同。

1眷蜓,誤差傳播公式

這個不做過多解釋,請參考這里

2胎围,BOX_COX變換

1)Box-cox常見變換

Box-Cox在1964年從實(shí)際數(shù)據(jù)出發(fā)提出了一個很有效的變換吁系,如下:
y = ifelse(k = 0,log(y),[y^k-1]/k),此變換有如下特點(diǎn):

  • 改變分布形狀,使之正態(tài)分布白魂,至少是對稱的汽纤;
  • 當(dāng)x>=0,能保持?jǐn)?shù)據(jù)大小次序;
  • 對變換結(jié)果有很好的解釋:
    • k=2為平方變換福荸;
    • k=1為恒等變換蕴坪;
    • k=0.5平方根變換敬锐;
    • k=0為對數(shù)變換径玖;
    • k=-0.5為平方根倒數(shù)變換赞赖;
    • k=-1為倒數(shù)變換

2)前域,BOX-COX拓展變換

實(shí)際應(yīng)用中,Box-Cox還有個擴(kuò)展式年堆,如下:
y = ifelse(k1 = 0,log(y+k2),[(y +k2)^k1-1]/k1),任意y变丧,保證y+k2>0,即k2已知,k1為參數(shù)攻晒。

3),Box-cox實(shí)際應(yīng)用

請參考這個文章给梅,Box-Cox Transformation

小結(jié)

  • 很多右偏數(shù)據(jù)可以正態(tài)化
  • 對數(shù)變換后呈正態(tài)分布,方差穩(wěn)定
  • 不太嚴(yán)重的右偏,使用平方根變換
  • 嚴(yán)重右偏拘哨,倒數(shù)變換

三、參考文獻(xiàn)

1,Box-Cox Transform: An Overview
2,Box-Cox變換
3,統(tǒng)計(jì)學(xué)與R語言筆記-徐俊曉

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市峭沦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖琐谤,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件织阳,死亡現(xiàn)場離奇詭異唧躲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)圣拄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衰腌,你說我怎么就攤上這事。” “怎么了萝风?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長堕花。 經(jīng)常有香客問我,道長粥鞋,這世上最難降的妖魔是什么缘挽? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮呻粹,結(jié)果婚禮上壕曼,老公的妹妹穿的比我還像新娘。我一直安慰自己等浊,他們只是感情好腮郊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筹燕,像睡著了一般轧飞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撒踪,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天过咬,我揣著相機(jī)與錄音,去河邊找鬼制妄。 笑死掸绞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耕捞。 我是一名探鬼主播衔掸,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼烫幕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了敞映?” 一聲冷哼從身側(cè)響起纬霞,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驱显,沒想到半個月后诗芜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埃疫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年伏恐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栓霜。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡翠桦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胳蛮,到底是詐尸還是另有隱情销凑,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布仅炊,位于F島的核電站斗幼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抚垄。R本人自食惡果不足惜蜕窿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呆馁。 院中可真熱鬧桐经,春花似錦、人聲如沸浙滤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纺腊。三九已至畔咧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摹菠,已是汗流浹背盒卸。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工骗爆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留次氨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓摘投,卻偏偏與公主長得像煮寡,于是被迫代替她去往敵國和親虹蓄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • thiele插值算法 1點(diǎn)插值算法 function [C,c]=thiele(X,Y,Z)%X為插值點(diǎn)橫坐標(biāo)幸撕,Y...
    00crazy00閱讀 1,989評論 0 4
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡書 聲明:作者翻譯論文僅為學(xué)習(xí)薇组,如有侵權(quán)請...
    SnailTyan閱讀 5,084評論 0 8
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,744評論 0 33
  • 貪心算法 貪心算法總是作出在當(dāng)前看來最好的選擇坐儿。也就是說貪心算法并不從整體最優(yōu)考慮律胀,它所作出的選擇只是在某種意義上...
    fredal閱讀 9,231評論 3 52
  • 一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)使用 weka 中的常用分類器貌矿,完成數(shù)據(jù)分類任務(wù)炭菌。 二、實(shí)驗(yàn)內(nèi)容 了解 weka 中 explo...
    yigoh閱讀 8,527評論 5 4