本發(fā)明涉及一種面向大數(shù)據(jù)的信息補(bǔ)全方法,屬于數(shù)據(jù)預(yù)處理
技術(shù)領(lǐng)域:
。
背景技術(shù):
:近年來(lái)隨著信息技術(shù)的高速發(fā)展,全球數(shù)據(jù)持續(xù)的以爆炸性的速度增長(zhǎng),我們的世界已經(jīng)邁入大數(shù)據(jù)時(shí)代。在現(xiàn)實(shí)生活中由于在數(shù)據(jù)錄入時(shí)出現(xiàn)遺漏、不統(tǒng)一的度量規(guī)則、以及收集條件的限制等多方面的因素導(dǎo)致數(shù)據(jù)的缺失。缺失的數(shù)據(jù)不僅損害了數(shù)據(jù)的完整性,還會(huì)導(dǎo)致數(shù)據(jù)挖據(jù)與數(shù)據(jù)分析的結(jié)論出現(xiàn)偏差。為了避免出現(xiàn)這種情況往往會(huì)預(yù)先填充這些缺失的數(shù)據(jù)。大數(shù)據(jù)的信息補(bǔ)全已經(jīng)是數(shù)據(jù)挖據(jù)領(lǐng)域進(jìn)行數(shù)據(jù)預(yù)處理的一個(gè)重要問(wèn)題。而傳統(tǒng)的大數(shù)據(jù)補(bǔ)全方法普遍存在填充準(zhǔn)確率低下,抗缺失率能力有限等不足。所以急需一種對(duì)缺失數(shù)據(jù)集既具有較好填充準(zhǔn)確率又具有較強(qiáng)的抗缺失率的算法,且算法能夠較好的適用于大規(guī)模數(shù)據(jù)集的環(huán)境。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種面向大數(shù)據(jù)的信息補(bǔ)全方法,具有更高的填充準(zhǔn)確率和抗缺失率,并且采用分布式的填充方法適應(yīng)大規(guī)模數(shù)據(jù)集。本發(fā)明為解決上述技術(shù)問(wèn)題采用以下技術(shù)方案:一種面向大數(shù)據(jù)的信息補(bǔ)全方法,包括如下步驟:步驟1,令數(shù)據(jù)集為d,d有m行n列數(shù)據(jù),每一行為一個(gè)數(shù)據(jù)元組,每一列為一個(gè)屬性,掃描數(shù)據(jù)集的每個(gè)數(shù)據(jù)元組dj,j=1,…,m并編號(hào),找出其中的不完整數(shù)據(jù)元組以及不完整數(shù)據(jù)元組中缺失數(shù)據(jù)的位置;步驟2,將不完整數(shù)據(jù)元組中的其他非缺失數(shù)據(jù)進(jìn)行組合,得到該不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)組合的集合,作為估計(jì)缺失數(shù)據(jù)取值的證據(jù)鏈;步驟3,根據(jù)完整數(shù)據(jù)元組對(duì)應(yīng)缺失位置的非缺失數(shù)據(jù),得到缺失數(shù)據(jù)可能的取值,計(jì)算缺失數(shù)據(jù)可能的取值p的概率;步驟4,根據(jù)步驟1缺失數(shù)據(jù)的位置,將步驟2得到的非缺失數(shù)據(jù)組合的集合與步驟3得到的缺失數(shù)據(jù)可能的取值進(jìn)行連接,再將集合中各個(gè)非缺失數(shù)據(jù)組合與缺失數(shù)據(jù)可能的取值進(jìn)行連接;步驟5,對(duì)整個(gè)數(shù)據(jù)集中的非缺失數(shù)據(jù)進(jìn)行組合,統(tǒng)計(jì)每個(gè)組合出現(xiàn)的次數(shù);步驟6,對(duì)每個(gè)數(shù)據(jù)元組,選擇其中一個(gè)屬性值,將該數(shù)據(jù)元組中剩余屬性進(jìn)行組合,得到組合的集合,統(tǒng)計(jì)集合中每個(gè)組合與所選取的屬性值在整個(gè)數(shù)據(jù)集中同時(shí)出現(xiàn)的次數(shù);步驟7,在步驟5的結(jié)果中提取各不完整數(shù)據(jù)元組中每個(gè)非缺失數(shù)據(jù)組合在整個(gè)數(shù)據(jù)集中的數(shù)量,在步驟6的結(jié)果中提取各不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)組合與缺失數(shù)據(jù)可能的取值同時(shí)出現(xiàn)的次數(shù),計(jì)算不完整數(shù)據(jù)元組中缺失數(shù)據(jù)可能的取值在其非缺失數(shù)據(jù)組合條件下取值的概率,將概率最大值對(duì)應(yīng)的取值作為缺失數(shù)據(jù)的填充值。作為本發(fā)明的一種優(yōu)選方案,步驟3所述缺失數(shù)據(jù)可能的取值p的概率的計(jì)算公式為:其中,m為所有數(shù)據(jù)元組的數(shù)量,k(p)為缺失數(shù)據(jù)可能的取值p在每個(gè)數(shù)據(jù)元組中同一缺失位置出現(xiàn)的次數(shù),p(p)為缺失數(shù)據(jù)可能的取值p的概率。作為本發(fā)明的一種優(yōu)選方案,步驟7所述計(jì)算不完整數(shù)據(jù)元組中缺失數(shù)據(jù)可能的取值在其非缺失數(shù)據(jù)組合條件下取值的概率的計(jì)算公式為:其中,p(p)為缺失數(shù)據(jù)可能的取值p的概率,s(p∪c(y,u))為不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)組合c(y,u)與缺失數(shù)據(jù)可能的取值同時(shí)出現(xiàn)的次數(shù),s(c(y,u))為不完整數(shù)據(jù)元組中每個(gè)非缺失數(shù)據(jù)組合在整個(gè)數(shù)據(jù)集中的數(shù)量,為缺失數(shù)據(jù)可能的取值的證據(jù)鏈sj的可信度即概率,sj為編號(hào)為j的不完整數(shù)據(jù)元組缺失數(shù)據(jù)的證據(jù)鏈。作為本發(fā)明的一種優(yōu)選方案,所述步驟2、步驟3沒有順序限制。作為本發(fā)明的一種優(yōu)選方案,所述步驟5、步驟6沒有順序限制。本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:1、本發(fā)明方法采用uci機(jī)器學(xué)習(xí)數(shù)據(jù),進(jìn)行不同比例的隨機(jī)剔除其中屬性值得到實(shí)驗(yàn)數(shù)據(jù)集,然后進(jìn)行缺失數(shù)據(jù)的填充,結(jié)果表明本發(fā)明在填充缺失值時(shí)具有較高的填充準(zhǔn)確率和穩(wěn)定性。2、本發(fā)明適合大數(shù)據(jù),目前大多數(shù)方法是在單機(jī)上處理小型缺失數(shù)據(jù)集的,然而目前隨著信息化的發(fā)展,數(shù)據(jù)量急劇增長(zhǎng),大規(guī)模數(shù)據(jù)集在單機(jī)上處理顯然已經(jīng)不合適了;本發(fā)明可以基于map-reduce編程模型實(shí)現(xiàn)在分布式數(shù)據(jù)處理平臺(tái)上填充大規(guī)模的數(shù)據(jù)集。3、本發(fā)明方法簡(jiǎn)單易行,不需要掌握數(shù)據(jù)集中數(shù)據(jù)的分布,領(lǐng)域知識(shí),也不需要在數(shù)據(jù)集上訓(xùn)練估計(jì)模型,為補(bǔ)全數(shù)據(jù)節(jié)省大量的時(shí)間。附圖說(shuō)明圖1是本發(fā)明一種面向大數(shù)據(jù)的信息補(bǔ)全方法的算法時(shí)序圖。具體實(shí)施方式下面詳細(xì)描述本發(fā)明的實(shí)施方式,所述實(shí)施方式的示例在附圖中示出。下面通過(guò)參考附圖描述的實(shí)施方式是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。本發(fā)明是一種改進(jìn)性和綜合性的方法,通過(guò)對(duì)基于缺失元組中相關(guān)屬性組合集合證據(jù)鏈來(lái)估計(jì)缺失數(shù)據(jù)的值提出的,算法首先估算缺失值的填充值,掃描整個(gè)數(shù)據(jù)集中每個(gè)數(shù)據(jù)元組,將帶有缺失值的元組標(biāo)記為不完整的數(shù)據(jù)元組,并在不完整的數(shù)據(jù)元組中將完整的不同屬性值組合來(lái)作為估計(jì)缺失值取值的證據(jù)。這樣在不完整元組中大量的完整屬性組合就構(gòu)成了估計(jì)缺失數(shù)據(jù)的證據(jù)鏈,算法會(huì)再次掃描整個(gè)數(shù)據(jù)集統(tǒng)計(jì)所有數(shù)據(jù)元組中屬性值集合。算法的核心任務(wù)就是在證據(jù)鏈中計(jì)算每個(gè)估計(jì)缺失值取值證據(jù)的可信度。這樣就得到估計(jì)缺失數(shù)據(jù)取值所有證據(jù)的可信度之和,選取可信度之和最大的估計(jì)值作為填充值。為便于公眾理解本發(fā)明的技術(shù)方案,下面先對(duì)本發(fā)明所涉及的缺失模型、缺失數(shù)據(jù)的填充原理、算法基于map-reduce的并行化進(jìn)行簡(jiǎn)要介紹。一、缺失模型令數(shù)據(jù)集為d,d有m行n列數(shù)據(jù),即數(shù)據(jù)集d有m條數(shù)據(jù)元組,每條數(shù)據(jù)元組有n個(gè)屬性,則數(shù)據(jù)集d可以定義為:d={a1,a2,a3,…,an}(1)其中,ai(1≤i≤n)表示數(shù)據(jù)集d的第i列屬性。數(shù)據(jù)集中數(shù)據(jù)元組記為:dj={dj(ai)|1≤j≤m,1≤i≤n}(2)其中,xj,i(1≤j≤m,1≤i≤n)表示數(shù)據(jù)集d的第j行第i列屬性的取值,令d中第j個(gè)元組中第i屬性為dj(ai)。定義1、缺失模型定義如下:其中,dj(ai)='?'表示第j個(gè)元組中第i個(gè)屬性取值缺失。當(dāng)數(shù)據(jù)元組中存在dj(ai)='?'時(shí)則該數(shù)據(jù)元組為不完整數(shù)據(jù)元組,記為:相反當(dāng)數(shù)組元組中不存在dj(ai)='?',則該數(shù)組元組為完整數(shù)據(jù)元組,記為:rj={dj(ai)|dj(ai)?。??',1≤j≤m,1≤i≤n}(5)定義2、將不完整數(shù)據(jù)元組中非缺失的數(shù)據(jù)即缺失數(shù)據(jù)的相關(guān)屬性值組合集合定義為估算缺失值取值的證據(jù)鏈:sj={c(y,u)|1≤y≤n,1≤u≤y}(6)其中,c(y,u)是估計(jì)缺失值取值的相關(guān)屬性值組合,即從y個(gè)完整屬性值中選取u個(gè)無(wú)序?qū)傩灾?,將其記為估?jì)缺失值取值的證據(jù)。算法的主要目標(biāo)就是通過(guò)集合來(lái)估計(jì)第j個(gè)數(shù)據(jù)元組中缺失數(shù)據(jù)的值。二、缺失數(shù)據(jù)填充的原理在數(shù)據(jù)集d的任意數(shù)據(jù)元組dj(1≤j≤m)中,存在某一屬性集合,假設(shè)為a。數(shù)據(jù)元組dj(1≤j≤m)包含a,當(dāng)且僅當(dāng)規(guī)則形如在數(shù)據(jù)集d的元組dj(1≤j≤m)中成立,其中并且這時(shí)記數(shù)據(jù)集d中所有元組中包含集合a和集合b的并a∪b的比例為p(a∪b)。定義3、支持度計(jì)數(shù)s表示數(shù)據(jù)集中某項(xiàng)集合的數(shù)量,則整個(gè)數(shù)據(jù)集d中規(guī)則支持度計(jì)數(shù)定義為:定義4、記數(shù)據(jù)集d中所有元組包含屬性集合a也包含屬性集合b的比例為c,這是條件概率p(b|a),則整個(gè)數(shù)據(jù)集d中規(guī)則可信度定義為:可信度的計(jì)算為:本發(fā)明核心工作是計(jì)算缺失數(shù)據(jù)的可能取值和其相關(guān)證據(jù)鏈的支持度計(jì)數(shù)即s(p∪sj),然后計(jì)算出證據(jù)鏈中每個(gè)證據(jù)的可信度,所有證據(jù)的可信度相加得到該可能值得相關(guān)證據(jù)鏈的可信度最后用證據(jù)鏈可信度最大的可能值作為缺失數(shù)據(jù)的填充值。三、算法基于map-reduce的并行化map-reduce是一種并行化程序設(shè)計(jì)框架,是目前云計(jì)算平臺(tái)最為流行的計(jì)算模型。其基本思想是對(duì)大規(guī)模數(shù)據(jù)集采用分而治之的策略。map-reduce計(jì)算數(shù)據(jù)以key/value格式進(jìn)行運(yùn)算。mapreduce實(shí)現(xiàn)并行化的核心是map和reduce這兩個(gè)操作,map-reduce計(jì)算框架先將數(shù)據(jù)集分割成許多同等大小的小文件并分配給不同的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)進(jìn)行map計(jì)算,并將計(jì)算結(jié)果進(jìn)行排序合并,相同的key的value放在同一集合中進(jìn)行reduce計(jì)算。本發(fā)明給出基于map-reduce編程框架的算法,以實(shí)現(xiàn)該算法的分布式運(yùn)行。如圖1所示,本算法主要分為5個(gè)階段,首先在數(shù)據(jù)集中利用缺失數(shù)據(jù)相關(guān)屬性組合集合來(lái)估計(jì)缺失數(shù)據(jù)的取值,然后將估計(jì)出來(lái)的值填充到數(shù)據(jù)集中。階段1、算法掃描數(shù)據(jù)集為每個(gè)不完整數(shù)據(jù)元組標(biāo)記唯一的編號(hào),并給出每條不完整數(shù)據(jù)元組中缺失數(shù)據(jù)位置,以確定該元組中哪個(gè)屬性數(shù)據(jù)的缺失。輸出的每條記錄中包含每個(gè)不完整數(shù)據(jù)元組的編號(hào)、該不完整數(shù)據(jù)元組中缺失數(shù)據(jù)的位置、以及該不完整數(shù)據(jù)元組。這些記錄構(gòu)成了該階段的結(jié)果文件。階段2、該階段分成4個(gè)模塊,每個(gè)模塊可以同時(shí)進(jìn)行。模塊1、算法掃描階段1結(jié)果文件計(jì)算出不完整數(shù)據(jù)元組中非缺失屬性值的組合c(y,u)的集合sj,sj將作為估計(jì)缺失數(shù)據(jù)取值的證據(jù)鏈,輸出的每條記錄中包含每個(gè)不完整數(shù)據(jù)元組的編號(hào)、該不完整數(shù)據(jù)元組中缺失數(shù)據(jù)的位置、該不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)的組合集合sj。這些記錄構(gòu)成了該模塊的結(jié)果文件。模塊2、算法統(tǒng)計(jì)數(shù)據(jù)集中每個(gè)屬性的取值p以及p的概率p(p),缺失數(shù)據(jù)的取值將來(lái)自于p:公式中k()函數(shù)表示計(jì)數(shù),k(p)表示缺屬性值p在整個(gè)數(shù)據(jù)集中同一屬性上出現(xiàn)的次數(shù),m表示數(shù)據(jù)元組的數(shù)量。輸出的每條記錄包含屬性值的位置、屬性值p、p的概率p(p),這些記錄構(gòu)成了該模塊的輸出文件。模塊3、算法統(tǒng)計(jì)整個(gè)數(shù)據(jù)集中每個(gè)數(shù)據(jù)元組的非缺失數(shù)據(jù)的組合集合c(y,u)的數(shù)量oj,將用于算法在下面步驟中用于缺失數(shù)據(jù)取值估計(jì)的概率查詢,輸出的每條記錄包含每個(gè)數(shù)據(jù)元組的非缺失數(shù)據(jù)的組合集合c(y,u)和其數(shù)量oj。這些記錄構(gòu)成了該模塊的輸出文件。模塊4、算法在整個(gè)數(shù)據(jù)集的每個(gè)數(shù)據(jù)元組中統(tǒng)計(jì)非缺失數(shù)據(jù)組合c(y,u)和某個(gè)屬性值,該屬性值不能出現(xiàn)在c(y,u)中,在整個(gè)數(shù)據(jù)集同時(shí)出現(xiàn),即在同一數(shù)據(jù)元組中的數(shù)量tj。具體操作是算法首先掃描一個(gè)數(shù)據(jù)元祖,依次選擇其中某個(gè)屬性值,在每次選擇一個(gè)屬性值后,再將這個(gè)數(shù)據(jù)元組中剩余屬性進(jìn)行排列組合,便得到組合的集合。最后依次統(tǒng)計(jì)集合中每個(gè)組合和所選取的屬性值在整個(gè)數(shù)據(jù)集中在同一數(shù)據(jù)元組中的數(shù)量tj。tj=k(dj(ai)(1≤j≤m,1≤i≤n)∪c(y,u)(1≤y≤n,1≤u≤y))(11)輸出的每條記錄中包含數(shù)據(jù)元組中某一屬性值位置、該屬性值、該數(shù)據(jù)元組中剩余屬性值的排列組合中的一個(gè)組合、該組合和某一屬性值在同一數(shù)據(jù)元組中的數(shù)量。階段3、算法將階段2中模塊1的輸出的估計(jì)缺失數(shù)據(jù)所依賴的證據(jù)鏈sj與階段2中模塊2的輸出屬性取值記錄進(jìn)行連接。我們就得到了每個(gè)不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)的組合c(y,u)和每個(gè)缺失數(shù)據(jù)可能的填充值p以及p在整個(gè)數(shù)據(jù)集中出現(xiàn)的概率p(p)。具體的操作是算法首先根據(jù)缺失位置將階段2中模塊1的輸出的記錄和階段2中模塊2的輸出記錄進(jìn)行連接,這樣就得到了一個(gè)包含了某個(gè)不完整數(shù)據(jù)元組的缺失數(shù)據(jù)位置、缺失數(shù)據(jù)的可能填充值、該元組中非缺失數(shù)據(jù)的組合集合sj的記錄。然后算法將剛才記錄中的sj中每個(gè)非缺失數(shù)據(jù)的組合c(y,u)與缺失數(shù)據(jù)可能的取值p進(jìn)行連接。該模塊輸出的每條記錄包含某個(gè)不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)的組合c(y,u)、該元組中缺失數(shù)據(jù)的位置、缺失數(shù)據(jù)可能的取值、可能值p在整個(gè)數(shù)據(jù)集中出現(xiàn)的概率p(p)。階段4、算法去階段2模塊3的結(jié)果文件里查找階段3結(jié)果文件中某個(gè)不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)的組合c(y,u)的數(shù)量oj。此時(shí)s(c(y,u))=oj。并在階段2中模塊4的結(jié)果文件中查找階段3結(jié)果文件中某個(gè)不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)的組合c(y,u)和缺失數(shù)據(jù)的可能的取值p在整個(gè)數(shù)據(jù)集同時(shí)出現(xiàn)的次數(shù)tj,此時(shí)s(p∪c(y,u))=tj。我們就可以計(jì)算出不完整數(shù)據(jù)元組中所有缺失數(shù)據(jù)在其非缺失屬性值組合c(y,u)的條件下取值的概率。我們選取概率最大即可信度最大的估計(jì)值作為最終的填充值。階段5、算法根據(jù)階段4中估算出的缺失數(shù)據(jù)可能的取值,將其值填充到原缺失數(shù)據(jù)集d中。算法在第1、2、3、4階段就是進(jìn)行估算缺失數(shù)據(jù)取值,由于在大多數(shù)數(shù)據(jù)集中數(shù)據(jù)屬性之間并不存在明顯的因果關(guān)系,相反數(shù)據(jù)屬性會(huì)存在相關(guān)關(guān)系,這種相關(guān)關(guān)系我們通過(guò)缺失數(shù)據(jù)相關(guān)屬性值組合集合來(lái)體現(xiàn),map-reduce在這一階段主要完成在不完整數(shù)據(jù)元組中缺失數(shù)據(jù)的相關(guān)屬性值組合集合的計(jì)算,并估算出缺失數(shù)據(jù)的取值。階段1、標(biāo)記缺失數(shù)據(jù)集輸入:含有缺失值的數(shù)據(jù)文件。輸出:數(shù)據(jù)元組標(biāo)號(hào)、數(shù)據(jù)元組。map<object,text,text,text>input:key=offset,value=tuple1.fforeach<key,value>do2.addtupleindexintotuple3.foreach<attri-v,tuple>doiftuplecontainsmissingvaluethenoutkey:tupleindexoutvalue:tuplereduce<text,text,text,text>1.foreachinvaluelistdooutkey:keyoutvalue:tuple階段1中map函數(shù)掃描數(shù)據(jù)集為每個(gè)數(shù)據(jù)元組添加標(biāo)記tupleindex,reduce函數(shù)最后輸出數(shù)據(jù)格式是(tupleindex,tuple)。階段2、該階段分為4個(gè)模塊,每個(gè)模塊可以同時(shí)進(jìn)行模塊1、缺失數(shù)據(jù)相關(guān)屬性組合集合輸入:階段1結(jié)果文件。輸出:數(shù)據(jù)元組標(biāo)號(hào)、缺失值所在位置、缺失值相關(guān)屬性值組合集合。map<object,text,text,text>input:key=offset,value=tuple1.foreach<key,value>do2.iftuplecontainsmissingvaluethenaddrestcompleteattributeintosetcomple-attri3.calculationcompleteattributecombinationcombi-attriincomple-attri4.outkey:tupleindex+missingindexoutvalue:combi-attrireduce<text,text,text,text>1.foreachinvaluelistdooutkey:keyoutvalue:comple-attri模塊1中missingindex是缺失數(shù)據(jù)在不完整數(shù)據(jù)元組中的位置,map函數(shù)將不完整數(shù)據(jù)元組中缺失數(shù)據(jù)相關(guān)屬性值組合comple-attri添加到屬性組合的集合combi-attri中。reduce函數(shù)最后輸出數(shù)據(jù)格式是(tupleindex,missingindex,combi-attri)。模塊2、缺失數(shù)據(jù)的可能取值輸入:階段1結(jié)果文件。輸出:數(shù)組元組標(biāo)號(hào)、缺失數(shù)據(jù)可能的取值、缺失數(shù)據(jù)可能的取值概率。map<object,text,text,text>input:key=offset,value=tuple1.foreach<key,value>do2.foreach<attri-v,tuple>dooutkey:attriindexoutvalue:attri-vreduce<text,text,text,text>1.foreachinvaluelistdoaddvalueintolist-pro2.calculationvaluelist-prolengthdividedbymaspro3.outkey:attriindexoutvalue:attriindex+list-pro+pro模塊2中算法掃描每個(gè)數(shù)據(jù)元組,map函數(shù)記錄每個(gè)屬性的取值attri-v并輸出每個(gè)屬性編號(hào)attriindex。reduce函數(shù)中得出每個(gè)屬性中可能取值的列表list-pro以及每個(gè)可能取值的概率pro。模塊3、統(tǒng)計(jì)屬性值組合集合的數(shù)量輸入:階段1結(jié)果文件。輸出:屬性值組合集合、屬性值組合集合數(shù)量。map<object,text,text,text>input:key=offset,value=tuple1.foreach<key,value>docalculationc(y,u)intupleascombi-attri2.outkey:combi-attrioutvalue:1reduce<text,text,text,text>1.foreachinvaluelistdocalculationnumberofcombi-attri2.outkey:combi-attrioutvalue:num_c模塊3中map函數(shù)計(jì)算出每個(gè)數(shù)據(jù)元組中的屬性值組合combi-attri,reduce函數(shù)計(jì)算出每個(gè)數(shù)據(jù)元組中每個(gè)屬性值組合在整個(gè)數(shù)據(jù)集中的數(shù)量num_c。模塊4、統(tǒng)計(jì)在整個(gè)數(shù)據(jù)集中屬性值組合和某個(gè)屬性值在同一數(shù)據(jù)元組中的數(shù)量輸入:階段1結(jié)果文件。輸出:屬性值組合、某個(gè)屬性值的位置、某個(gè)屬性值、屬性值組合和某個(gè)屬性值在同一數(shù)據(jù)元組中的數(shù)量。map<object,text,text,text>input:key=offset,value=tuple1.foreach<key,value>do2.foreach<attri-v,tuple>docalculationc(y,u)inrestcompleteattributeascombi-attri3.outkey:combi-attri+attriindex+attri-voutvalue:1reduce<text,text,text,text>1.foreachinvaluelistdocalculationnumberofcombi-attri+attriindex+attri-v2.outkey:combi-attri+attriindex+attri-voutvalue:num_caa模塊4中map函數(shù)掃描每個(gè)數(shù)據(jù)元組,依次選取數(shù)據(jù)元組中屬性值attri-v,然后在剩余屬性值中計(jì)算屬性值組合combi-attri,在reduce函數(shù)中統(tǒng)計(jì)combi-attri和attri-v在整個(gè)數(shù)據(jù)集中在同一數(shù)據(jù)元組的數(shù)量num_caa。階段3、缺失數(shù)據(jù)相關(guān)屬性值組合集合與缺失數(shù)據(jù)可能值連接輸入:階段2中模塊1的結(jié)果文件,階段2中模塊2的結(jié)果文件。輸出:相關(guān)屬性值組合、缺失值在不完整數(shù)據(jù)元組中位置、可能的取值。map<object,text,text,text>input:key=offset,value=missingindex+combi-attri1.foreach<key,value>dosplitthevalue2.outkey:missingindexoutvalue:combi-attrimap<object,text,text,text>input:key=offset,value=missingindex+pro-v1.foreach<key,value>dosplitthevalue2.outkey:missingindexoutvalaue:pro-vreduce<text,text,text,text>1.foreachinvaluelistdo2.outkey:offsetoutvalue:combi-attri+missingindex+pro-v階段3中pro-v是缺失值可能的取值,第一個(gè)map會(huì)將步模塊1的結(jié)果文件每行數(shù)據(jù)進(jìn)行分割,missingindex作為key值,combi-attri作為value值,提交給reduce。第二個(gè)map將缺失值可能的取值文件每行數(shù)據(jù)進(jìn)行分割missingindex作為key值,pro-v作為value值,同樣提交給reduce,相同key值的value將被放在同一個(gè)valuelist中,reduce將把缺失數(shù)據(jù)的相關(guān)屬性組合combi-attri和可能的取值pro-v進(jìn)行連接,最后輸出的數(shù)據(jù)格式為(combi-attri,missingindex,pro-v)。階段4、估算缺失值可能的取值輸入:階段2中模塊3結(jié)果文件caacount、階段2中模塊4結(jié)果文件ca-aacount、階段3結(jié)果文件。輸出:缺失數(shù)據(jù)的估計(jì)值。map<object,text,text,text>input:key=offset,value=missingindex+combi-attri+pro-v1.foreach<key,value>dosplitthevalue2.researchacountofcombi-attriincaacountrecordedasnum-combi-attri3.researchacountofcombi-attri+pro-vinca-aacountrecordedasnum-combi-attri-a4.calculationnum-combi-attri-a/num-combi-attriascredibility5.outkey:tupleindex+missingindexoutvalue:credibility+pro-vreduce<text,text,text,text>1.foreachinvaluelistdosumofcredibility2.ifsumofcredibilityismaximumthenoutkey:offsetoutvalue:pro-v階段4是算法的核心部分,將利用其來(lái)估算缺失值取值,map函數(shù)首先將階段3的結(jié)果文件的每行數(shù)據(jù)進(jìn)行分割,在文件caacount中查找缺失數(shù)據(jù)相關(guān)屬性值組合combi-attri的個(gè)數(shù)num-combi-attri,作為s(combi-attri)。在文件ca-aacount中查找缺失數(shù)據(jù)相關(guān)屬性值組合和缺失值可能取值combi-attri+pro-v同時(shí)出現(xiàn)在同一個(gè)數(shù)據(jù)元組中得個(gè)數(shù)num-combi-attri-a,作為s(combi-attri∪pro-v)。并且計(jì)算得到缺失數(shù)據(jù)可能取值的可信度credibility,reduce函數(shù)將估算缺失值的所有可信度證據(jù)相加,并將證據(jù)之和最大值的缺失值可能取值pro-v作為最終的填充值。階段5:將階段4的缺失值估計(jì)的取值填充到原缺失數(shù)據(jù)集中輸入:原缺失數(shù)據(jù)集文件、階段4缺失值估計(jì)的取值文件。輸出:完整數(shù)據(jù)集。map<object,text,text,text>input:key=offset,value=tuple1.foreach<key,value>do2.outkey:offsetoutvalue:valuemap<object,text,text,text>input:key=offset,value=missingindex+pro-v1.foreach<key,value>do2.outkey:offsetoutvalaue:missingindex+pro-vreduce<text,text,text,text>1.foreachinvaluelistdomissingindex+pro-vinlista2.foreachinlistadopro-vappendtovalue3.outkey:keyoutvalue:com-tuple在階段5中,map函數(shù)將原缺失數(shù)據(jù)集文件和缺失值估計(jì)的取值文件的offset作為key輸出,將原缺失數(shù)據(jù)集的value和缺失值估計(jì)的取值文件的“missing+possiblevalue”作為value值輸出,reduce函數(shù)在每個(gè)valuelist中將“missingindex+pro-v”存放在lista中,并將lista中所有的估計(jì)值填充到缺失數(shù)據(jù)集的value中,最終輸出完整數(shù)據(jù)元組com-tuple。實(shí)施例:該數(shù)據(jù)集中有4個(gè)屬性分別為:性別、身高、是否抽煙、學(xué)習(xí)成績(jī)。?表示缺失的數(shù)據(jù)。性別身高是否抽煙學(xué)習(xí)成績(jī)男高是好女高是差男矮否差女高否好男矮否?女?否好階段1:第五元組第四個(gè)屬性缺失第六元組第2個(gè)屬性缺失結(jié)果文件:5,4,[男,矮,否,?]6,2,[女,?,否,好],[]表示元組。階段2:模塊1:結(jié)果文件:5,4,{<男>,<矮>,<否>,<男矮>,<男否>,<矮否>,<男矮否>}6,2,{<女>,<否>,<好>,<女否>,<女好>,<否好>,<女否好>}{}表示集合。模塊2:結(jié)果文件:1,男:50%,女:50%2,高:50%,矮:33%3,是33%,否:67%4,好:50%,差:33%輸出了屬性位置,以及每個(gè)屬性值取值概率。模塊3:結(jié)果文件:<男>:3<女>:3<高>:3<矮>:2<是>:2<否>:4<好>:3<差>:2<男高>:1<男矮>:2<男是>:1<男否>:2<男好>:1<高是>:2<高好>:2<矮是>:0<矮好>:0<是好>:1<男高是>:1<男高好>:1<男是好>:1<男高是好>:1……模塊4:以第一個(gè)數(shù)據(jù)元組為例:結(jié)果:1,男,<高>,11,男,<是>,11,男,<好>,11,男,<高是>,11,男,<高好>,11,男,<是好>,11,男,<高是好>,1……階段3:以其中一個(gè)數(shù)據(jù)元組為例:根據(jù)缺失位置4,將階段2模塊1的記錄5,4,{<男>,<矮>,<否>,<男矮>,<男否>,<矮否>,<男矮否>}與階段2模塊2的記錄4,好:50%,差:33%進(jìn)行連接。得到記錄:5,好:50%,差:50%,{<男>,<矮>,<否>,<男矮>,<男否>,<矮否>,<男矮否>}然后算法將剛才記錄中的sj中每個(gè)非缺失數(shù)據(jù)的組合c(y,u)與缺失數(shù)據(jù)可能的取值p進(jìn)行連接。最終結(jié)果輸出:<男>,4,好:50%+<矮>,4,好:50%+<否>,4,好:50%+<男矮>,4,好:50%+<男否>,4,好:50%+<矮否>,4,好:50%+<男矮否>,4,好:50%+<男>,4,差:33%+<矮>,4,差:33%+<否>,4,差:33%+<男矮>,4,差:33%+<男否>,4,差:33%+<矮否>,4,差:33%+<男矮否>,4,差:33%階段4:算法去階段2模塊3的結(jié)果文件里查找階段3結(jié)果文件中某個(gè)不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)的組合c(y,u)的數(shù)量oj。結(jié)果:<男>數(shù)量為3<矮>數(shù)量為2<否>數(shù)量為4<男矮>數(shù)量為2<男否>數(shù)量為2<矮否>數(shù)量為2<男矮否>數(shù)量為2并在階段2中模塊4的結(jié)果文件中查找階段3結(jié)果文件中某個(gè)不完整數(shù)據(jù)元組中非缺失數(shù)據(jù)的組合c(y,u)和缺失數(shù)據(jù)的可能的取值p在整個(gè)數(shù)據(jù)集同時(shí)出現(xiàn)的次數(shù)tj。結(jié)果:好,<男>數(shù)量為1好,<矮>數(shù)量為0好,<否>數(shù)量為2好,<男矮>數(shù)量為0好,<男否>數(shù)量為0好,<矮否>數(shù)量為0好,<男矮否>數(shù)量為0差,<男>數(shù)量為1差,<矮>數(shù)量為1差,<否>數(shù)量為1差,<男矮>數(shù)量為1差,<男否>數(shù)量為1差,<矮否>數(shù)量為1差,<男矮否>數(shù)量為1f(<男>,<矮>,<否>,<男矮>,<男否>,<矮否>,<男矮否好)=1/3+0/2+2/4+0/2+0/2+0/2+0/2+50%=1.33f(<男>,<矮>,<否>,<男矮>,<男否>,<矮否>,<男矮否差)=1/3+1/2+1/4+1/2+1/2+1/2+1/2+33%=3.41階段5:取最大值所以第五元組第四個(gè)屬性缺失數(shù)據(jù)的填充值為“差”。以上實(shí)施例僅為說(shuō)明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動(dòng),均落入本發(fā)明保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)12