鄒小波 詹敏
摘要:為應(yīng)對大數(shù)據(jù)量處理的挑戰(zhàn)以及更加有效地進(jìn)行文本的語義挖掘,本文利用快速通用的計算框架Spark進(jìn)行典型主題模型潛在狄利克雷模型的并行化研究。根據(jù)模型求解過程中利用吉布斯采樣估計參數(shù)的特點(diǎn),該文將模型的并行化實(shí)現(xiàn)分解為參數(shù)初始化、數(shù)據(jù)集分割以及吉布斯采樣等過程,并利用Spark提供的豐富編程接口進(jìn)行模型的訓(xùn)練設(shè)計。基于真實(shí)數(shù)據(jù)集上的實(shí)驗(yàn)表明,該文的并行化模型能夠提取文本的主題分布。
關(guān)鍵詞:主題模型;Spark;吉布斯采樣;文本挖掘;大數(shù)據(jù)
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)08-0017-02
近年互聯(lián)網(wǎng)的發(fā)展將信息時代帶入了大數(shù)據(jù)時代,人們獲取信息的方式不再是傳統(tǒng)的PC端,而是擴(kuò)展到了移動互聯(lián)甚至是物聯(lián)網(wǎng)等多樣化的形式。越來越豐富的網(wǎng)絡(luò)內(nèi)容,使數(shù)據(jù)產(chǎn)生的速度、數(shù)據(jù)格式以及數(shù)據(jù)關(guān)系都變得難以再利用傳統(tǒng)的數(shù)據(jù)處理技術(shù)進(jìn)行數(shù)據(jù)的分析。因此,找到一種能夠有效處理大數(shù)據(jù)的技術(shù)成為了數(shù)據(jù)時代的基本需求。
本文主要研究內(nèi)存計算框架Spark平臺下主題模型算法Latent Dirichlet Allocation(LDA)的并行化及實(shí)現(xiàn)。LDA是Da-vid Blei,Andrew壇等提出的基于貝葉斯方法的無監(jiān)督概率生成主題模型,廣泛應(yīng)用在信息檢索、主題抽取、信息推薦等,本文在Spark框架下進(jìn)行LDA主題模型的文本挖掘研究。
1研究現(xiàn)狀
LDA模型利用兩個假設(shè):(1)文檔是多個主題的集合,符合多項(xiàng)分布;(2)主題也是詞語的混合,同樣符合多項(xiàng)分布。整個過程就是估計分布參數(shù),在估計參數(shù)的方法中,Blei等使用變分貝葉斯方法估計先驗(yàn)分布參數(shù),Gregor Heinrichm應(yīng)用Gibbs采樣方法對LDA進(jìn)行參數(shù)估計。
關(guān)于LDA算法的改進(jìn),很多學(xué)者進(jìn)行了深入而細(xì)致的研究,既有變分貝葉斯也有Gibbs采樣。針對大數(shù)據(jù)集處理提出的并行LDA首次由DavidNewman等提出,該論文提出兩種LDA改進(jìn)模型:(AD-LDA)和(HD-LDA),AD-LDA模型分割數(shù)據(jù)集加快速度,而精度有損失,HD-LDA混合模型包含多個LDA,相比AD-LDA精度提升,但復(fù)雜度高,因此,都集中在AD-LDA基礎(chǔ)上深入研究,Porteoas等提出了FastLDA。除了上述的早期并行化研究,La Wen等基于Mahout的CollapsedVariational Bayes(CVB)算法進(jìn)行改進(jìn)。由于Spark基于內(nèi)存計算的優(yōu)勢,越來越多的大數(shù)據(jù)處理研究放在了該平臺上,Spark下的LDA模型研究對文本處理的研究具有非常重要的指導(dǎo)作用。
2相關(guān)技術(shù)
2.1LDA模型
LDA模型中一篇文檔的生成方式過程如下:
1)通過Dirichlet分布采樣得到文檔i的主題分布θi;
2)從主題的多項(xiàng)式分布θi取樣生成文檔i詞語j的主題Zi,j;
3)從Dirichlet分布β中取樣生成主題Zi,j詞語分布φz(i,j);
4)從詞的多項(xiàng)式分布φz(i,j)中采樣最終生成詞Wi,j。
2.2 Spark內(nèi)存計算框架
Spark是一種由加州大學(xué)伯克利分校AMP實(shí)驗(yàn)室開源的內(nèi)存計算框架,相比Hadoop MapReduce模型具有快速、通用、容錯的特點(diǎn),由于MapReduce對中間結(jié)果處理落地磁盤,所以不適合具有迭代和實(shí)時條件下的計算,而Spark采用ResilientDistributed Datasets(RDD)數(shù)據(jù)集,非常適合在迭代情況下的應(yīng)用,因此適合機(jī)器學(xué)習(xí)等迭代算法的部署,Spark自身也包括了SQL處理、流計算、MLlib、圖計算等組件,因此在內(nèi)存快速計算的前提下,還能適用在不同的應(yīng)用場景下。
3基于Spark的LDA主題模型的實(shí)現(xiàn)
LDA模型使用貝葉斯推理方法,中間需要三個參數(shù):每個詞對應(yīng)的主題Zi,j,文檔的主題分布θi,每個主題的詞語分布z(i,j),在估計參數(shù)時,只需要計算Zu,其他兩個參數(shù)可以通過似然估計得到。Zi,j的計算公式如下:
(1)
(2)
(3)
公式(1)中分母需要求KW項(xiàng)的和,因此很難求出,Gibbs抽樣就是要完成式(1)的抽樣,再利用抽樣結(jié)果完成其他兩個參數(shù)的似然估計。
在進(jìn)行了數(shù)據(jù)集分割和預(yù)處理后,通過對每個數(shù)據(jù)集進(jìn)行一次Gibbs采樣然后進(jìn)行相關(guān)矩陣和數(shù)組的合并,以求平均值的方式得到新的狀態(tài)變化。接下來使用新的狀態(tài)集合應(yīng)用到各個數(shù)據(jù)集中進(jìn)行下一次采樣,重復(fù)這一過程,直到得到穩(wěn)定的結(jié)果。
LDA吉布斯采樣在并行化實(shí)現(xiàn)時需要更新多個統(tǒng)計量,如果將數(shù)據(jù)并行化處理,則需要將一些全局統(tǒng)計量進(jìn)行每次采樣的更新。數(shù)據(jù)以矩陣的形式存儲,在進(jìn)行數(shù)據(jù)集的子劃分時,按照從上到下、從左到右的順序進(jìn)行數(shù)據(jù)塊劃分,并行計數(shù)時對每個數(shù)據(jù)塊的局部統(tǒng)計量進(jìn)行更新,每次采樣完畢后將局部統(tǒng)計量進(jìn)行合并至全局統(tǒng)計量中,作為下次采樣的先驗(yàn)分布。并行吉布斯采樣的參數(shù)表如下表J所示(共享全局變量已在表中給出):
3.1算法參數(shù)初始化
相關(guān)的計數(shù)矩陣和數(shù)組初始化為0,然后將數(shù)據(jù)讀入RDD(RDD的數(shù)據(jù)主要是文檔一主題一詞匯)。
3.2采樣
采樣是LDA算法的核心,的采樣過程可以細(xì)致分為三個步驟:
1)首先是采樣參數(shù)中各計數(shù)數(shù)組的初始化,這些計數(shù)數(shù)組主要是文檔主題數(shù),文檔詞數(shù)以及某個主題的詞數(shù);
2)針對不同數(shù)據(jù)塊生成的RDD進(jìn)行并行采樣;
3)將更新后的計數(shù)矩陣傳輸?shù)较乱粋€采樣作業(yè)。
3.3Spark下LDA訓(xùn)練流程
1)數(shù)據(jù)導(dǎo)入:直接調(diào)用Spark導(dǎo)入本地數(shù)據(jù)或者將數(shù)據(jù)存入相應(yīng)的Nosql數(shù)據(jù)庫;
2)數(shù)據(jù)預(yù)處理:包括分詞、去停用詞、相關(guān)詞頻統(tǒng)計等工作,主要目的是為了向量化進(jìn)行模型的訓(xùn)練;
3)轉(zhuǎn)換為RDD:主要是為了將數(shù)據(jù)進(jìn)行分割,從而實(shí)現(xiàn)后續(xù)的并行化模型訓(xùn)練;
4)模型訓(xùn)練:模型的訓(xùn)練過程是本文并行化實(shí)現(xiàn)的核心,按照兩個過程:參數(shù)初始化和采樣過程進(jìn)行迭代。
4實(shí)驗(yàn)設(shè)計與結(jié)果分析
使用的數(shù)據(jù)集為斯坦福大學(xué)的Topic Modeling Toolbox(TMT)測試數(shù)據(jù)集,實(shí)驗(yàn)環(huán)境為三臺內(nèi)存為4g的主機(jī)組成的Spark集群,使用Spark2.0,分別測試主題模型的困惑度以及主題挖掘結(jié)果中的詞數(shù)分布。
4.1困惑度
困惑度是評測主題模型常用的一種測評參數(shù),其計算方式如下:
(4)
困惑度越小模型越好,隨著迭代的進(jìn)行,模型的迷惑度會逐步收斂。初始參數(shù)為α=β=0.01,主題數(shù)設(shè)置為(5,10,15,20,25,30),迭代次數(shù)為500次。由于每次采樣計算的結(jié)果都會有差別,因此本文進(jìn)行了多次測試并取均值,如下圖1所示。
可知,在圖中當(dāng)主題數(shù)為30時困惑度Perplexity最小,表示模型最優(yōu),所以為了進(jìn)行下一步主題分布的采樣結(jié)果測試,選用主題數(shù)為30最好。
4.2主題分布采樣結(jié)果
根據(jù)選擇的主題數(shù)以及參數(shù)的設(shè)置,采樣測試將迭代次數(shù)增加為1000次,得到對文檔集的主題挖掘結(jié)果,整個主題的詞分布都相對均勻,隨機(jī)選擇某個主題詞語分布中頻率最高的1個詞語進(jìn)行分析,得到詞語分布直方圖,如圖2所示。可見,抽取出的主題詞具有一定的表現(xiàn)力。
5總結(jié)
本文對主題模型LDA進(jìn)行了簡要的概述,并對其相關(guān)的并行化工作做了理論介紹,重點(diǎn)對其在Spark平臺上實(shí)現(xiàn)并行化的一些思路進(jìn)行了分析與實(shí)現(xiàn),相關(guān)的實(shí)驗(yàn)測試其困惑度以及主題抽取結(jié)果。實(shí)驗(yàn)表明,LDA算法可以在Spark上進(jìn)行較好的主題抽取,其抽取結(jié)果可以為進(jìn)一步的文本分類以及個性化推薦等應(yīng)用提供良好的幫助,但是本文的算法還存在一些問題,例如迭代次數(shù)增加導(dǎo)致的算法運(yùn)行效率問題,這也是后期的研究工作。