一種大數(shù)據(jù)分類方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種大數(shù)據(jù)分類方法及系統(tǒng),方法包括:訓(xùn)練步驟,將輸入數(shù)據(jù)劃分成輸入數(shù)據(jù)塊,將該輸入數(shù)據(jù)塊生成模式字符串的分類規(guī)則{模式字符串=>類標(biāo)},并將該分類規(guī)則寫入Hbase數(shù)據(jù)庫規(guī)則表;測試步驟,讀取該輸入數(shù)據(jù)塊,并構(gòu)造待分類模式字符串,在該Hbase數(shù)據(jù)庫規(guī)則表中查找與該待分類模式字符串匹配的分類規(guī)則,并輸出分類結(jié)果。由此,提供一種基于超曲面的大數(shù)據(jù)分類方法及系統(tǒng),通過采用基于超曲面的覆蓋算法,能在Hadoop映射/化簡編程框架和Hbase分布式非關(guān)系型數(shù)據(jù)庫基礎(chǔ)上實現(xiàn),且能以較低的計算代價,構(gòu)建易于解釋的規(guī)則模型,快速高效處理海量數(shù)據(jù),以應(yīng)對現(xiàn)實世界中呈爆炸式增長的數(shù)據(jù)的分類需求。
【專利說明】一種大數(shù)據(jù)分類方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及大數(shù)據(jù)分析領(lǐng)域,特別涉及一種基于超曲面的大數(shù)據(jù)分類方法及系統(tǒng)。
【背景技術(shù)】
[0002]分類是一種重要的數(shù)據(jù)分析形式,用于提取刻畫重要數(shù)據(jù)類的模型。這種模型稱為分類器,用于預(yù)測分類的類標(biāo)號。數(shù)據(jù)分類是一個兩階段的過程,包括學(xué)習(xí)階段和分類階段,學(xué)習(xí)階段即構(gòu)建分類模型階段,分類階段即使用模型來預(yù)測給定數(shù)據(jù)的類標(biāo)號。例如,我們可以建立一個分類模型,把銀行貸款申請劃分為安全或危險。這種分析可以幫助我們更好的全面理解數(shù)據(jù)。許多分類和預(yù)測方法來自于機(jī)器學(xué)習(xí)、模式識別和統(tǒng)計學(xué)。大部分算法是內(nèi)存駐留的算法,通常假定數(shù)據(jù)量很小。分類有大量應(yīng)用,包括欺詐檢測、目標(biāo)營銷、性能預(yù)測、制造和醫(yī)療診斷。
[0003]現(xiàn)有的解決分類問題的方法有很多,單一的分類方法主要包括:決策樹、貝葉斯、人工神經(jīng)網(wǎng)絡(luò)、k-近鄰、支持向量機(jī)和基于關(guān)聯(lián)規(guī)則的分類等;另外還有用于組合單一分類方法的集成學(xué)習(xí)算法,如裝袋和提升/推進(jìn)等。
[0004]( I)決策樹
[0005]決策樹是用于分類和預(yù)測的主要技術(shù)之一,決策樹學(xué)習(xí)是以實例為基礎(chǔ)的歸納學(xué)習(xí)算法,它著眼于從一組無次序、無規(guī)則的實例中推理出以決策樹表示的分類規(guī)則。構(gòu)造決策樹的目的是找出屬性和類別間的關(guān)系,用它來預(yù)測將來未知類別的記錄的類別。它采用自頂向下的遞歸方式,在決策樹的內(nèi)部節(jié)點進(jìn)行屬性的比較,并根據(jù)不同屬性值判斷從該節(jié)點向下的分支,在決策樹的葉節(jié)點得到結(jié)論。
[0006]主要的決策樹算法有ID3、C4.5 (C5.0),CART,PUBLIC,SLIQ 和 SPRINT 算法等。它們在選擇測試屬性采用的技術(shù)、生成的決策樹的結(jié)構(gòu)、剪枝的方法以及時刻,能否處理大數(shù)據(jù)集等方面都有各自的不同之處。
[0007](2)貝葉斯
[0008]貝葉斯分類算法是一類利用概率統(tǒng)計知識進(jìn)行分類的算法,如樸素貝葉斯算法。這些算法主要利用貝葉斯定理來預(yù)測一個未知類別的樣本屬于各個類別的可能性,選擇其中可能性最大的一個類別作為該樣本的最終類別。由于貝葉斯定理的成立本身需要一個很強的條件獨立性假設(shè)前提,而此假設(shè)在實際情況中經(jīng)常是不成立的,因而其分類準(zhǔn)確性就會下降。為此就出現(xiàn)了許多降低獨立性假設(shè)的貝葉斯分類算法,如TAN算法,它是在貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上增加屬性對之間的關(guān)聯(lián)來實現(xiàn)的。
[0009](3)人工神經(jīng)網(wǎng)絡(luò)
[0010]人工神經(jīng)網(wǎng)絡(luò)是一種應(yīng)用類似于大腦神經(jīng)突觸聯(lián)接的結(jié)構(gòu)進(jìn)行信息處理的數(shù)學(xué)模型。在這種模型中,大量的節(jié)點(或稱“神經(jīng)元”,或“單元”)之間相互聯(lián)接構(gòu)成網(wǎng)絡(luò),即“神經(jīng)網(wǎng)絡(luò)”,以達(dá)到處理信息的目的。神經(jīng)網(wǎng)絡(luò)通常需要進(jìn)行訓(xùn)練,訓(xùn)練的過程就是網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)的過程。訓(xùn)練改變了網(wǎng)絡(luò)節(jié)點的連接權(quán)的值使其具有分類的功能,經(jīng)過訓(xùn)練的網(wǎng)絡(luò)就可用于對象的識別。
[0011]目前,神經(jīng)網(wǎng)絡(luò)已有上百種不同的模型,常見的有反向傳播網(wǎng)絡(luò)、徑向基函數(shù)網(wǎng)絡(luò)、霍普菲爾德網(wǎng)絡(luò)、隨機(jī)神經(jīng)網(wǎng)絡(luò)、競爭神經(jīng)網(wǎng)絡(luò)等。但是當(dāng)前的神經(jīng)網(wǎng)絡(luò)仍普遍存在收斂速度慢、計算量大、訓(xùn)練時間長和不可解釋等缺點。
[0012](4)k_ 近鄰
[0013]k_近鄰算法是一種基于實例的分類方法。該方法就是找出與未知樣本X距離最近的k個訓(xùn)練樣本,看這k個樣本中多數(shù)屬于哪一類,就把X歸為那一類。k-近鄰方法是一種懶惰學(xué)習(xí)方法,它存放樣本,直到需要分類時才進(jìn)行分類,如果樣本集比較復(fù)雜,可能會導(dǎo)致很大的計算開銷,因此無法應(yīng)用到實時性很強的場合。
[0014](5)支持向量機(jī)
[0015]支持向量機(jī)是萬普尼克根據(jù)統(tǒng)計學(xué)習(xí)理論提出的一種新的學(xué)習(xí)方法,它的最大特點是根據(jù)結(jié)構(gòu)風(fēng)險最小化準(zhǔn)則,以最大化分類間隔構(gòu)造最優(yōu)分類超平面來提高學(xué)習(xí)機(jī)的泛化能力,較好地解決了非線性、高維數(shù)、局部極小點等問題。對于分類問題,支持向量機(jī)算法根據(jù)區(qū)域中的樣本計算該區(qū)域的決策曲面,由此確定該區(qū)域中未知樣本的類別。
[0016](6)基于關(guān)聯(lián)規(guī)則的分類
[0017]關(guān)聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘中一個重要的研究領(lǐng)域。近年來,對于如何將關(guān)聯(lián)規(guī)則挖掘用于分類問題,學(xué)者們進(jìn)行了廣泛的研究。關(guān)聯(lián)分類方法挖掘形如condset — C的規(guī)貝U,其中condset是項(或?qū)傩?值對)的集合,而C是類標(biāo)號,這種形式的規(guī)則稱為類關(guān)聯(lián)規(guī)則。關(guān)聯(lián)分類方法一般由兩步組成:第一步用關(guān)聯(lián)規(guī)則挖掘算法從訓(xùn)練數(shù)據(jù)集中挖掘出所有滿足指定支持度和置信度的類關(guān)聯(lián)規(guī)則;第二步使用啟發(fā)式方法從挖掘出的類關(guān)聯(lián)規(guī)則中挑選出一組高質(zhì)量的規(guī)則用于分類。
[0018](7)集成學(xué)習(xí)
[0019]實際應(yīng)用的復(fù)雜性和數(shù)據(jù)的多樣性往往使得單一的分類方法不夠有效。因此,學(xué)者們對多種分類方法的融合即集成學(xué)習(xí)進(jìn)行了廣泛的研究。集成學(xué)習(xí)已成為國際機(jī)器學(xué)習(xí)界的研究熱點,并被稱為當(dāng)前機(jī)器學(xué)習(xí)四個主要研究方向之一。
[0020]集成學(xué)習(xí)是一種機(jī)器學(xué)習(xí)范式,它試圖通過連續(xù)調(diào)用單個的學(xué)習(xí)算法,獲得不同的基學(xué)習(xí)器,然后根據(jù)規(guī)則組合這些學(xué)習(xí)器來解決同一個問題,可以顯著的提高學(xué)習(xí)系統(tǒng)的泛化能力。組合多個基學(xué)習(xí)器主要采用(加權(quán))投票的方法,常見的算法有裝袋,提升/推進(jìn)等。
[0021]集成學(xué)習(xí)由于采用了投票平均的方法組合多個分類器,所以有可能減少單個分類器的誤差,獲得對問題空間模型更加準(zhǔn)確的表示,從而提高分類器的分類準(zhǔn)確度。
[0022]用來比較和評估分類方法的標(biāo)準(zhǔn)主要有:(1)預(yù)測的準(zhǔn)確率。模型正確地預(yù)測新樣本的類標(biāo)號的能力;(2)計算速度。包括構(gòu)造模型以及使用模型進(jìn)行分類的時間;(3)強壯性。模型對噪聲數(shù)據(jù)或空缺值數(shù)據(jù)正確預(yù)測的能力;(4)可伸縮性。對于數(shù)據(jù)量很大的數(shù)據(jù)集,有效構(gòu)造模型的能力;(5)模型描述的簡潔性和可解釋性。模型描述愈簡潔、愈容易理解,則愈受歡迎。
[0023]從這幾個指標(biāo)來判斷,目前流行的分類算法存在以下問題。決策樹算法應(yīng)用十分廣泛,思路簡單,實現(xiàn)比較容易。但由于決策樹固有的樹的數(shù)據(jù)結(jié)構(gòu),導(dǎo)致機(jī)器內(nèi)存成為算法瓶頸,無法處理大規(guī)模數(shù)據(jù)。而決策樹的構(gòu)造前剪枝和構(gòu)造后剪枝也面臨著標(biāo)準(zhǔn)難以確定,算法復(fù)雜度高的問題。貝葉斯分類也是常用的分類算法,但是貝葉斯定理的成立本身需要一個很強的條件獨立性假設(shè)前提,而此假設(shè)在實際情況中經(jīng)常是不成立的,這會嚴(yán)重影響分類準(zhǔn)確性。人工神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程非常復(fù)雜,普遍存在收斂速度慢、計算量大、訓(xùn)練時間長和不可解釋等缺點。K-近鄰算法是一種懶惰學(xué)習(xí)算法,它存放樣本直到需要分類時才進(jìn)行分類,不用刻意區(qū)分訓(xùn)練和識別過程,但如果樣本集比較復(fù)雜,會導(dǎo)致很大的計算開銷,無法處理大量數(shù)據(jù)。支持向量機(jī)以最大化分類間隔構(gòu)造最優(yōu)分類超曲面,能解決非線性較高維數(shù)數(shù)據(jù)分類,但也存在著求解分類超曲面困難,算法復(fù)雜度高,難以適應(yīng)大量實時數(shù)據(jù)的問題?;陉P(guān)聯(lián)規(guī)則的分類和集成學(xué)習(xí)的方法目前相對應(yīng)用較少,還處于探索階段,但也普遍面臨著算法復(fù)雜度高,難以收斂,分類效果不可預(yù)測的問題。
【發(fā)明內(nèi)容】
[0024]為了解決上述問題,本發(fā)明的目的在于,提供一種基于超曲面的大數(shù)據(jù)分類方法及系統(tǒng),解決上述現(xiàn)有技術(shù)的預(yù)測準(zhǔn)確率不穩(wěn)定、計算代價大、速度慢、模型復(fù)雜度高、難以解釋、無法處理海量數(shù)據(jù)的問題。該方法采用基于超曲面的覆蓋算法,能在Hadoop映射/化簡編程框架和Hbase分布式非關(guān)系型數(shù)據(jù)庫基礎(chǔ)上實現(xiàn),且能以較低的計算代價,構(gòu)建易于解釋的規(guī)則模型,快速高效處理海量數(shù)據(jù),以應(yīng)對現(xiàn)實世界中呈爆炸式增長的數(shù)據(jù)的分類需求。
[0025]為實現(xiàn)上述目的,本發(fā)明所提出的大數(shù)據(jù)分類方法,其特征在于,該方法包括以下步驟:
[0026]訓(xùn)練步驟,包括多次循環(huán)的第一映射/化簡步驟,用于將輸入數(shù)據(jù)劃分成輸入數(shù)據(jù)塊,將該輸入數(shù)據(jù)塊生成模式字符串的分類規(guī)則{模式字符串=> 類標(biāo)},并將該分類規(guī)則寫入Hbase數(shù)據(jù)庫規(guī)則表;
[0027]測試步驟,包括一個第二映射/化簡步驟,用于讀取該輸入數(shù)據(jù)塊,并構(gòu)造待分類模式字符串,在該Hbase數(shù)據(jù)庫規(guī)則表中查找與該待分類模式字符串匹配的分類規(guī)則,并輸出分類結(jié)果。
[0028]本發(fā)明的大數(shù)據(jù)分類方法,其特征在于,該第一映射/化簡步驟具體為:
[0029]包括一個或多個第一映射步驟和一個化簡步驟,其中,該第一映射步驟用于將該輸入數(shù)據(jù)分成固定大小的輸入數(shù)據(jù)塊,逐行讀取該輸入數(shù)據(jù)塊并按照每一維依次取前I位的方式構(gòu)造模式字符串,并將該輸入數(shù)據(jù)塊生成鍵值對〈模式字符串,類標(biāo)〉,其中I為當(dāng)前循環(huán)次數(shù);該化簡步驟用于將該鍵值對合并成項目〈模式字符串,list<類標(biāo) >>,并判斷該項目是否純凈,若純凈,則向該Hbase數(shù)據(jù)庫規(guī)則表中寫入該規(guī)則,否則轉(zhuǎn)該第一映射步驟,其中該純凈指list〈類標(biāo)〉中包含某一個類標(biāo)次數(shù)的百分比達(dá)到用戶設(shè)定的閾值。
[0030]本發(fā)明的大數(shù)據(jù)分類方法,其特征在于,向該Hbase數(shù)據(jù)庫規(guī)則表中存入該規(guī)則的具體方法為:
[0031]判斷該Hbase數(shù)據(jù)庫規(guī)則表中是否存在該分類規(guī)則,若不存在,則將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表,若存在,則采取覆蓋的方式將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表。
[0032]本發(fā)明的大數(shù)據(jù)分類方法,其特征在于,該Hbase數(shù)據(jù)庫規(guī)則表采取列的方式進(jìn)行該分類規(guī)則的存儲。[0033]本發(fā)明的大數(shù)據(jù)分類方法,其特征在于,該第二映射/化簡步驟具體為:
[0034]包括一個或多個第二映射步驟,用于對該輸入數(shù)據(jù)塊逐行讀取,按照每一維依次取前m位數(shù)字的方式構(gòu)造待分類模式字符串,其中m為正整數(shù),并在Hbase數(shù)據(jù)庫規(guī)則表中查找是否存在與該待分類模式字符串匹配的分類規(guī)則,直到滿足終止條件,輸出分類結(jié)果,其中該終止條件為找到匹配的分類規(guī)則、取數(shù)字的位數(shù)達(dá)到輸入數(shù)據(jù)最大精度、取數(shù)字位數(shù)達(dá)到用戶輸入閾值中任一條件之一。
[0035]本發(fā)明還提出一種大數(shù)據(jù)分類系統(tǒng),其特征在于,該系統(tǒng)包括以下模塊:
[0036]訓(xùn)練模塊,包括多次循環(huán)的第一映射/化簡模塊,用于將輸入數(shù)據(jù)劃分成輸入數(shù)據(jù)塊,將該輸入數(shù)據(jù)塊生成模式字符串的分類規(guī)則{模式字符串=> 類標(biāo)},并將該分類規(guī)則寫入Hbase數(shù)據(jù)庫規(guī)則表;
[0037]測試模塊,包括一個第二映射/化簡模塊,用于讀取該輸入數(shù)據(jù)塊,并構(gòu)造待分類模式字符串,在該Hbase數(shù)據(jù)庫規(guī)則表中查找與該待分類模式字符串匹配的分類規(guī)則,并輸出分類結(jié)果。
[0038]本發(fā)明的大數(shù)據(jù)分類系統(tǒng),其特征在于,其特征在于,該第一映射/化簡模塊具體為:
[0039]包括一個或多個第一映射模塊和一個化簡模塊,其中,該第一映射模塊用于將該輸入數(shù)據(jù)分成固定大小的輸入數(shù)據(jù)塊,逐行讀取該輸入數(shù)據(jù)塊并按照每一維依次取前I位的方式構(gòu)造模式字符串,并將該輸入數(shù)據(jù)塊生成鍵值對〈模式字符串,類標(biāo)〉,其中I為當(dāng)前循環(huán)次數(shù);該化簡模塊用于將該鍵值對合并成項目〈模式字符串,list<類標(biāo) >>,并判斷該項目是否純凈,若純凈,則向該Hbase數(shù)據(jù)庫規(guī)則表中寫入該規(guī)則,否則轉(zhuǎn)該第一映射模塊,其中該純凈指list〈類標(biāo)〉中包含某一個類標(biāo)次數(shù)的百分比達(dá)到用戶設(shè)定的閾值。
[0040]本發(fā)明的大數(shù)據(jù)分類系統(tǒng),其特征在于,向該Hbase數(shù)據(jù)庫規(guī)則表中存入該規(guī)則的具體方法為:
[0041]判斷該Hbase數(shù)據(jù)庫規(guī)則表中是否存在該分類規(guī)則,若不存在,則將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表,若存在,則采取覆蓋的方式將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表。
[0042]本發(fā)明的大數(shù)據(jù)分類系統(tǒng),其特征在于,該Hbase數(shù)據(jù)庫規(guī)則表采取列的方式進(jìn)行該分類規(guī)則的存儲。
[0043]本發(fā)明的大數(shù)據(jù)分類系統(tǒng),其特征在于,該第二映射/化簡模塊具體為:
[0044]包括一個或多個第二映射模塊,用于對該輸入數(shù)據(jù)塊逐行讀取,按照每一維依次取前m位數(shù)字的方式構(gòu)造待分類模式字符串,其中m為正整數(shù),并在Hbase數(shù)據(jù)庫規(guī)則表中查找是否存在與該待分類模式字符串匹配的分類規(guī)則,直到滿足終止條件,輸出分類結(jié)果,其中該終止條件為找到匹配的分類規(guī)則、取數(shù)字的位數(shù)達(dá)到輸入數(shù)據(jù)最大精度、取數(shù)字位數(shù)達(dá)到用戶輸入閾值中任一條件之一。
[0045]本發(fā)明具有以下優(yōu)點:
[0046](I)本發(fā)明實現(xiàn)的基于超曲面的分類算法,其數(shù)學(xué)基礎(chǔ)在于拓?fù)鋵W(xué)的若當(dāng)定理:平面上一條連續(xù)的不與自身相交曲線就叫做若爾當(dāng)曲線。平面上一條閉合(首尾相接)的若爾當(dāng)曲線,把平面分成2個區(qū)域,并且如果在這兩個區(qū)域內(nèi)分別取一點,再用一條曲線將其相連,則這條連線必定和原來的閉合若爾當(dāng)曲線相交。推論為:以空間中任何一點為起點做射線,如果射線與該閉合若爾當(dāng)曲線的交點為奇數(shù)個,則稱該點在曲線圍成的閉合空間內(nèi),若交點為偶數(shù)個,則稱該點在閉合空間外。高維數(shù)據(jù)同樣如此。由該理論可知,本發(fā)明的空間劃分合并對分類準(zhǔn)確率不會產(chǎn)生負(fù)面影響;
[0047](2)本發(fā)明采用“分治”的思想,將輸入數(shù)據(jù)的每一個維度逐數(shù)據(jù)位取值,作為表征空間劃分的模式串。采取十分的思想,將空間按照劃分成IOn個區(qū)域(η為輸入數(shù)據(jù)的維度)。判斷每一個區(qū)域數(shù)據(jù)點的類別是否足夠“純凈”(均為同一類或為同一類的比例達(dá)到用戶設(shè)定閾值)。如果足夠“純凈”,則該區(qū)域標(biāo)記為該區(qū)域數(shù)量最多的數(shù)據(jù)類標(biāo),否則將該區(qū)域進(jìn)一步細(xì)分為IOn個子區(qū)域,取每個維度下一個數(shù)據(jù)位,繼續(xù)進(jìn)行此項工作,直至滿足所有細(xì)分區(qū)域均“純凈”、遍歷完所有數(shù)據(jù)位或者循環(huán)次數(shù)達(dá)到用戶設(shè)定閾值這三個終止條件中的任何一種。最終輸出每個區(qū)域的表征字符串和所標(biāo)類別,形成規(guī)則表用于分類。這種分治的思想易于理解,便于實現(xiàn)。同時,采用十分的方式,使得絕大多數(shù)分類數(shù)據(jù)(一般采用十進(jìn)制)可以不經(jīng)過進(jìn)制轉(zhuǎn)換直接進(jìn)入算法處理流程,大大減少計算復(fù)雜度。采用Hbase規(guī)則表的方式來存儲規(guī)則,擴(kuò)展性好,實時性強,是工業(yè)級數(shù)據(jù)庫應(yīng)用的最佳選擇。
[0048](3)本發(fā)明實現(xiàn)了基于Hadoop的超曲面分類算法,利用映射/化簡機(jī)制,將大數(shù)據(jù)分割成小塊數(shù)據(jù),在多個映射端并行對每條數(shù)據(jù)產(chǎn)生對應(yīng)當(dāng)前層次的表征空間區(qū)域位置的模式字符串,利用映射/化簡的大量數(shù)據(jù)外存排序機(jī)制,在化簡端并行判斷空間每個子區(qū)域的數(shù)據(jù)純度,產(chǎn)生規(guī)則或者進(jìn)入下一層運算。這種設(shè)計極大減輕了單機(jī)的內(nèi)存壓力和計算壓力,使處理數(shù)據(jù)規(guī)模可以隨著Hadoop集群機(jī)器數(shù)量的增加而線性增加,達(dá)到了海量數(shù)據(jù)分布式計算的技術(shù)效果;
[0049](4)本發(fā)明使用了分布式非關(guān)系型數(shù)據(jù)庫Hbase存儲產(chǎn)生的規(guī)則表。Hbase作為列存儲的數(shù)據(jù)庫,具有高可靠性、高性能、可伸縮的特點,容忍數(shù)據(jù)冗余,對海量數(shù)據(jù)上的查詢需求能高效快速響應(yīng)。本發(fā)明設(shè)計了基于Hbase的可擴(kuò)展的規(guī)則表,可根據(jù)新增數(shù)據(jù)不斷豐富規(guī)則表,能適應(yīng)不同來源的大量數(shù)據(jù)并行的插入和查詢操作。使本發(fā)明能夠應(yīng)用于實際行業(yè)數(shù)據(jù)的分類需求。
[0050]本發(fā)明的積極效果在于,本發(fā)明能夠?qū)崿F(xiàn)基于Hadoop映射/化簡框架和Hbase分布式非關(guān)系型數(shù)據(jù)庫的基于超曲面的分類算法。與現(xiàn)有技術(shù)相比,本發(fā)明提出的新方法和系統(tǒng)可以處理TB級數(shù)據(jù),并且計算能力隨著Hadoop集群機(jī)器的增加而接近線性上升,真正實現(xiàn)分布式計算,大大提高性能和效率。另外,本發(fā)明沒有使用復(fù)雜的運算,區(qū)別于一般分類算法的高計算復(fù)雜度,能降低系統(tǒng)開銷。采用Hbase數(shù)據(jù)庫特有的列存儲表結(jié)構(gòu),使規(guī)則表在數(shù)據(jù)量幾何增長的情況下查詢速度線性上升,高效快速響應(yīng)分類需求。滿足系統(tǒng)在大數(shù)據(jù)環(huán)境下的實時處理要求。
【專利附圖】
【附圖說明】
[0051]圖1是本發(fā)明實施例的超曲面分類器并行訓(xùn)練部分流程圖
[0052]圖2是本發(fā)明實施例的超曲面分類器并行測試部分流程圖
[0053]圖3是本發(fā)明實施例的輸入數(shù)據(jù)格式
[0054]圖4是本發(fā)明實施例的JobTracker上系統(tǒng)訓(xùn)練和識別運行過程
[0055]圖5是本發(fā)明實施例的Hbase數(shù)據(jù)庫規(guī)則表部分規(guī)則數(shù)據(jù)
[0056]圖6是本發(fā)明實施例的測試過程部分識別結(jié)果[0057]圖7是本發(fā)明實施例的UCLA數(shù)據(jù)集測試識別準(zhǔn)確度【具體實施方式】
[0058]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本發(fā)明的大數(shù)據(jù)分類方法及系統(tǒng)進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0059]本發(fā)明基于分布式開源軟件平臺Hadoop和非關(guān)系型分布式數(shù)據(jù)庫Hbase數(shù)據(jù)庫,利用Hadoop機(jī)制并行處理輸入數(shù)據(jù),縮短系統(tǒng)運行時間,利用Hbase列存儲和高冗余容忍機(jī)制,使得知識庫數(shù)據(jù)呈幾何級別增長時,查詢時間只有線性增長,適用于實際增量大數(shù)據(jù)的處理。具體方案如下。
[0060]本發(fā)明的大數(shù)據(jù)分類方法主要分為兩個步驟,訓(xùn)練步驟和測試步驟,訓(xùn)練步驟包含多次循環(huán)的第一映射/化簡步驟,測試步驟包括一個第二映射/化簡步驟。此處需要說明的是:第一映射/化簡步驟包括一個或多個第一映射步驟,一個化簡步驟。第二映射/化簡步驟包括一個第二映射步驟,其中,第一映射步驟起到將大量輸入數(shù)據(jù)進(jìn)行分塊,分成固定大小(一般是64MB)的輸入 數(shù)據(jù)塊之后再進(jìn)行處理;化簡步驟對將第一映射步驟生成的數(shù)據(jù)塊進(jìn)行處理,并生成最終輸出結(jié)果。對分布式數(shù)據(jù)庫Hbase的數(shù)據(jù)插入和查詢操作穿插在訓(xùn)練步驟和測試步驟的映射/化簡程序?qū)崿F(xiàn)中,訓(xùn)練步驟將產(chǎn)生的分類規(guī)則寫入Hbase數(shù)據(jù)庫規(guī)則表中,測試步驟則從Hbase數(shù)據(jù)庫規(guī)則表中查找該分類規(guī)則,并用于測試數(shù)據(jù)的分類類別識別。本發(fā)明能夠處理增量大數(shù)據(jù),對一段時間產(chǎn)生的一批訓(xùn)練數(shù)據(jù)處理后提取出分類規(guī)則,寫入Hbase數(shù)據(jù)庫規(guī)則,而下一段時間產(chǎn)生的下一批數(shù)據(jù)處理后得到的分類規(guī)則繼續(xù)寫入Hbase數(shù)據(jù)庫規(guī)則,使分類規(guī)則庫得到擴(kuò)充,分類能力增強。
[0061]實施例
[0062]下面我們以經(jīng)典的26個英文字母圖片對應(yīng)像素組成的訓(xùn)練樣本為例,對本發(fā)明的大數(shù)據(jù)分類方法進(jìn)行說明。
[0063]在本發(fā)明中,輸入數(shù)據(jù)的形式如下,訓(xùn)練數(shù)據(jù)包含類標(biāo),測試數(shù)據(jù)不含類標(biāo)(根據(jù)具體的需求可對各種數(shù)據(jù)進(jìn)行預(yù)處理,使之符合本發(fā)明的輸入格式):
[0064]
02 08 03 05 01 08 13 00 06 06 10 08 00 08 00 08 T
02 08 03 05 01 08 13 00 06 06 10 08 00 08 00 01 B
02 08 03 05 01 08 13 00 06 06 10 08 00 08 00 01 B
05 12 03 07 02 10 05 05 04 13 03 09 02 08 04 10 I
04 11 06 08 06 IO 06 02 06 IO 03 07 03 07 03 09 D
07 11 06 06 03 05 09 04 06 04 04 10 06 10 02 08 N
02 01 03 01 01 08 06 06 06 06 05 09 01 07 05 10 G
04 11 05 08 03 08 08 06 09 05 06 06 00 08 09 07 S
[0065]......[0066]訓(xùn)練步驟包含多次循環(huán)的第一映射/化簡步驟(此處表示為η,η為正整數(shù)),每個第一映射/化簡步驟由第一映射步驟和化簡步驟組成。輸入訓(xùn)練數(shù)據(jù)進(jìn)入映射端,被劃分成多個固定大小(一般是64MB)的輸入數(shù)據(jù)塊,再并行對每個輸入數(shù)據(jù)塊逐行讀取進(jìn)行處理。輸入數(shù)據(jù)塊的每條數(shù)據(jù)形如 “02080305010813000606100800080008T”,“02080305010813000606100800080008”表示字母“T”圖片的256位(二進(jìn)制)像素值,也就是這條輸入數(shù)據(jù)塊的數(shù)據(jù)的模式。通過這種方式,將圖像信息轉(zhuǎn)換成了規(guī)整的文本信息,可以進(jìn)行分類處理。設(shè)定當(dāng)前為第1次循環(huán)(I為正整數(shù)),取輸入數(shù)據(jù)每一維的前I位數(shù)字組成模式字符串,比如當(dāng)1=1時,取每一維的第一位數(shù)字組成模式字符串“0000001000100000”,將該模式字符串作為映射輸出的鍵K,類別標(biāo)志“T”作為映射輸出的值V,映射輸出形如鍵值對 <0000001000100000, T>O 設(shè)此次產(chǎn)生了三個鍵值對 <0000001000100000, τ>,〈0000001000100000,B〉,〈0000001000100000,B〉。之后進(jìn)入化簡階段,化簡采用映射輸出〈0000001000100000,Τ>, 〈0000001000100000,B〉, 〈0000001000100000,B〉等作為輸入,并且將鍵值K相同的鍵值對合并成〈K,list<V>>形式的項目,如<0000001000100000, <T, B, B?,在化簡中對這樣的項目進(jìn)行遍歷分析,如果對于某一個模式字符串如“0000001000100000”,類標(biāo)值的集合包含某一個類標(biāo)次數(shù)的百分比達(dá)到用戶設(shè)定的純凈度閾值,該純凈度閾值是指用戶設(shè)定的一個范圍在[0,1]的百分比,大于該值則說明訓(xùn)練部分化簡I中的〈模式字符串,list〈類標(biāo)》可以產(chǎn)生分類規(guī)則,否則進(jìn)入下一輪循環(huán)。譬如90%,則稱為該項目“純凈”,提取出規(guī)則,否則將原始數(shù)據(jù)標(biāo)記為“未處理”,進(jìn)入下一輪循環(huán)。此處對于模式字符串“0000001000100000”,包含的類標(biāo)序列〈T,B, B〉,出現(xiàn)次數(shù)最多的“B”占到66%的比例,小于設(shè)定的90%閾值,所以標(biāo)記為“未處理”,進(jìn)入第二輪循環(huán)。第二輪循環(huán)的映射取每一維的前二位數(shù)字組成模式字符串作為鍵K,類標(biāo)作為值V,生成〈00000010001000002835183066080808,T>, <00000010001000002835183066080801, B〉,<00000010001000002835183066080801, B〉三條數(shù)據(jù),進(jìn)入化簡步驟按照相同鍵K值組裝成統(tǒng)一序列的方式,產(chǎn)生〈00000010001000002835183066080808,<Τ?, <00000010001000002835183066080801,〈B,B?兩個項目,顯然對這兩個項目分別分析,其某一類標(biāo)占比均超過90%,稱為“純凈”。所以化簡產(chǎn)生兩條分類規(guī)則,{00000010001000002835183066080808=>Τ}
,{00000010001000002835183066080801=>Β},將這兩條規(guī)則寫入Hbase數(shù)據(jù)庫的規(guī)則表當(dāng)中。如果仍有不夠“純凈”的鍵值對,則按照上述方式進(jìn)入下一輪循環(huán),直至到達(dá)最大循環(huán)次數(shù),該最大循環(huán)次數(shù)是指人為設(shè)定的系統(tǒng)訓(xùn)練部分循環(huán)最大值,為一個正整數(shù)。如不設(shè)置則默認(rèn)為輸入數(shù)據(jù)精度。訓(xùn)練過程完畢。
[0067]此處對Hbase數(shù)據(jù)庫規(guī)則表結(jié)構(gòu)進(jìn)行說明。Hbase采取列的方式進(jìn)行數(shù)據(jù)存儲,Hbase的表結(jié)構(gòu)由行、列族表示,一個列族包含一個或多個列標(biāo)簽,該規(guī)則表的每一行的鍵即為分類規(guī)則模式字符串,如上例中產(chǎn)生的“00000010001000002835183066080808”,每一行包含一個列族“fam”, 該列族包含一個列標(biāo)簽,該列標(biāo)簽存儲模式字符串對應(yīng)的類標(biāo),該處對應(yīng)類標(biāo)為“T”。當(dāng)有增量數(shù)據(jù)處理后產(chǎn)生新的分類規(guī)則,如果該分類規(guī)則的模式識別字符串尚未在表中存在,則新插入該規(guī)則,若已經(jīng)存在,則采取覆蓋的方式。比如新產(chǎn)生一條分類規(guī)則“00000010001000002835183066080808=>M”,該規(guī)則已經(jīng)在規(guī)則表中存在,原類標(biāo)為T,則用M覆蓋掉原類標(biāo)T。如此完成分類規(guī)則的增長和更新。
[0068]測試步驟包含一次第二映射/化簡步驟。該過程包含一個第二映射步驟。在映射中逐行讀取每個數(shù)據(jù)塊的數(shù)據(jù),對每一行取出前m維數(shù)字組成待識別模式字符串(m為正整數(shù)),首先取第一維數(shù)字,此處以“07100505020608060811071102080509”為例,該模式字符串為“010000001010000”,查詢 Hbase 數(shù)據(jù)庫規(guī)則表,搜索是否有{010000001010000=〉?} (?為某一類標(biāo))規(guī)則完成匹配。若有譬如{010000001010000=>Z}規(guī)則匹配,則標(biāo)記該模式字符串類標(biāo)為Z ;否則取第二維數(shù)字組成模式字符串“0100000010100007055268681712859”,繼續(xù)進(jìn)行查詢。直到滿足以下某一個條件終止:1,找到匹配的分類規(guī)則;2,取數(shù)字的位數(shù)達(dá)到輸入數(shù)據(jù)最大精度,比如上例只能取到第二位;3,取數(shù)字位數(shù)達(dá)到用戶輸入閾值,比如只能取到第3位。按照這三個條件程序終止后,如果有匹配的分類規(guī)則,則輸出模式字符串和類標(biāo),如“07100505020608060811071102080509Z”,否則輸出 “07100505020608060811071102080509NF”(NF表示NotFound,無法找到)。測試過程結(jié)束。
[0069]圖1給出了算法訓(xùn)練階段的并行結(jié)構(gòu)圖。映射I對輸入數(shù)據(jù)塊逐行讀取,并構(gòu)造<模式字符串,類標(biāo) > 鍵值對?;咺分析〈模式字符串,list〈類標(biāo) >> 項目純度,判斷是否“純凈”,若純凈輸出{模式字符串=> 類標(biāo)}分類規(guī)則,插入Hbase數(shù)據(jù)庫規(guī)則表,否則輸出原數(shù)據(jù),進(jìn)入下一輪循環(huán)。
[0070]圖2給出了算法測試階段的并行結(jié)構(gòu)圖。映射I對輸入數(shù)據(jù)塊逐行讀取,按照每一維依次取前m位數(shù)字(m為正整數(shù))方式構(gòu)造待識別模式字符串,據(jù)此在Hbase數(shù)據(jù)庫規(guī)則表中進(jìn)行類標(biāo)查詢。輸出最終識別結(jié)果。
[0071]按照前述結(jié)構(gòu),以下分訓(xùn)練和測試兩個部分展示實例。為了更好保證真實性,盡量以截圖形式展現(xiàn)在服務(wù)器上的運行過程。訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)均采用UCLA標(biāo)準(zhǔn)字母識別數(shù)據(jù)集,共包含數(shù)據(jù)20000條,使用十折交叉驗證方法。如圖3所示。
[0072]在Hadoop平臺上運行該系統(tǒng)的訓(xùn)練和測試過程,JobtrackeKHadoop記錄任務(wù)運行的Web網(wǎng)頁查看工具)記錄了整個過程,如圖4所示,每一個job (工作流)代表在Hadoop平臺上運行的一次作業(yè)。訓(xùn)練過程包括jobO、jobl、job2、After job, jobO是預(yù)處理作業(yè),對輸入數(shù)據(jù)格式做預(yù)處理,使之符合系統(tǒng)要求,jobl和job2則是生成規(guī)則的兩次循環(huán)作業(yè),After job是后期處理作業(yè),統(tǒng)一將生成的分類規(guī)則插入Hbase數(shù)據(jù)庫規(guī)則表。測試部分包括jobO和test job, jobO是預(yù)處`理作業(yè),做輸入格式預(yù)處理,test job是識別作業(yè),進(jìn)行識別和計算準(zhǔn)確度。圖中每一行代表含義如下,以第一行“job_201310230921_0021N0RMALhadoop job0100.00%”為例,“ job_201310230921_0021”表示作業(yè)提交時間是 2013 年 10 月23日9點21分,0021是當(dāng)日作業(yè)提交的編號,“NORMAL”表示作業(yè)執(zhí)行狀態(tài)正常,“hadoop”是執(zhí)行作業(yè)的用戶名,“100.00%”表示作業(yè)執(zhí)行進(jìn)度為百分之百,即執(zhí)行完畢。
[0073]訓(xùn)練部分運行過程中產(chǎn)生的分類規(guī)則插入Hbase規(guī)則表,圖5是Hbase中部分類標(biāo)為“J”的分類規(guī)則。每一行數(shù)據(jù)依次為模式字符串,列名,時間戳,類標(biāo)。仍然以第一行數(shù)據(jù)“00000000010000002735296261481616column=fam:coltimestamp=1385007184062value=J” 為例,注意此處 “296261481616” 是因為命令行顯示自動換行的緣故,它與前面的“00000000010000002735”是一個字符串的先后部分?!?0000000010000002735296261481616”表示模式字符串,“column=fam: col ”表示該行有一個列族“fam”,包含一個列標(biāo)簽“col”,“timestamp=1385007184062”表示這一行數(shù)據(jù)插入時間為“1385007184062”(計算機(jī)內(nèi)置微秒時間),“value=J”表示這一行在“col”列標(biāo)簽下面的值為“ J”。總的來說,就是模式字符串“ 00000000010000002735296261481616 ”代表了該輸入字符串的分類為“J”。[0074]測試部分運行對輸入數(shù)據(jù)進(jìn)行識別,采用十折交叉驗證,在原數(shù)據(jù)后面標(biāo)出根據(jù)規(guī)則數(shù)據(jù)庫識別出的類標(biāo)。如圖6所示。
[0075]圖7展示了在UCLA字母識別標(biāo)準(zhǔn)數(shù)據(jù)集上,采用十折交叉驗證,測試部分識別準(zhǔn)確率為92%,表現(xiàn)優(yōu)異。圖中截取的是命令行下的運行結(jié)果顯示,前面部分是Hadoop工程運行打印的內(nèi)部機(jī)制信息,表示物理內(nèi)存容量、化簡過程輸出記錄數(shù)量,虛擬內(nèi)存容量,映射過程輸出記錄數(shù)量等,重要的是最后一句“algorithm precision is0.92”表示算法驗證后的準(zhǔn)確度是0.92,也就是92%。
【權(quán)利要求】
1.一種大數(shù)據(jù)分類方法,其特征在于,該方法包括以下步驟: 訓(xùn)練步驟,包括多次循環(huán)的第一映射/化簡步驟,用于將輸入數(shù)據(jù)劃分成輸入數(shù)據(jù)塊,將該輸入數(shù)據(jù)塊生成模式字符串的分類規(guī)則{模式字符串=> 類標(biāo)},并將該分類規(guī)則寫入Hbase數(shù)據(jù)庫規(guī)則表; 測試步驟,包括一個第二映射/化簡步驟,用于讀取該輸入數(shù)據(jù)塊,并構(gòu)造待分類模式字符串,在該Hbase數(shù)據(jù)庫規(guī)則表中查找與該待分類模式字符串匹配的分類規(guī)則,并輸出分類結(jié)果。
2.如權(quán)利要求1所述的大數(shù)據(jù)分類方法,其特征在于,該第一映射/化簡步驟具體為: 包括一個或多個第一映射步驟和一個化簡步驟,其中,該第一映射步驟用于將該輸入數(shù)據(jù)分成固定大小的輸入數(shù)據(jù)塊,逐行讀取該輸入數(shù)據(jù)塊并按照每一維依次取前I位的方式構(gòu)造模式字符串,并將該輸入數(shù)據(jù)塊生成鍵值對〈模式字符串,類標(biāo)〉,其中I為當(dāng)前循環(huán)次數(shù);該化簡步驟用于將該鍵值合并成項目〈模式字符串,list<類標(biāo) >>,并判斷該項目是否純凈,若純凈,則向該Hbase數(shù)據(jù)庫規(guī)則表中寫入該規(guī)則,否則轉(zhuǎn)該第一映射步驟,其中該純凈指list〈類標(biāo) > 中包含某一個類標(biāo)次數(shù)的百分比達(dá)到用戶設(shè)定的閾值。
3.如權(quán)利要求2所述的大數(shù)據(jù)分類方法,其特征在于,向該Hbase數(shù)據(jù)庫規(guī)則表中存入該規(guī)則的具體方法 為: 判斷該Hbase數(shù)據(jù)庫規(guī)則表中是否存在該分類規(guī)則,若不存在,則將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表,若存在,則采取覆蓋的方式將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表。
4.如權(quán)利要求1或3所述的大數(shù)據(jù)分類方法,其特征在于,該Hbase數(shù)據(jù)庫規(guī)則表采取列的方式進(jìn)行該分類規(guī)則的存儲。
5.如權(quán)利要求1所述的大數(shù)據(jù)分類方法,其特征在于,該第二映射/化簡步驟具體為: 包括一個或多個第二映射步驟,用于對該輸入數(shù)據(jù)塊逐行讀取,按照每一維依次取前m位數(shù)字的方式構(gòu)造待分類模式字符串,其中m為正整數(shù),并在Hbase數(shù)據(jù)庫規(guī)則表中查找是否存在與該待分類模式字符串匹配的分類規(guī)則,直到滿足終止條件,輸出分類結(jié)果,其中該終止條件為找到匹配的分類規(guī)則、取數(shù)字的位數(shù)達(dá)到輸入數(shù)據(jù)最大精度、取數(shù)字位數(shù)達(dá)到用戶輸入閾值中任一條件之一。
6.一種大數(shù)據(jù)分類系統(tǒng),其特征在于,該系統(tǒng)包括以下模塊: 訓(xùn)練模塊,包括多次循環(huán)的第一映射/化簡模塊,用于將輸入數(shù)據(jù)劃分成輸入數(shù)據(jù)塊,將該輸入數(shù)據(jù)塊生成模式字符串的分類規(guī)則{模式字符串=> 類標(biāo)},并將該分類規(guī)則寫入Hbase數(shù)據(jù)庫規(guī)則表; 測試模塊,包括一個第二映射/化簡模塊,用于讀取該輸入數(shù)據(jù)塊,并構(gòu)造待分類模式字符串,在該Hbase數(shù)據(jù)庫規(guī)則表中查找與該待分類模式字符串匹配的分類規(guī)則,并輸出分類結(jié)果。
7.如權(quán)利要求6所述的大數(shù)據(jù)分類系統(tǒng),其特征在于,其特征在于,該第一映射/化簡模塊具體為: 包括一個或多個第一映射模塊和一個化簡模塊,其中,該第一映射模塊用于將該輸入數(shù)據(jù)分成固定大小的輸入數(shù)據(jù)塊,逐行讀取該輸入數(shù)據(jù)塊并按照每一維依次取前I位的方式構(gòu)造模式字符串,并將該輸入數(shù)據(jù)塊生成鍵值對〈模式字符串,類標(biāo)〉,其中I為當(dāng)前循環(huán)次數(shù);該化簡模塊用于將該鍵值合并成項目〈模式字符串,list<類標(biāo) >>,并判斷該項目是否純凈,若純凈,則向該Hbase數(shù)據(jù)庫規(guī)則表中寫入該規(guī)則,否則轉(zhuǎn)該第一映射模塊,其中該純凈指list〈類標(biāo) > 中包含某一個類標(biāo)次數(shù)的百分比達(dá)到用戶設(shè)定的閾值。
8.如權(quán)利要求6所述的大數(shù)據(jù)分類系統(tǒng),其特征在于,向該Hbase數(shù)據(jù)庫規(guī)則表中存入該規(guī)則的具體方法為: 判斷該Hbase數(shù)據(jù)庫規(guī)則表中是否存在該分類規(guī)則,若不存在,則將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表,若存在,則采取覆蓋的方式將該分類規(guī)則存入該Hbase數(shù)據(jù)庫規(guī)則表。
9.如權(quán)利要求6或8所述的大數(shù)據(jù)分類系統(tǒng),其特征在于,該Hbase數(shù)據(jù)庫規(guī)則表采取列的方式進(jìn)行該分類規(guī)則的存儲。
10.如權(quán)利要求6所述的大數(shù)據(jù)分類系統(tǒng),其特征在于,該第二映射/化簡模塊具體為: 包括一個或多個第二映射模塊,用于對該輸入數(shù)據(jù)塊逐行讀取,按照每一維依次取前m位數(shù)字的方式構(gòu)造待分類模式字符串,其中m為正整數(shù),并在Hbase數(shù)據(jù)庫規(guī)則表中查找是否存在與該待分類模式字符串匹配的分類規(guī)則,直到滿足終止條件,輸出分類結(jié)果,其中該終止條件為找到匹配的分類規(guī)則、取數(shù)字的位數(shù)達(dá)到輸入數(shù)據(jù)最大精度、取數(shù)字位數(shù)達(dá)到用戶輸入閾值中任一條件之一。`
【文檔編號】G06F17/30GK103729428SQ201310727192
【公開日】2014年4月16日 申請日期:2013年12月25日 優(yōu)先權(quán)日:2013年12月25日
【發(fā)明者】何清, 吳新宇, 莊福振, 敖翔 申請人:中國科學(xué)院計算技術(shù)研究所