本發(fā)明涉及一種數(shù)據(jù)處理和分析方法,尤其指一種基于深度學(xué)習(xí)的數(shù)據(jù)缺失值回填方法。
背景技術(shù):
隨著現(xiàn)代信息技術(shù)和互聯(lián)網(wǎng)技術(shù)的發(fā)展,人們通過不同的渠道獲取越來越多的數(shù)據(jù),這些數(shù)據(jù)正是大數(shù)據(jù)分析、機器學(xué)習(xí)和知識發(fā)現(xiàn)的核心,高質(zhì)量的數(shù)據(jù)是知識發(fā)現(xiàn)、建模以及規(guī)則提取的基本要求。但是由于數(shù)據(jù)收集過程中存在著數(shù)據(jù)源質(zhì)量參差、環(huán)境誤差和人為干擾的因素,導(dǎo)致大量用于數(shù)據(jù)挖掘和分析的數(shù)據(jù)出現(xiàn)缺失值。數(shù)據(jù)缺失是指在數(shù)據(jù)采集時應(yīng)該獲得但由于某種原因而沒能獲得的數(shù)據(jù)。盡可能準確的回填缺失值有助于提升數(shù)據(jù)質(zhì)量,并能提升數(shù)據(jù)挖掘和模式識別的有效性,因而有效回缺失值具有非常重要的意義。
現(xiàn)有的數(shù)據(jù)缺失值回填方法主要有:均值法、回歸法、Hot deck法、極大似然估計法、K近鄰法、C4.5法、隨機回歸法、貝葉斯網(wǎng)絡(luò)法等。文獻“金連,王宏志,黃沈濱,高宏.基于Map-Reduce的大數(shù)據(jù)缺失值填充算法.《計算機研究與發(fā)展》,2013,50(z1),pp.312-321.”報告了一種基于Map-Reduce的大數(shù)據(jù)缺失值填充算法,給出了一種基于概率推理的分類屬性填充方法,在一個基于屬性相關(guān)性而建立起來的貝葉斯網(wǎng)中完成?,F(xiàn)有方法的不足之處是:
(1).現(xiàn)有方法多是基于統(tǒng)計規(guī)律進行數(shù)據(jù)缺失值的回填,難以發(fā)現(xiàn)數(shù)據(jù)集的內(nèi)在規(guī)律性,從而使回填數(shù)據(jù)的質(zhì)量不高;
(2).很多現(xiàn)有的方法,特別是基于貝葉斯網(wǎng)絡(luò)和概率的方法,需要由領(lǐng)域知識得出數(shù)據(jù)的先驗分布,而這需要大量的應(yīng)用領(lǐng)域經(jīng)驗和人工分析的工作量,難以在大規(guī)模的數(shù)據(jù)集和多種不同的應(yīng)用場景下使用
(3).在現(xiàn)有的方法中,缺失數(shù)據(jù)的回填與知識發(fā)現(xiàn)等學(xué)習(xí)過程是完全分離的,這使得在回填過程中無法應(yīng)用數(shù)據(jù)集自身的潛在規(guī)律提升回填的效果。
基于此,本發(fā)明提出一種基于深度學(xué)習(xí)的方法,通過已有的缺失數(shù)據(jù)集訓(xùn)練一個卷積神經(jīng)網(wǎng)絡(luò),對數(shù)據(jù)中字段之間的潛在規(guī)律進行有監(jiān)督學(xué)習(xí),對數(shù)據(jù)集中的缺失字段進行回填。
技術(shù)實現(xiàn)要素:
為了克服現(xiàn)有的數(shù)據(jù)缺失值回填方法的不足之處,包括難以發(fā)現(xiàn)數(shù)據(jù)集的內(nèi)在規(guī)律性、需要人工處理的領(lǐng)域知識、回填過程與數(shù)據(jù)建模的分離等,本發(fā)明專利提供了一種基于深度學(xué)習(xí)的數(shù)據(jù)缺失值回填方法。本發(fā)明的特征包括卷積神經(jīng)網(wǎng)絡(luò)模型的建立過程、訓(xùn)練過程和特征回填過程,每個過程包含若干個步驟,其特征分別描述如下:
A.數(shù)據(jù)預(yù)處理過程
(1).本發(fā)明可以對一維的缺失數(shù)據(jù)集進行回填,若多維數(shù)據(jù)集可以通過拉平的方法轉(zhuǎn)化為一維向量。若待回填數(shù)據(jù)集中每一條數(shù)據(jù)記錄的維數(shù)是m,則每一條數(shù)據(jù)記錄以一個m維向量的方式表示;
(2).連續(xù)屬性的歸一化:對于某個連續(xù)屬性pi,先求出在所有非缺失值的數(shù)據(jù)記錄中,pi的最大值和最小值,分別記為和歸一化之后該連續(xù)屬性的計算方法為:同時,記錄訓(xùn)練集中每個連續(xù)屬性的和信息,這些信息將被用于對模型訓(xùn)練好之后新來的數(shù)據(jù)缺失值回填前的歸一化;
(3).離散屬性的啞變量化:對于包含有k個可能值的離散屬性,采用啞變量化,即轉(zhuǎn)化為一個有k個元素的一維向量,當(dāng)該屬性的值為某個可能值時,一維向量里對應(yīng)的元素設(shè)置為1,其余元素為0,在這個k維向量中,對于每一個數(shù)據(jù)記錄,只能有一個元素為1,其余的均為0,離散屬性在啞變量化后,不再進行歸一化操作;
(4).缺失字段全部留空。
B.卷積神經(jīng)網(wǎng)絡(luò)模型的建立過程
建立由輸入層、卷積層/池化層、全連接層和輸出層組合的卷積神經(jīng)網(wǎng)絡(luò)。
(1).輸入層
輸入層接受經(jīng)過歸一化和啞變量化的數(shù)據(jù),其維數(shù)等于啞變量化后的原始數(shù)據(jù)記錄的維數(shù);
(2).卷積層/池化層
-卷積層:先用m個卷積核為1*3的卷積層,每一層增加水平邊界填充值0,即[0 1 0 1],這樣可以使經(jīng)過卷積操作后特征圖的維數(shù)保持不變。一個卷積層之后跟一個非線性的激活層,激活層根據(jù)需要選擇以下兩種激活函數(shù):
·Relu:y=max(x,0),其中x為上一層的輸出,y為本激活層的輸出;
·Sigmoid:其中x為上一層的輸出,y為本激活層的輸出;
-池化層:采用1*5的卷積核,縮小比率為2,遇到不能整除的情況采用水平單邊補0的方法,即[0 1 0 0]或[0 0 0 1];池化層與卷積核為1*5的卷積層和激活單元組合使用,這樣的組合一共有n個;
(3).全連接層:在最后一個池化層組合的輸出上連接p個全連接層,設(shè)最后一個池化層組合的輸出維數(shù)為1*w,則這p個全連接層的維數(shù)在區(qū)間[w,16w]之間隨機取值;
(4).輸出層:輸出層與最后一個全連接層進行帶有30%的dropout的全連接,即隨機屏蔽最后一個全連接層30%的單元,輸出層的維數(shù)必須與網(wǎng)絡(luò)的輸入維數(shù)一樣。
C.訓(xùn)練過程
采用標準的誤差反向傳播學(xué)習(xí)算法對網(wǎng)絡(luò)的權(quán)值進行調(diào)整,調(diào)整是根據(jù)網(wǎng)絡(luò)的輸入與輸出的差異進行的。具體來說,對于每一個輸入網(wǎng)絡(luò)的數(shù)據(jù)記錄,網(wǎng)絡(luò)的輸出是一個相同維數(shù)的向量,誤差的衡量標準為對于非缺失的字段,輸入與輸出的差的絕對值之和。即:
其中是第k個非缺失字段的輸入值,是網(wǎng)絡(luò)對于該字段的輸出值。
網(wǎng)絡(luò)的權(quán)值采用[0,1]之間的隨機數(shù)進行初始化,進行多輪訓(xùn)練,所有訓(xùn)練數(shù)據(jù)輸入到網(wǎng)絡(luò)中并且完成權(quán)值調(diào)整為一輪,直到網(wǎng)絡(luò)的輸出誤差不再下降為止。
D.特征回填過程
把訓(xùn)練好的網(wǎng)絡(luò)作為特征回填模型,把一條有缺失值的數(shù)據(jù)輸入到網(wǎng)絡(luò)中,則網(wǎng)絡(luò)會產(chǎn)生一個輸出,其中非缺失的字段內(nèi)容會與輸入盡可能一致,而對于缺失的字段,網(wǎng)絡(luò)也會有值作為輸出。使用以下的策略得到缺失值:
(1).對于連續(xù)字段,直接把網(wǎng)絡(luò)的輸出作為缺失值;
(2).對于經(jīng)過啞變量化的離散字段,若輸出小于0.5,則認為該字段的值為0,反之認為該字段的值為1。
具體實施例
本發(fā)明在UCI數(shù)據(jù)集(http://archive.ics.uci.edu/ml/)上進行測試,取得了較好的效果。下面給出一個實施例,以UCI數(shù)據(jù)集的Census Income(KDD)Data Set(http://archive.ics.uci.edu/ml/datasets/Census+Income)作為測試數(shù)據(jù)集,該數(shù)據(jù)集有樣本共48842個,數(shù)據(jù)集的屬性共有14個,為離散屬性和連續(xù)屬性的組合,且有缺失值。
(1)數(shù)據(jù)預(yù)處理
對于連續(xù)屬性,找出數(shù)據(jù)集中該屬性的最大值和最小值,并用本發(fā)明對于連續(xù)屬性的預(yù)處理方法進行處理;對于離散屬性,采用啞變量化的方式進行處理。例如:對于連續(xù)字段fnlwgt,在所有數(shù)據(jù)中求出它的最大值和最小值,分別為476391和27032,則對于數(shù)據(jù)集中的第1條記錄的該字段,它歸一化后的值為:(77516-27032)/(476391-27032)=0.1123,在本實施例中,歸一化后的數(shù)據(jù)四舍五入,保留到小數(shù)點后4位;對于離散字段workclass,它有8個可能的取值,分別為Private,Self-emp-not-inc,Self-emp-inc,Federal-gov,Local-gov,State-gov,Without-pay,Never-worked,轉(zhuǎn)化為8個啞變量,對于第1條記錄中,它在該字段的取值為State-gov,轉(zhuǎn)化為啞變量后為00000100。
(2)網(wǎng)絡(luò)設(shè)計
網(wǎng)絡(luò)的設(shè)計如表1所示:
(3).網(wǎng)絡(luò)訓(xùn)練
在MatConvNet中通過配置文件實現(xiàn)表1中的網(wǎng)絡(luò)結(jié)構(gòu),把數(shù)據(jù)集做成Matlab數(shù)據(jù)文件.mat格式,然后使用MatConvNet提供的訓(xùn)練腳本cnn_train.m進行訓(xùn)練。訓(xùn)練進行40輪,使用的學(xué)習(xí)率為前10輪0.05,11-20輪0.005,21-30輪0.001,31-35輪0.0005,36-40輪0.0001。訓(xùn)練的損失函數(shù)采用zero-one loss。經(jīng)過40輪訓(xùn)練后,系統(tǒng)會生成40個.mat文件,分別保存了各輪訓(xùn)練結(jié)束時模型的參數(shù),這些.mat文件可用于缺失值回填。
(4).缺失值回填
使用第40輪訓(xùn)練結(jié)束時的網(wǎng)絡(luò)模型作為回填模型,對于每個有缺失值的記錄,輸入回填模型,獲取模型的輸出,其中缺失項對應(yīng)的輸出值即為模型對于輸入的缺失值的回填結(jié)果。
例如對于第19421條記錄,輸入為:48,x,171986,HS-grad,9,Divorced,Prof-specialty,Not-in-family,White,Male,0,0,15,United-States,<=50K,其中x代表缺失值,模型輸出中對應(yīng)缺失值項的啞變量序列為0.012 0.819 0.010 0.3109 0.2501 0.0009 0.1467 0.1355,則可知模型對缺失值的估計為Self-emp-not-inc。