劉發升,劉艷軍,葛海明/
(江西理工大學信息工程學院 贛州341000)
近年來,數據挖掘一直是科學研究中非常重要的領域,尤其在這個海量數據時代。目前,在數據挖掘領域,分析復雜網絡[1]的結構成為研究的熱點,發現社區結構對于企業或者科研工作來說都具有重要意義。社交網絡是一種從現實社會中抽象出來的復雜網絡,遵循小世界理論[2]、服從冪律分布[3]并且可以對網絡結構進行社區劃分。在線用戶社交網絡改變了用戶間的交流方式,影響了社會互動,微博網絡是社交網絡的典型代表。微博(Weibo)是Web 2.0技術的標志性產物,是以用戶間的關系為橋梁,將用戶創造的數據以文本、圖片、視頻等方式對外傳播來進行交流溝通。微博網絡具有文本內容簡明扼要、用戶可實時交互并且關系結構稀疏等特點。國外著名的社交網站Twitter、Facebook以及國內的新浪微博、騰訊微博均擁有龐大的用戶群。根據2014年7月 《第34次中國互聯網絡發展狀況統計報告》可知,我國網民數量達6億多,手機網民數量達5億多,并且微博平臺的用戶增長率仍然處于領先地位。以新浪微博為例,截至2014年9月,微博月活躍用戶數達1.67億。如今,微博已經成為人們網絡生活中獲取新聞熱點、娛樂生活等必不可少的網絡媒體。通過分析微博網絡中用戶的行為特征和相互關系,找出興趣相投的用戶社區,成為社交網絡在數據挖掘領域研究的重點。
社區是社交網絡結構中一種重要的屬性,目前對于社區并沒有統一的定義,研究學者普遍認為社區內部節點聯系較為緊密,外部節點聯系較為稀疏[4]。在復雜網絡的研究中,網絡結構通常被抽象為圖模型表示G={V,E},其中,V={v1,v2,…,vn}表示節點集合,E={e1,e2,…,em}表示邊的集合。在具體的網絡中,V表示為網絡實體的集合,E表示為實體之間關系的集合。例如,在微博網絡中,V表示微博用戶的集合,E表示不同用戶之間的關注關系。
傳統的社區發現算法研究中,將微博作為客體對象較少,近幾年對于微博網絡社區發現的研究一般分為3種方法。
(1)基于用戶結構
用戶網絡結構包括用戶之間的關注或者好友關系,此類方法是通過將用戶結構抽象為圖論等問題進行社區發現。參考文獻[4]通過采集微博用戶原生指標和構造指標信息,利用派系過濾算法對用戶行為相似度進行聚類,進而發現用戶社區。參考文獻[5]通過用戶關系緊密度構造微博無向加權圖,根據加權算法發現微博社區。該類方法沒有考慮用戶興趣特征,僅通過用戶間關系發現社區,無法體現用戶興趣對社區的重要性。事實上,即使沒有直接關系相連的兩個用戶,若他們發布的內容相似,這兩個用戶在很大程度上可能擁有相似的興趣并且應該被加入到同一個社區中。
(2)基于用戶內容
此類方法一般采用提取用戶在網絡中發布的微博文本內容以及用戶行為等特征屬性,來比較用戶興趣相似度,通過相似度計算公式將用戶進行劃分。參考文獻[6]將用戶對地理位置和社區的選擇偏好引入到時空主題模型中發現用戶社區。參考文獻[7]采集用戶標簽信息,將其使用頻率和稀疏度作為用戶興趣進行聚類形成社區。該類方法沒有考慮到用戶關系在數據傳播中的橋梁作用,顯性的好友關系對社區發現起到重要的作用。
(3)基于用戶結構和內容的綜合方法
此類方法的一般流程是提取基于用戶結構的微博社區以及基于用戶興趣的微博用戶社區,然后采用某種聚類算法將兩種社區進行融合。參考文獻[8]分析用戶關系和微博主題,通過相似度公式計算節點間的傳遞概率,利用標簽傳遞算法發現社區。參考文獻[9]利用關注關系為節點將用戶和文本內容融合來發現社區。
一般來說,朋友之間更有可能分享相同的興趣。基于這樣的原則,在推薦系統的研究中,較為準確的推薦往往會綜合考慮用戶的好友關系和生成內容。同樣,在文檔檢索(Document Retrieval)和文檔分類(Document Classification)中也經常運用。如此便說明這一原則在多關系網絡中具有實際意義,因此,該原則對于微博網絡社區發現也同樣適用。
根據用戶關系和內容對發現社區的重要性,本文采用適合微博網絡的主題模型生成用戶興趣特征,利用JS距離(Jensen-Shannon Divergence)公式計算用戶的興趣相似度,并在CNM算法的基礎上提出一種改進的JSCNM算法。該算法將用戶興趣主題和用戶關系進行融合以取代模塊度增量對微博網絡的凝聚。最后在真實數據集中進行實驗,發現用戶社區。
國內較為著名的社交網絡有新浪微博(Sina Weibo)、 騰訊微博 (Tencent Weibo)、 人人網(Renren)、豆瓣(Douban)等。 以新浪微博為例,每一個微博用戶允許發表不超過140字的微博文本,可包含表情、圖片、視頻、話題等內容。興趣相投的不同用戶之間可以在不必告知對方的情況下彼此關注或者單方面關注。也就是說,一個用戶可以關注其他用戶,同時也可以被其他用戶所關注。用戶可以轉發其他用戶的微博。圖1為微博的復雜網絡結構。
微博網絡用圖模型G=(V,E)表示,其中,V表示在微博網絡中所有節點類型的集合,E表示在節點V之間有聯系的邊的集合。如圖1所示,所有節點類型集合V可以表示為V={U,C,W,R}={
模塊度Q(Modularity)[10]是Newman提出的用于識別社區劃分結果好壞的度量標準。模塊度定義為每個社區內部的連接數與維持度序列不變的隨機化網絡的期望連接數的差值的累加和。換言之,模塊度較高的網絡社區內連接比隨機化網絡更密集。假設一個網絡劃分成多個社區,可以用式(1)判斷它是否為一個好的劃分。
針對上述不足之處,模塊度在CNM算法[11]中得到優化,有
其中,ki表示節點i的度大小。
實驗表明,網絡擁有社區結構的模塊度值范圍為0.3~0.7。一般來說,當模塊度值大于0.3時,就可以看作是一個好的社區劃分。經過實驗證明,模塊度仍然存在一些不足之處,比如存在過擬合現象以及有限分辨率的現象等。盡管如此,目前尚未存在其他更好的度量方法能夠像模塊度函數一樣,在發現社區結構劃分的同時確定社區的數目。通過對模塊度進行優化來更加有效地發現社區結構仍具有重要的研究意義。
用戶興趣相似度是指不同用戶對某一事物感興趣或者喜好的程度。在微博網絡中,用戶興趣相似度表示為用戶發布的微博內容之間相關聯的程度,因為用戶發布的內容可以彰顯用戶當時的喜好。用戶相似度中心性是指某一用戶節點和其所有鄰居節點相似度的總和。用戶相似度中心性計算公式為
其中,Sim(i,j)表示節點i和節點j之間的興趣相似度,n表示網絡中用戶總數。一個節點的鄰居節點越多,它的中心度越大。表示整個網絡中所有用戶節點的中心度總和。
CNM算法[11]是Newman提出的基于貪婪思想的快速社區發現算法,通過不斷優化模塊度函數進行凝聚來實現對社區的劃分,該算法的思想是通過迭代發現由合并每一對社區引起的模塊度增量的變化,并利用這個變換的最大值,來合并擁有最大變化值的社區。在算法執行過程中,由于模塊度增量矩陣和對應的社區編號都采用高效的最大堆數據結構存儲,使得最大模塊度增量和對應的社區信息可以在常數時間內獲取,其時間復雜度接近線性值O(n log2n)。故該算法是第一個適合較大規模網絡的社區結構發現算法。雖然目前存在多個優秀的相關算法,但是CNM算法是唯一一個從全局角度考慮社區合并、直接有效地優化模塊度的快速算法。
為了運算方便,CNM算法定義了兩個變量,即eij和ai,表達式分別為
式(4)分別表示社區i和社區j內部邊的總數占網絡中全部邊的總數的比值以及社區i內部節點關聯的全部邊的總數占網絡中全部邊的總數的比值。
CNM算法定義以下3種類型矩陣:存儲模塊度增量ΔQ的稀疏矩陣;最大堆H;存儲向量ai的常規矩陣。
算法基本流程如下。
①初始化。將網絡中的每一個節點視為一個社區,利用公式初始化ΔQ和ai。
在算法剛開始時,如果節點i和節點j之間有邊相連,則eij=1/2m;如果沒有邊相連,則eij=0,ai=ki/2m。模塊度增量的值為
②初始化最大堆H。將ΔQ矩陣每列中的最大值寫入到H中。
③遍歷H中的最大值ΔQij,將社區i和社區j根據合并原則進行合并,標記為社區i,并更新ΔQ和H中行和列的值以及輔助向量ai的值。
當社區i和社區j合并到社區i時,需要刪除社區j對應的行和列的值,合并規則定義如下
更新后的輔助向量ai的值為ai′=ai+aij,aj=0。記錄更新后的模塊度Q的值為Q=Q+ΔQ。
④重復步驟②和③,直到所有的節點歸到一個社區,算法結束。由于模塊度增量矩陣和對應的社區編號都用最大堆數據結構存儲,因此可以在常數時間內獲取數據,更新和刪除操作可以很快地完成。當ΔQ全為負數時,模塊度值下降,這個過程中會出現峰值,也就能得到社區最優的劃分。模塊度值大于0.3就可以看作是一個好的社區劃分。
主題模型是對自然語言進行主題挖掘并能識別語義的語言模型。傳統的主題挖掘一般采用向量空間模型(Vector Space Model,VSM),將文本表示為特征項集,利用余弦公式計算文本間的相似度,聚類結果往往只能區分類別,不能進行語義識別。例如,“喬布斯離我們而去了”和“蘋果價格會不會下降”這兩個句子在文本上沒有相似之處,但是在語義上是相關的。傳統的計算文本相似度發現方法無法解決文本挖掘中的語義問題,但是主題模型能夠識別。
LDA[12](Latent Dirichlet Allocation)是眾多主題模型算法中較為經典的一個。LDA是Blei等人提出的能夠識別大規模文檔集或語料庫中潛在的主題信息的算法模型。它使用詞袋(Bag OfWords,BOW)方法,該方法將文檔視為詞語的集合,進而構成詞頻向量,最后將文本轉化成易于建模的數據。LDA模型思想是任意一篇文檔都是由若干個主題混合生成的,并且被表示為主題所構成的一個概率多項分布。其中,每個主題都是一個基于文本詞語項的概率多項分布。
LDA是一個層次貝葉斯概率模型,由文檔(Doc)—主題(Topic)—詞語(Word)3層構成,其含義是某一篇文檔中的詞以一定的概率選擇了某一主題,并從這一主題中再以一定的概率選擇某些詞語。生成一篇文檔中每個詞出現的概率為P(word|doc)=
詞語層:詞語集合W={w1,w2,…,wj},是文檔集合中經過預處理后的單詞集合。
主題層:主題集合={z1,z2,…,zk},是基于詞語集W的概率多項分布,也可以表示為向量φk=(pk1,pk2,…,pkj),其中,pkj表示詞語wj在主題zk上的生成概率。
文檔層:對于詞語層來說,文檔層使用詞袋方法,將每一個文檔表示成一個詞頻向量di=(tfi1,tfi2,…,tfij),其中,tfij表示詞語j在文檔i中出現的次數。對于主題層而言,文檔集合可表示成Θ={θ1,θ2,…,θd},且每一篇文檔由一個向量 θd=(pd1,pd2,…,pdz)表示,其中,pdz是主題z在文檔d中的生成概率。
在LDA中,α表示文檔—主題多項分布的先驗知識,β表示主題—單詞多項分布的先驗知識,其中,α和β都服從狄利克雷分布。
LDA生成過程如下所示。
選擇參數 φ~Dir(β);
選擇參數 θ~Dir(α);
對于N個單詞中每一個單詞w:
選擇一個主題z~p(z|θ);
選擇一個單詞w~p(w|z,φ);
主題向量φ表示詞語在主題上的生成概率,服從狄利克雷分布。主題向量θ表示每個主題在文檔中出現的概率,也服從狄利克雷分布,該向量是非負歸一化向量。N表示要生成文檔的單詞總數,w表示第n個單詞。z表示要選擇的主題,p(z|θ)表示在給定θ的情況下,主題z的多項概率分布。p(w|z,φ)表示在選定一個主題z的情況下,該主題所對應的單詞的多項概率分布。
由上述過程可知,LDA聯合概率分布表達式為
LDA模型中,θ表示文檔—主題 (doc-topic)的概率分布,φ表示主題—詞語(topic-word)的概率分布。這兩個參數是模型最終要得到的值,根據聯合概率分布公式,使用吉布斯(Gibbs Sampling)公式對其采樣并進行求解。吉布斯采樣是一種馬爾可夫鏈—蒙特卡羅(MCMC)算法過程。步驟如下。
①初始化。通過將文檔中的所有單詞隨機賦予主題來構造馬爾可夫鏈的初始狀態。
②求解下一個狀態。對每篇文檔Di的每個單詞wn進行迭代,根據吉布斯公式計算當前單詞的各個主題zn的概率p(zn=k|wn),k表示主題數;通過概率隨機采樣確定當前的分配主題。
③迭代執行步驟②,直到馬爾可夫鏈達到穩定狀態。
吉布斯采樣表達式為
其中,zi表示第i個詞對應的主題,┐i表示去除下標為i的詞,表示除去當前單詞項在第m篇文檔中單詞項所對應的主題個數,表示除去當前單詞項在第k個主題中產生單詞的個數。
吉布斯采樣過程結束后,文檔—主題(doc-topic)的概率分布θ以及主題—詞語(topic-word)的概率分布φ可由后驗概率近似估算出來。
其中,變量解釋如式(7)所述。m表示文檔數,k表示主題數,t表示單詞數。
JS距離[13]是在KL距離[14]的基礎上改進的用于測量隨機變量的概率分布的相似度。KL距離是Kullback-Leibler差異(Kullback-Leibler Divergence)的簡稱,它用于檢測在同一事件空間里兩個概率分布的差異情況。在本文中可以用于計算用戶相似度距離。假設P、Q表示兩個隨機變量的概率分布,用KL距離公式計算概率P和概率Q之間的距離為DKL(P||Q)。KL距離具有不對稱性、非負性的特點,DKL(P||Q)≠DKL(Q||P)≥0。 當兩個概率分布完全相同,即P=Q時,DKL(P||Q)=0。
針對KL距離的不對稱特性,將KL公式改進成JS距離公式,首先取兩個概率分布的平均值,分別利用KL公式計算兩個概率分布和其平均值的距離,再對距離之和求平均值,這樣可以更準確地計算兩個概率分布的相似程度。JS距離和KL距離的計算公式分別為
其中,P、Q表示兩個隨機變量的概率分布,R是隨機變量P、Q的均值。
根據主題模型中用戶和主題之間的概率分布,利用JS距離計算方法,可以求出不同用戶之間的興趣相似度。其中,JS距離值越小,用戶主題之間的相似度越大,當兩個對象具有相同的概率分布時,JS距離的值為0。JS距離的倒數表示用戶之間的相似度,則兩個用戶u1、u2之間的相似度可以表示為Sim
針對微博網絡自身的特點,如文本內容短、噪聲數據多、數據稀疏而且數據具有多樣性,LDA在微博網絡中需要做些改進以適應真實網絡的需要。首先由于微博文本短的特點,采取將每個用戶的所有微博作為一個文檔集合對待,再根據用戶興趣隨著時間或在當下社會熱點的改變而改變,將用戶內容選擇最近時間的文檔集合。用戶標簽是用戶在注冊時或在使用過程中添加的用來標示自己身份或者興趣愛好的短文本數據,比如 “90后”、“學生”、“動漫”等?!拔镆灶惥?,人以群分”,不管是在現實生活中還是在虛擬的社會網絡中,用戶往往更傾向于和自己身份相仿、興趣相似的用戶交流?;谶@種現象,對標簽進行處理作為用戶節點的屬性然后加入到模型中,更能真實反映用戶的興趣特征。
根據上文的分析可將LDA在微博中的應用表示為 “用戶—微博—主題—詞語”4層貝葉斯模型。因為標簽數據是以短語的形式進行存儲,且數據準確性較高,故不用對其進行數據預處理,即可直接保存為用戶的屬性集合,稱為用戶層。以用戶ui的所有微博文本集合Ti={t1,t2,…,tn}為一個文檔D。所有的文檔集合定義為微博層,在文檔中產生的用戶的興趣主題定義為興趣層。LDA的圖模型如圖3所示。根據LDA模型,可以求出每個用戶與不同主題之間的概率分布,生成一篇文檔,每一個詞語出現的概率為文檔集中所有詞語和主題的聯合概率分布為
根據聯合概率分布公式,采用吉布斯算法對其進行采樣,可以得到用戶和主題的概率分布。
用戶和主題之間的概率分布矩陣為
其中,T為用戶的微博文檔,z為興趣主題,pw表示兩者的生成概率。
CNM算法是通過對網絡中模塊度的增量最大值來進行聚類的,GN算法[15]是通過反復刪除網絡中邊介數最大的邊,逐步將網絡劃分層次結構。CNM算法比GN算法擁有更好的執行效率,但CNM算法對于檢測較大規模的網絡,可能存在社區劃分不平衡的問題。本文在CNM算法的優點的基礎上,利用用戶相似度距離取代模塊度的增量最大值來對網絡進行社區劃分,此算法簡稱為JSCNM算法。
JSCNM算法的思想是通過用戶節點之間的相似度融合用戶間關系即用戶相似度中心性的變化Cs(i)來替代模塊度增量,根據合并規則對網絡進行聚類劃分,最后形成多個相似用戶社區。其中,根據JS距離公式計算用戶興趣相似度矩陣,然后逐漸根據社區之間相似度的大小來進行合并。
初始化用戶相似度矩陣時需要按照一定的規則進行相似度合并。例如,需要將i和j社區合并成新的i社區,合并之后需要刪除第j列并且更新第i列,本文的合并規則仍然使用CNM算法的合并規則。定義變量eij和ai的值分別為
其中,Cs(i)是節點i的相似度中心性的值,m是網絡中所有節點的中心性值的總和。用相似度取代模塊度增量為
其中,α為調和因子。實驗表明,當α=5時,效果最好。Sim(i,j)是節點i和j的相似度距離,也是節點間概率分布的JS距離的倒數值。
JSCNM算法流程如下。輸入網絡的鄰接矩陣,輸出社區個數、最大模塊度Q。
①利用LDA模型計算出用戶—主題之間的概率分布矩陣。
②利用JS距離公式初始化用戶之間的相似度矩陣S,初始化模塊度增量矩陣ΔQ。
③初始化最大堆H,里面存放模塊度增量矩陣ΔQ中每列的最大值。
④選擇最大堆H中的堆頂元素,參考合并規則公式對增量矩陣最大值對應的行和列來進行合并,更新增量矩陣和大頂堆。
⑤直到所有的節點歸于一個社區,否則繼續執行步驟④。
本文實驗采用網絡爬蟲抓取新浪微博用戶信息及其微博內容??紤]到用戶粉絲數在某種程度上可以反映用戶的性質和重要性,本文隨機爬取用戶粉絲數在50~100、100~150、150~200、200~250的4個用戶作為種子用戶,并進一步地爬取與其有關聯的微博用戶信息和用戶最新的150條微博內容。因為微博中存在許多噪聲數據,例如,一些表情符號、視頻鏈接等。這些噪聲數據不但對分析數據沒有幫助,而且會影響實驗效率,因此需要對噪聲數據進行清洗。在數據預處理部分,利用中科院的分詞工具對微博數據進行去除停用詞、清洗噪聲數據以及對中文進行分詞操作。
對數據集進行預處理,篩選出其中4個用戶集合見表1所列。

表1 4組實驗數據集統計
圖4為4個數據集中各個用戶節點的度大小分布。由圖4可知,大部分用戶節點的度是比較少的,極少數的用戶擁有比較多的關聯用戶,且網絡中用戶度數服從冪律分布的特征。
表2是4個數據集利用改進的LDA主題模型生成的用戶興趣主題的前20個詞語。從表2可以看出,數據集S1中用戶比較關心的是球賽、政治、新聞和娛樂等話題;數據集S2中用戶較為關心的是寵物、科技、經濟和食品安全等話題;數據集S3中用戶比較關注的有救援、動物保護、春游等話題;數據集S4中則關心大學生創業、政治經濟以及和電影有關的話題。
圖5為4個數據集用戶之間的興趣相似度矩陣圖。圖中點的顏色越深,興趣相似度越高。因為本文數據是基于用戶關系爬取的微博文本,所以在興趣相似度比較高。而且可以看出,相似度矩陣沿著對角線有一條明顯的黑線,說明用戶的鄰居用戶之間有較高的相似度。

表2 4個數據集中用戶興趣主題的前20個詞語

表3 3種算法結果對比
通過將本文算法和傳統的CNM算法以及GN算法進行對比,使用模塊度函數作為評價標準,具體結果見表3。從表3可以看出,本文算法的社區劃分比較明顯而且用戶社區的個數較多,用戶分布更加平衡。
本文提出了一種改進的JSCNM聚類算法,利用用戶興趣相似度取代模塊度增量對其改進,從而實現了用戶關系和用戶內容雙內聚來劃分社區的效果。使用適合微博網絡的主題模型LDA對用戶興趣主題進行識別,采用優化的KL距離公式計算用戶之間的相似度,在真實數據集上進行凝聚實現社區劃分。通過算法的對比實驗,證明了該算法流程的科學性、合理性,且實驗結果也較為理想。但是因為數據是大規模的文本集,在整個流程中消耗了許多時間資源,如何利用好的模型算法在準確劃分社區的同時提高實驗效率,將是下一步的研究內容。
[1]丁連紅,時鵬.網絡社區發現[M].北京:化學工業出版社.2008.
[2]WATTSD J,STROGATZ SH.Collective dynamics of small-world networks[J].Nature,1998,393(6684):440-442.
[3]BARABASI A L,ALBERT R.Emergence of scaling in random networks[J].Science,1999,286(5439):509-512.
[4]蔡波斯,陳翔.基于行為相似度的微博社區發現研究[J].計算機工程,2013,39(8):55-59.
[5]范超然,黃曙光,李永成.微博社交網絡社區發現方法研究[J].技術與方法,2012,(23):67-70.
[6]段煉,朱欣焰.基于社區時空主題模型的微博社區發現方法[J].電子科技大學學報,2014,43(3):464-469.
[7]閻春霖,張延園.基于用戶標簽的社區發現方法研究[J].科學技術與工程,2011,11(6):1237-1240.
[8]閆光輝,舒昕.基于主題和鏈接分析的微博社區發現算法[J].計算機應用研究,2013,30(7):1593-1597.
[9]周小平,梁循.基于R-C模型的微博用戶社區發現[J].軟件學報.2014,25(12):2808-2823.
[10]NEWMAN M E J,GIRVAN M.Finding and evaluating community structure in networks[J].Physical Review E,2004,69(2):026113.
[11]NEWMAN M E J.Fast algorithm for detecting community structure in networks[J].Physical Review E,2004,69(6):066133.
[12]BLEID M,NG A Y,JORDAN M I.Latent dirichlet allocation[J].Journal of Machine Learning Research,2003,(3):993-1033.
[13]LIN J.Divergence measures based on the shannon entropy[J].IEEE Transactions on Information Theory,1991,37(1):145-151.
[14]KULLBACK S.Letter to the editor:the kullback-leibler distance[J].The American Statistician,1987,41(4):338-341.
[15]GIRVAN M,NEWMANM E J.Community structure in social and biological networks[A].Proceedings of the National Academy of Sciences[C].2002,99(12):7821-7826.