缺失值處理1

數(shù)據(jù)預(yù)處理步驟有數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)變換蛉顽、數(shù)據(jù)規(guī)約护姆。實際工作中不是每一步都必須矾端。

版本一:

缺失值處理
對于缺失值的處理總的來說分刪除法和插補法
(1)刪除法:刪除存在缺失值的記錄(僅當樣本量很大且缺失值記錄所占樣本比例<5%時可行)
(2)插補法:若屬性是連續(xù)的,則使用該屬性存在值的平均值去插補缺失值卵皂;若屬性是離散的秩铆,則可取該屬性的眾數(shù)來插補缺失值。
數(shù)據(jù)集成
即相當于從原始的ODS中將各個數(shù)據(jù)表盡量整合成一個一個方便查詢的表
數(shù)據(jù)規(guī)約
由于用于分析的數(shù)據(jù)集中可能包含數(shù)以百計的屬性灯变,但是其中大部分屬性可能與挖掘任務(wù)不相關(guān)殴玛,或者是冗余的,則要盡量挑選出有用的屬性添祸,這是一項困難費時的任務(wù)滚粟。

所以數(shù)據(jù)規(guī)約目標在于找到最小的屬性集,使現(xiàn)有概率分布盡可能接近使用所有屬性時的原始分布刃泌。

數(shù)據(jù)變換
數(shù)據(jù)變化是將數(shù)據(jù)由一種表現(xiàn)形式變?yōu)榱硪环N表現(xiàn)形式坦刀。常見的數(shù)據(jù)變換方式是:數(shù)據(jù)標準化愧沟、數(shù)據(jù)離散化、語義轉(zhuǎn)換鲤遥。
(1)數(shù)據(jù)標準化
分為0-1標準化和z-score標準化
(2)離散化
指將連續(xù)性數(shù)據(jù)切分為多個“段”沐寺,有些數(shù)據(jù)挖掘算法要求數(shù)據(jù)是分類屬性的形式。
(3)語義轉(zhuǎn)換
將{非常好盖奈,好混坞,一般,差钢坦,非常差}這種轉(zhuǎn)化為{1,2,3,4,5}來替代究孕。

版本二:

數(shù)據(jù)清洗包括缺失值和異常值,這里只討論缺失值爹凹。

數(shù)據(jù)集成的實現(xiàn)是將兩個數(shù)據(jù)框以關(guān)鍵字為依據(jù)厨诸,在R里用merge函數(shù)實現(xiàn),語句為merge(dataframe1, dataframe2,by=”關(guān)鍵字“”)禾酱,默認按升序排列微酬。

數(shù)據(jù)變換就是轉(zhuǎn)化成適當?shù)男问剑瑏頋M足軟件或分析理論的需要颤陶。

  1. 簡單函數(shù)變換
    簡單函數(shù)變換用來將不具有正態(tài)分布的數(shù)據(jù)變成有正態(tài)分布的數(shù)據(jù)颗管,常用的有平方、開方滓走、取對數(shù)垦江、差分等。如在時間序列里常對數(shù)據(jù)對數(shù)或差分運算搅方,將非平穩(wěn)序列轉(zhuǎn)化成平穩(wěn)序列比吭。
  2. 規(guī)范化
    規(guī)范化就是剔除掉變量量綱上的影響,比如:直接比較身高和體重的差異姨涡,單位的不同和取值范圍的不同讓這件事不能直接比較衩藤。
  3. 連續(xù)屬性離散化
    將連續(xù)屬性變量轉(zhuǎn)化成分類屬性,就是連續(xù)屬性離散化绣溜,特別是某些分類算法要求數(shù)據(jù)是分類屬性,如:ID3算法娄蔼。

數(shù)據(jù)規(guī)約能夠降低無效錯誤的數(shù)據(jù)對建模的影響怖喻、縮減時間、降低存儲數(shù)據(jù)的空間岁诉。

  1. 屬性規(guī)約
    屬性規(guī)約是尋找最小的屬性子集并確定子集概率分布接近原來數(shù)據(jù)的概率分布锚沸。
    合并屬性:
    將一些舊的屬性合并一個新的屬性;
    逐步向前選擇:
    從一個空屬性集開始涕癣,每次在原來屬性集合選一個當前最優(yōu)屬性添加到當前子集中哗蜈,一直到無法選擇最優(yōu)屬性或滿足一個約束值為止;
    逐步先后選擇:
    從一個空屬性集開始,每次在原來屬性集合選一個當前最差屬性并剔除當前子集中距潘,一直到無法選擇最差屬性或滿足一個約束值為止炼列;
    決策樹歸納:
    沒有出現(xiàn)在這個決策樹上的屬性從初始集合中刪除,獲得一個較優(yōu)的屬性子集音比;
    主成份分析:
    用較少的變量去解釋原始數(shù)據(jù)中大部分變量(用相關(guān)性高的變量轉(zhuǎn)化成彼此相互獨立或不相關(guān)的變量)俭尖。
  2. 數(shù)值規(guī)約
    通過減少數(shù)據(jù)量,包括有參數(shù)和無參數(shù)方法洞翩,有參數(shù)如線性回歸和多元回歸稽犁,無參數(shù)法如直方圖、抽樣等骚亿。

一已亥、完整的處理方法

1.識別缺失數(shù)據(jù)
2.檢查導(dǎo)致數(shù)據(jù)缺失的原因
3.刪除包含缺失值的實例或用合理的數(shù)值代替(插補)缺失值

二、缺失數(shù)據(jù)的分類

1.完全隨機缺失MCAR:某變量的缺失數(shù)據(jù)與其他任何觀測或未觀測變量都不相關(guān)
2.隨機缺失MAR:某變量的缺失數(shù)據(jù)與其他觀測變量相關(guān)来屠,與它自己的未觀測值不相關(guān)
3.非隨機缺失NMAR:不屬于MCAR和MAR的情況

三虑椎、具體處理步驟

1.識別缺失值
①概念解釋
1)NA:不可得,代表缺失值(is.na())
2)NaN:不是一個數(shù)的妖,代表不可能值(is.nan())
3)Inf绣檬、-Inf:正無窮,負無窮(is.infinite())

②識別矩陣或數(shù)據(jù)框中沒有缺失值的行

install.packages(c("VIM","mice"))
data(sleep,package="VIM") #加載數(shù)據(jù)集
sleep[complete.cases(sleep),] #列出沒有缺失值的行
sleep[!complete.cases(sleep),] #列出有一個或多個缺失值的行

complete.case()只將NA和NaN識別為缺失值嫂粟,結(jié)果顯示42個實例為完整數(shù)據(jù)娇未,20個實例含一個或多個缺失值

③列表顯示缺失值

library(mice)
md.pattern(sleep)


mice包中的md.pattern()‘生成一個以矩陣或者數(shù)據(jù)框形式展示缺失值模式的表格。第一列表示個缺失值模式的實例個數(shù)星虹,最后一列表示各模式中有缺失值的變量的個數(shù)零抬,缺失值總個數(shù)等于第一列和最后一列一一對應(yīng)相乘再相加。同時最后一行給出了每個變量中缺失值的數(shù)目宽涌。即缺失值總個數(shù)也等于最后一行之和平夜。

④圖形探究缺失數(shù)據(jù)

library(VIM)
aggr(sleep,prop=FALSE,numbers=TRUE)#計數(shù)
aggr(sleep,prop=TRUE,numbers=TRUE)#比例


VIM包中的aggr()函數(shù)不僅繪制每個變量的缺失值數(shù),還繪制每個變量組合的缺失值數(shù)

⑤用相關(guān)性探索缺失值
先用指示變量替代數(shù)據(jù)集中數(shù)據(jù)卸亮,(1表示缺失忽妒,0表示存在),即影子矩陣

head(sleep,n=5)
as.data.frame(is.na(sleep))
as.data.frame(abs(is.na(sleep)))
x=as.data.frame(abs(is.na(sleep)))
head(x,n=5)



提取含(但不全是)缺失值的變量

y<-x[which(apply(x,2,sum)>0)]
y

再求這些指示變量之間的相關(guān)性

cor(y)

可以得出Dream和NonD常常一起缺失兼贸,相對可能性比較小的是Sleep和Dream段直。
最后求含缺失值變量和其他可觀測變量之間的關(guān)系

cor(sleep,y,use="pairwise.complete.obs")


2.理解缺失值的來由
①弄清楚幾個問題:
1)缺失數(shù)據(jù)的比例多大
2)缺失數(shù)據(jù)是否集中在少數(shù)幾個變量
3)缺失是隨機產(chǎn)生的嗎
4)缺失數(shù)據(jù)間的相關(guān)性或者與其他可觀測數(shù)據(jù)間的相關(guān)性,是否可以表明產(chǎn)生缺失值的機制
②判斷哪種統(tǒng)計方法最適合用來分析你的數(shù)據(jù):
1)如果缺失數(shù)據(jù)集中在幾個相對不太重要的變量溶诞,則可以刪除這些變量
2)如果一小部分數(shù)據(jù)隨機分布在整個數(shù)據(jù)集鸯檬,即MCAR,則可以分析數(shù)據(jù)完整的實例螺垢,仍可以得到有效結(jié)果
3)如果假定數(shù)據(jù)為MCAR或者MAR喧务,則可以應(yīng)用多重插補法來獲得有效結(jié)論
4)如果數(shù)據(jù)為NMAR赖歌,則需借助專門方法,收集新數(shù)據(jù)功茴。
3.實際處理缺失數(shù)據(jù)
①行刪除/個案刪除
當數(shù)據(jù)是MCAR時庐冯,后續(xù)樣本量的減少對統(tǒng)計檢驗效力不會造成很嚴重的影響時,行刪除法非常有用痊土。
只有每個變量都包含了有效數(shù)據(jù)值的觀測才會被保留下來肄扎,導(dǎo)致包含一個或多個缺失值的任意一行都會被刪除
當變量有較大缺失并且對研究目標影響不大時,可以使用mydata【赁酝,-p】直接刪除變量

newdata<-mydata[complete.cases(mydata),]
#等價形式
newdata<-na.omit(mydata)
#na.omit刪除含缺失值的行

②多重插補MI
當數(shù)據(jù)為MCAR或MAR時犯祠,并且缺失數(shù)據(jù)問題非常復(fù)雜時,多重插補很實用酌呆。
是一種基于重復(fù)模擬的處理缺失值的方法衡载,它將從一個包含缺失值的數(shù)據(jù)集中生成一組完整的數(shù)據(jù)集(通常是3到10)。每個模擬數(shù)據(jù)集中隙袁,缺失數(shù)據(jù)將用蒙特卡洛方法來填補痰娱。
這里我們重點學(xué)習(xí)mice包。
mice包:利用鏈式方程的多元插補菩收。具體過程:首先從一個包含缺失數(shù)據(jù)的數(shù)據(jù)框開始梨睁,返回一個包含多個(默認5個)完整數(shù)據(jù)集的對象;然后娜饵,with()函數(shù)可依次對每個完整數(shù)據(jù)集應(yīng)用統(tǒng)計模型坡贺;最后,pool()函數(shù)將這些單獨的分析結(jié)果整合為一組結(jié)果。最終模型的標準誤和p值都將準確地反映出由于缺失值和多重插補而產(chǎn)生的不確定性。
mice如何插補缺失值:通過Gibbs抽樣完成芥炭。每個缺失值由數(shù)據(jù)集中其他預(yù)測變量預(yù)測得來,該過程不斷迭代愿伴,直到所有預(yù)測值收斂。
通常過程:

library(mice)
imp <- mice(mydata, m)#mydata是待插補的數(shù)據(jù)框电湘,m默認5隔节,imp里含有m個插補數(shù)據(jù)集
fit <- with(imp, analysis)#analysis是一個表達式對象,設(shè)定應(yīng)用于m個插補數(shù)據(jù)集的統(tǒng)計分析方法
pooled <- pool(fit)#fit包含了m個單獨統(tǒng)計分析結(jié)果
summary(pooled)#pooled包含m個統(tǒng)計分析平均結(jié)果

注:還有回歸插補寂呛,回歸插補指的是將插補的變量當作因變量y怎诫,其他變量看錯自變量,利用回歸模型進行擬合昧谊,在R里使用lm回歸函數(shù)對缺失值進行插補刽虹。
③推理法
當數(shù)據(jù)存在冗余信息或者有外部信息可用時酗捌,推理法可用來恢復(fù)缺失值呢诬。
根據(jù)變量間的數(shù)學(xué)或者邏輯關(guān)系來填補或者恢復(fù)缺失數(shù)據(jù)涌哲。
④成對刪除(盡量避免使用)

cor(sleep,y,use="pairwise.complete.obs")

⑤簡單(非隨機)插補(盡量避免使用)
即用某個值(如均值,中位數(shù)或眾數(shù))來替換變量中的缺失值尚镰。
⑥總結(jié)
變量中如果有缺失值阀圾,針對缺失值有四種情況:
缺省值極少:若缺省值樣本占總數(shù)比例極高,直接舍棄狗唉,因為作為特征加入反而會引入噪聲值初烘。
非連續(xù)特征缺省值適中:如果缺值的樣本適中,而該屬性非連續(xù)值特征屬性分俯,就把NaN作為一個新類別肾筐,加入到類別特征中。
連續(xù)特征缺省值適中:如果缺值的樣本適中缸剪,考慮給定一個step吗铐,然后離散化,將NaN作為一個type加入到屬性類目中杏节。
缺省值較多:考慮利用填充的辦法進行處理唬渗。其中有均值、眾數(shù)奋渔、中位數(shù)填充镊逝;用sklearn里的RandomForest模型去擬合數(shù)據(jù)樣本訓(xùn)練模型,然后去填充缺失值嫉鲸;拉格朗日插值法撑蒜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市充坑,隨后出現(xiàn)的幾起案子减江,更是在濱河造成了極大的恐慌,老刑警劉巖捻爷,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辈灼,死亡現(xiàn)場離奇詭異,居然都是意外死亡也榄,警方通過查閱死者的電腦和手機巡莹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甜紫,“玉大人降宅,你說我怎么就攤上這事∏舭裕” “怎么了腰根?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拓型。 經(jīng)常有香客問我额嘿,道長瘸恼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任册养,我火速辦了婚禮东帅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘球拦。我一直安慰自己靠闭,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布坎炼。 她就那樣靜靜地躺著愧膀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谣光。 梳的紋絲不亂的頭發(fā)上扇调,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音抢肛,去河邊找鬼狼钮。 笑死,一個胖子當著我的面吹牛捡絮,可吹牛的內(nèi)容都是我干的熬芜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼福稳,長吁一口氣:“原來是場噩夢啊……” “哼涎拉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起的圆,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤鼓拧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后越妈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體季俩,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年梅掠,在試婚紗的時候發(fā)現(xiàn)自己被綠了酌住。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡阎抒,死狀恐怖酪我,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情且叁,我是刑警寧澤都哭,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響欺矫,放射性物質(zhì)發(fā)生泄漏稠歉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一汇陆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧带饱,春花似錦毡代、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至执庐,卻和暖如春酪耕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轨淌。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工迂烁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人递鹉。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓盟步,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躏结。 傳聞我的和親對象是個殘疾皇子却盘,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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