本發(fā)明涉及機(jī)器學(xué)習(xí)、大數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其一種基于Spark對(duì)演化超網(wǎng)絡(luò)文本分類方法的并行化實(shí)現(xiàn)。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,互聯(lián)網(wǎng)數(shù)據(jù)及資源已實(shí)現(xiàn)了爆炸性的增長(zhǎng)。由于基于內(nèi)容的信息檢索和數(shù)據(jù)挖掘方法能夠有效地管理和利用這些海量信息,因此在近年來(lái)備受關(guān)注。在數(shù)據(jù)量不斷增大的同時(shí),數(shù)據(jù)的標(biāo)注結(jié)構(gòu)復(fù)雜程度也在增加,傳統(tǒng)的機(jī)器學(xué)習(xí)方法的研究成果已經(jīng)不能滿足技術(shù)發(fā)展的需要。因此,對(duì)傳統(tǒng)機(jī)器學(xué)習(xí)方法并行化處理成為了當(dāng)今研究的一個(gè)熱點(diǎn),其在現(xiàn)實(shí)生活中的重要性逐漸凸顯,已廣泛應(yīng)用于在海量文本分類、大規(guī)模圖像視頻的語(yǔ)義標(biāo)注、海量基因功能組以及超規(guī)模音樂情感分類等方面。與傳統(tǒng)的機(jī)器學(xué)習(xí)任務(wù)相比,傳統(tǒng)機(jī)器學(xué)習(xí)的并行化難點(diǎn)在于如何有效處理對(duì)標(biāo)簽數(shù)量呈指數(shù)增長(zhǎng)的標(biāo)簽空間、海量數(shù)據(jù)無(wú)法進(jìn)行正確的分類處理以及提高分類效率的問題。
超網(wǎng)絡(luò)是受到生物分子網(wǎng)絡(luò)的啟發(fā)而提出的一種概率圖論模型。它是一種特殊的超圖,由大量的超邊組成,其中每條超邊可以連接任意數(shù)量的頂點(diǎn),能很好的表示數(shù)據(jù)之間和特征之間的高階關(guān)聯(lián)性。超網(wǎng)絡(luò)模型彌補(bǔ)了傳統(tǒng)機(jī)器學(xué)習(xí)算法表現(xiàn)形式復(fù)雜、學(xué)習(xí)結(jié)構(gòu)可讀性差的缺點(diǎn),能有效地進(jìn)行數(shù)據(jù)挖掘和知識(shí)發(fā)現(xiàn),提供可讀性強(qiáng)的學(xué)習(xí)結(jié)果,解決目前機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘領(lǐng)域存在的問題。超網(wǎng)絡(luò)模型已經(jīng)在疾病診斷、多模態(tài)信息檢索、股票預(yù)測(cè)等方面取得很好的成績(jī)。
Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用并行框架,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的算法。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于Spark下并行超網(wǎng)絡(luò)的分類算法。
本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的,一種基于Spark下并行超網(wǎng)絡(luò)的分類算法,具體包括以下步驟:步驟S101.把文本數(shù)據(jù)部署到Spark平臺(tái)上;步驟S102.在Spark平臺(tái)上對(duì)文本數(shù)據(jù)進(jìn)行并行化預(yù)處理;步驟S103.在Spark平臺(tái)上,對(duì)超網(wǎng)絡(luò)算法的演化學(xué)習(xí)進(jìn)行并行化實(shí)現(xiàn)。
進(jìn)一步,所述步驟S102具體為:先將原始數(shù)據(jù)通過(guò)缺失數(shù)據(jù)處理、然后進(jìn)行離散化處理或計(jì)算超邊閾值ζ;
超邊閾值匹配為超邊與樣本的距離小于ζ*d′,其中d′為超邊的維度,超邊閾值ζ的計(jì)算公式如公式(1)所示;
其中對(duì)于樣本數(shù)據(jù)x來(lái)說(shuō),Gx表示樣本數(shù)據(jù)x近鄰的集合,d代表訓(xùn)練樣本維度,x’表示樣本數(shù)據(jù)x的近鄰樣本。
進(jìn)一步,步驟S103具體包括以下子步驟:
S1031.對(duì)訓(xùn)練集中每條文本數(shù)據(jù)生成p條超邊,k條數(shù)據(jù)的超邊構(gòu)成N條超邊庫(kù),并初始化每條超邊的權(quán)值wj=1(j=1,2,…,N),形成對(duì)應(yīng)的超邊權(quán)重向量W={w1,w2,…,wN};
S1032.把訓(xùn)練集中每一條文本數(shù)據(jù)與超邊進(jìn)行匹配,根據(jù)匹配原則形成一個(gè)k*N的稀疏矩陣A;
S1033.利用稀疏矩陣A進(jìn)行并行化隨機(jī)梯度下降演化學(xué)習(xí);
S1034.用演化學(xué)習(xí)后的超網(wǎng)絡(luò)對(duì)文本數(shù)據(jù)進(jìn)行分類。
進(jìn)一步,本方法將超網(wǎng)絡(luò)并行梯度下降演化學(xué)習(xí)轉(zhuǎn)化為矩陣并行運(yùn)算,并行化實(shí)現(xiàn)是指:進(jìn)行HDFS讀入文本數(shù)據(jù)以后,并行化生成超邊庫(kù)和匹配矩陣,并行化實(shí)現(xiàn)具體包括以下子步驟:
S1041讀取預(yù)處理后的文本數(shù)據(jù),生成具有p個(gè)partition的RDDa;(由于和后面的樣本個(gè)數(shù)一樣因此需要用不同的字母表示)
S1042對(duì)RDDa的每一個(gè)partition中的文本數(shù)據(jù)并行生成超邊集合庫(kù),超邊集合庫(kù)放入含有相同數(shù)量partition的RRDb,并用RDDa.persist()方法緩存數(shù)據(jù)集,生成RDDc;
S1043通過(guò)RDDc.cartesion(RDDb)方法笛卡爾積生成RDDd,其中每一個(gè)鍵值對(duì)為(k,e),其中k為樣本,e為超邊;
S1044通過(guò)RDDd.reduce()方法合并匹配結(jié)果為RDDe,其中每個(gè)k-value值的組成為(ki,((e1,y1),(e2,y2),…,(eN,yN))),其中ki表示鍵值對(duì)的k,其值為第i條文本數(shù)據(jù),鍵值對(duì)的value值存儲(chǔ)該條文本數(shù)據(jù)對(duì)于其他全部超邊的匹配結(jié)果,e1表示第1條超邊,y1表示根據(jù)匹配原則的匹配結(jié)果;
S1045對(duì)RDDe中的數(shù)據(jù)進(jìn)行map操作,形成匹配矩陣存儲(chǔ)在RDDf中。
進(jìn)一步,在并行梯度下降演化學(xué)習(xí)過(guò)程中,由于存在部分超邊未能與文本數(shù)據(jù)匹配,超網(wǎng)絡(luò)模型認(rèn)為這部分超邊對(duì)當(dāng)前的分類不產(chǎn)生影響,因而其權(quán)重不發(fā)生改變,僅僅對(duì)樣本匹配的超邊的權(quán)重進(jìn)行更新,根據(jù)更新公式(2)進(jìn)行并行化調(diào)優(yōu),具體步驟為:
S1051把初始化權(quán)重根據(jù)broadcast()方法,廣播給匹配的矩陣。
S1052根據(jù)compute()方法計(jì)算RDDf中每個(gè)partition梯度,并通過(guò)reduce()方法合并梯度值;
S1053根據(jù)update()方法更新超邊權(quán)重的權(quán)重向量W的權(quán)重值;
S1054根據(jù)iterator()方法進(jìn)行重復(fù)步驟S1051-S1053,進(jìn)行迭代更新權(quán)重值;其中,梯度計(jì)算方法為:
其中,
Wj表示超邊j的權(quán)重值,η表示學(xué)習(xí)速率,J(w)表示目標(biāo)函數(shù),Si表示預(yù)測(cè)概率值,yi表示真實(shí)標(biāo)簽值,mi表示i樣本對(duì)于超網(wǎng)絡(luò)的中間預(yù)測(cè)結(jié)果,cij表示匹配矩陣中第i行第j列的值,E表示超邊條數(shù)。wj表示第j個(gè)標(biāo)簽對(duì)應(yīng)的權(quán)重值。
進(jìn)一步,用演化學(xué)習(xí)后的超網(wǎng)絡(luò)對(duì)文本數(shù)據(jù)進(jìn)行分類是指對(duì)每一個(gè)測(cè)試文本數(shù)據(jù)按照公式(3)與公式(4)計(jì)算Si的值,并按照公式(5)進(jìn)行預(yù)測(cè)標(biāo)簽yt*;
其中,C為匹配矩陣,
目標(biāo)函數(shù)J(w)是指:
其中,yi為真實(shí)標(biāo)簽值,si為預(yù)測(cè)概率值;
m表示超網(wǎng)絡(luò)的中間預(yù)測(cè)向量,w表示超邊權(quán)重,n表示訓(xùn)練集的樣本個(gè)數(shù),Sn表示超網(wǎng)絡(luò)對(duì)第n條樣本的預(yù)測(cè)概率值,,St表示向量s的第t個(gè)值。
由于采用以上技術(shù)方案,本發(fā)明具有以下優(yōu)點(diǎn):
本發(fā)明旨在解決在大規(guī)模數(shù)據(jù)量的情況下,超網(wǎng)絡(luò)算法的并行處理問題,通過(guò)并行化數(shù)據(jù)存儲(chǔ)階段,數(shù)據(jù)預(yù)處理階段,并且通過(guò)改變超邊結(jié)構(gòu)以及超網(wǎng)絡(luò)演化計(jì)算方式,修改目標(biāo)函數(shù),完成對(duì)超網(wǎng)絡(luò)算法的并行化處理,提高傳統(tǒng)超網(wǎng)絡(luò)的分類算法性能和效率,解決在海量數(shù)據(jù)中,傳統(tǒng)的超網(wǎng)絡(luò)模型已經(jīng)難以滿足時(shí)間和空間的限制。
附圖說(shuō)明
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,其中:
圖1為本發(fā)明實(shí)施例一提供在Spark下超網(wǎng)絡(luò)分類算法生成超邊的流程圖;
圖2為本發(fā)明實(shí)施例一提供在Spark下超網(wǎng)絡(luò)分類算法并行化隨機(jī)梯度下降流程圖;
圖3為本發(fā)明實(shí)施例一提供基于Spark下對(duì)超網(wǎng)絡(luò)分類算法的并行化實(shí)現(xiàn)算法。
具體實(shí)施方式
下面將結(jié)合附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述。
參考圖3,圖3為本發(fā)明實(shí)施例提供的一種基于Spark超網(wǎng)絡(luò)文本數(shù)據(jù)分類算法的并行化實(shí)現(xiàn)具體包括:
文本數(shù)據(jù)集具有高維大樣本、高噪聲、高冗余以及樣本分布不均衡等特點(diǎn),由于互聯(lián)網(wǎng)的高速發(fā)展,無(wú)時(shí)無(wú)刻不產(chǎn)生大量的文本數(shù)據(jù),這些海量的文本數(shù)據(jù)對(duì)傳統(tǒng)的機(jī)器學(xué)習(xí)帶來(lái)了極大的挑戰(zhàn)。因此,本實(shí)施例中,主要采用文本數(shù)據(jù)來(lái)展開討論。參考圖1,圖1為在Spark下超網(wǎng)絡(luò)分類算法生成超邊的流程圖。
由于考慮到Spark平臺(tái)擅長(zhǎng)迭代計(jì)算,并且適合并行處理矩陣運(yùn)算,因此,本方法將文本數(shù)據(jù)形成的超邊與文本數(shù)據(jù)匹配結(jié)果放到一個(gè)矩陣中,對(duì)超邊權(quán)重進(jìn)行并行化梯度下降演化學(xué)習(xí),由于Spark擅長(zhǎng)迭代計(jì)算,并且擅長(zhǎng)采用并行處理方式用于矩陣運(yùn)算,可以體現(xiàn)Spark對(duì)于解決海量數(shù)據(jù)在超網(wǎng)絡(luò)分類上的優(yōu)勢(shì)。
步驟一:把文本數(shù)據(jù)部署到Spark平臺(tái)上:將原始實(shí)驗(yàn)樣本按行存儲(chǔ)于HDFS(Hadoop分布式文件系統(tǒng))分布式存儲(chǔ)系統(tǒng)。
步驟二:在Spark平臺(tái)上對(duì)文本數(shù)據(jù)進(jìn)行并行化預(yù)處理:由于受到超網(wǎng)絡(luò)模型結(jié)構(gòu)的制約,含有連續(xù)性特征的文本數(shù)據(jù)并不適合傳統(tǒng)的超網(wǎng)絡(luò)模型,因而,先將文本數(shù)據(jù)通過(guò)缺失數(shù)據(jù)預(yù)處理、然后進(jìn)行離散化處理或?qū)Τ吰ヅ溟撝郸频挠?jì)算。
(1)缺失文本數(shù)據(jù)處理:用連續(xù)性文本特征值的均值(或中位數(shù))來(lái)填補(bǔ)缺失值。
(2)離散化處理:離散化可以分為無(wú)監(jiān)督和有監(jiān)督離散化,無(wú)監(jiān)督包含等頻度、等寬度等方法,有監(jiān)督離散化方法包含基于卡方和信息熵等方法。
(3)超邊閾值的匹配計(jì)算:為超邊與樣本的距離小于ζ*d′,其中d′為超邊的維度,閾值ζ的計(jì)算公式如公式(1)所示。
其中Gx表示對(duì)于文本數(shù)據(jù)x來(lái)說(shuō),Gx表示樣本數(shù)據(jù)x近鄰的集合,d代表訓(xùn)練樣本維度。
步驟三:在Spark平臺(tái)上,對(duì)超網(wǎng)絡(luò)算法的演化學(xué)習(xí)進(jìn)行并行化實(shí)現(xiàn),包括:
(1)在文本數(shù)據(jù)集合中對(duì)每條文本數(shù)據(jù)并行化生成p條超邊,k條數(shù)據(jù)的超邊構(gòu)成N(其中N=k*n)條超邊庫(kù),并初始化每條超邊的權(quán)值wj=1(j=1,2,…,N),形成對(duì)應(yīng)的超邊權(quán)重向量W={w1,w2,…,wN},參考圖1所示;
讀取預(yù)處理后的文本數(shù)據(jù),生成具有p個(gè)partition的RDDa,這里p等于10,表示HDFS(Hadoop分布式文件系統(tǒng))讀入文本文件以后,用10個(gè)partition來(lái)存放所有的文本數(shù)據(jù)。
對(duì)RDDa的每一個(gè)partition中的文本數(shù)據(jù)并行生成超邊集合庫(kù),超邊集合庫(kù)中放入和RDDa中含有相同數(shù)量partition的RRDb,并用RDDa.persist()方法緩存數(shù)據(jù)集,生成RDDc,用于下一步的使用;
通過(guò)RDDc.cartesion(RDDb)方法笛卡爾積生成RDDd,其中每每一個(gè)鍵值對(duì)為(k,e)其中k為文本數(shù)據(jù),e為每一條文本數(shù)據(jù)生成的超邊;
通過(guò)RDDd.reduce()方法合并匹配結(jié)果為RDDe,其中每個(gè)k-value值的組成為(ki,((e1,y1),(e2,y2),…,(eN,yN))),其中ki表示鍵值對(duì)的k,其值為第i條文本數(shù)據(jù),鍵值對(duì)的value值存儲(chǔ)該條文本數(shù)據(jù)對(duì)于全部超邊的匹配結(jié)果,e1表示第1條超邊,y1表示根據(jù)匹配原則的匹配結(jié)果;
匹配矩陣是指:根據(jù)第i條樣本數(shù)據(jù)刪除與第j條超邊對(duì)應(yīng)的標(biāo)簽來(lái)設(shè)定稀疏矩陣A的值:
如果第i條樣本數(shù)據(jù)與第j條超邊匹配且超邊標(biāo)簽為-1,則對(duì)應(yīng)的稀疏矩陣A中的aij取值為-1;
如果第i條樣本數(shù)據(jù)與第j條超邊匹配且超邊標(biāo)簽為+1,則對(duì)應(yīng)的稀疏矩陣A中的aij取值為+1;
如果第i條樣本數(shù)據(jù)與第j條超邊不匹配,則對(duì)應(yīng)的稀疏矩陣A中的aij取值為0;
樣本與超邊的匹配為:a.若為標(biāo)稱型數(shù)據(jù)則完全匹配;b.若為連續(xù)型數(shù)據(jù)則距離小于ζ,則說(shuō)明樣本與超邊匹配。
(2)把文本數(shù)據(jù)集合中每個(gè)文本數(shù)據(jù)與超邊庫(kù)中的超邊進(jìn)行匹配,根據(jù)匹配原則形成一個(gè)k*N的稀疏矩陣A,參考圖1所示;
對(duì)RDDe中的數(shù)據(jù)進(jìn)行map操作,形成稀疏矩陣A存儲(chǔ)在RDDf中;
(3)利用稀疏矩陣A進(jìn)行并行化隨機(jī)梯度下降演化學(xué)習(xí),不斷地動(dòng)態(tài)調(diào)整超邊的權(quán)重,調(diào)整超邊庫(kù)的結(jié)構(gòu),使得權(quán)值不同的超邊對(duì)文本數(shù)據(jù)分類結(jié)果的影響產(chǎn)生不同的效果,使得超網(wǎng)絡(luò)分類方法更加符合實(shí)際的應(yīng)用情況。
在隨機(jī)生成超邊的過(guò)程中,并不能保證所有的超邊都具有很高的適應(yīng)值,為了保證留下適應(yīng)值高的超邊以提高超邊庫(kù)的整體適應(yīng)性,本發(fā)明對(duì)以下兩種情況的超邊進(jìn)行刪除:
a.在稀疏矩陣A中,刪除匹配最差的超邊,例如第i條超邊的匹配值全部為0的超邊,即api=0(p=1,2,…,k)進(jìn)行刪除;
b.在稀疏矩陣A中,刪除適應(yīng)值大于σ的超邊,即進(jìn)行刪除,其中σ代表適應(yīng)值的閾值;
并行化梯度下降演化學(xué)習(xí)是指:為了最大限度地降低對(duì)樣本錯(cuò)分概率,即減小目標(biāo)函數(shù)的值。在權(quán)值更新的過(guò)程中,由于存在部分超邊未能與樣本匹配,超網(wǎng)絡(luò)模型認(rèn)為這部分超邊對(duì)當(dāng)前的分類不產(chǎn)生影響,因而其權(quán)重不發(fā)生改變,僅僅對(duì)樣本匹配的超邊的權(quán)重進(jìn)行更新,根據(jù)更新公式(2)根據(jù)進(jìn)行并行化調(diào)優(yōu),具體步驟為:
1、把初始化權(quán)重根據(jù)broadcast()方法,廣播給匹配的矩陣。
2、根據(jù)compute()方法計(jì)算RDDf中每個(gè)partition梯度,并通過(guò)reduce()方法合并梯度值。
3、根據(jù)update()方法更新權(quán)重向量W的權(quán)重值。
4、根據(jù)iterator()方法進(jìn)行重復(fù)步驟(1)-(3),進(jìn)行迭代更新權(quán)重值。
所述梯度計(jì)算方法為:
其中,
(4)在測(cè)試階段,對(duì)每一個(gè)測(cè)試的文本數(shù)據(jù)按照公式(3)與公式(4)計(jì)算Si的值,并按照公式(5)進(jìn)行預(yù)測(cè)標(biāo)簽yt*。
其中,C為匹配矩陣,W為代表每條超邊權(quán)重的權(quán)重向量。
所述目標(biāo)函數(shù)J(w)是指:
其中,yi為文本數(shù)據(jù)的真實(shí)標(biāo)簽,si為預(yù)測(cè)值。
本發(fā)明通過(guò)并行化數(shù)據(jù)存儲(chǔ)階段,數(shù)據(jù)預(yù)處理階段,并且通過(guò)改變超邊結(jié)構(gòu)以及超網(wǎng)絡(luò)演化計(jì)算方式,修改目標(biāo)函數(shù),完成對(duì)超網(wǎng)絡(luò)算法的并行化處理,提高傳統(tǒng)超網(wǎng)絡(luò)的分類算法性能和效率,解決在海量數(shù)據(jù)中,傳統(tǒng)的超網(wǎng)絡(luò)模型已經(jīng)難以滿足時(shí)間和空間的限制。
最后說(shuō)明的是,以上優(yōu)選實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管通過(guò)上述優(yōu)選實(shí)施例已經(jīng)對(duì)本發(fā)明進(jìn)行了詳細(xì)的描述,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在形式上和細(xì)節(jié)上對(duì)其作出各種各樣的改變,而不偏離本發(fā)明權(quán)利要求書所限定的范圍。