本發(fā)明屬于數(shù)據(jù)挖掘技術(shù)領(lǐng)域,具體涉及一種帶屬性社交網(wǎng)絡(luò)重疊社區(qū)劃分方法,可用于用戶畫像、個性化推薦和自動好友分類。
背景技術(shù):
社區(qū)結(jié)構(gòu)是復(fù)雜網(wǎng)絡(luò)的一個重要屬性,它是指網(wǎng)絡(luò)可以劃分成很多社區(qū),社區(qū)內(nèi)的點緊密相連,社區(qū)間的點連接稀疏。同一社區(qū)內(nèi)的點往往具有相似的性質(zhì),可以提供重要的信息。社區(qū)檢測就是發(fā)現(xiàn)隱藏在網(wǎng)絡(luò)中的社區(qū)結(jié)構(gòu),其對理解網(wǎng)絡(luò)的功能,探索隱藏在網(wǎng)絡(luò)中的信息,追蹤網(wǎng)絡(luò)的行為有重要意義。近年來,隨著facebook、twitter、微信、google+等社交網(wǎng)絡(luò)的飛速發(fā)展,針對社交網(wǎng)絡(luò)的社區(qū)發(fā)現(xiàn)方法迫切需求。
針對社交網(wǎng)絡(luò)社區(qū)發(fā)現(xiàn)問題,已經(jīng)存在多種不同的優(yōu)化算法。girvan等人于2002年提出了基于分割邊介數(shù)的社區(qū)檢測方法gn,該方法與類似算法相比其運行速度大為改進。newman于2004年提出了極大化網(wǎng)絡(luò)模塊度q函數(shù)的算法fn,至此q成為了評價社區(qū)檢測的重要指標(biāo)。上述的這些算法只關(guān)注了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。然而,與一般網(wǎng)絡(luò)相比,社交網(wǎng)絡(luò)擁有更豐富的信息。社交網(wǎng)絡(luò)中的用戶除了擁有豐富的邊連接關(guān)系之外,還擁有豐富的屬性信息,比如:年齡,愛好,高中畢業(yè)學(xué)校,職業(yè),政治立場等。邊連接關(guān)系是一種強關(guān)系,若有邊相連的兩個用戶,則說明他們屬于一個圈子。而屬性是一種弱關(guān)系,屬于同一個圈子的用戶往往在某些屬性上趨于一致,因此結(jié)構(gòu)和屬性信息對于社區(qū)發(fā)現(xiàn)來說都是有用信息。
近年來,國內(nèi)外學(xué)者提出了一些同時考慮結(jié)構(gòu)和屬性信息的社區(qū)發(fā)現(xiàn)算法。例如zhou等人提出了sa-cluster算法,其將屬性信息作為節(jié)點對網(wǎng)絡(luò)進行擴充,構(gòu)建了隨機游走模型來評價節(jié)點的緊密度。但是該方法需要事先指定社區(qū)個數(shù),而社區(qū)的數(shù)目在真實的網(wǎng)絡(luò)中通常是未知的。dang等人提出了算法sac1和sac2,這兩種算法均設(shè)計了兩個函數(shù)來評價網(wǎng)絡(luò)的結(jié)構(gòu)和屬性相似度,并通過對兩個目標(biāo)加權(quán)求和轉(zhuǎn)化為單目標(biāo)來優(yōu)化。然而,該方法需要人工指定目標(biāo)權(quán)重,收斂速度慢。
上述的所有算法都沒有考慮社區(qū)的重疊關(guān)系,而社交網(wǎng)絡(luò)中的一個人可以屬于多個圈子,因而不能更好的實現(xiàn)微信和facebook網(wǎng)絡(luò)中的自動好友分類。
為此,liu等人于2010年提出了一個基于多目標(biāo)進化的重疊社區(qū)檢測算法,其應(yīng)用了基于排列的編碼方式,從而可以獲得重疊社區(qū)劃分,但該方法由于沒有考慮節(jié)點的屬性信息,不適用于帶屬性社交網(wǎng)絡(luò)社區(qū)劃分。
綜上,現(xiàn)有技術(shù)針對社交網(wǎng)絡(luò)由于沒有同時考慮節(jié)點的屬性信息和社區(qū)之間的重疊關(guān)系,因而得到的網(wǎng)絡(luò)劃分不準(zhǔn)確。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于針對上述現(xiàn)有技術(shù)的不足,提出一種基于多目標(biāo)進化的帶屬性社交網(wǎng)絡(luò)社區(qū)劃分方法,以提高網(wǎng)絡(luò)劃分的準(zhǔn)確性。
本發(fā)明的技術(shù)思路是:針對社交網(wǎng)絡(luò)的屬性信息,對多目標(biāo)優(yōu)化算法moea/d進行改進,構(gòu)建了屬性相似度函數(shù)sa,應(yīng)用局部貪婪的思想,設(shè)計局部結(jié)構(gòu)和屬性相似度最優(yōu)的解碼方式,獲得有實際意義的重疊社區(qū);并通過優(yōu)化兩個目標(biāo)函數(shù)eq和sa,獲得高度準(zhǔn)確的社區(qū)劃分。
根據(jù)上述思路,本發(fā)明的技術(shù)方案包括如下操作:
(1)設(shè)定參數(shù):即設(shè)定種群中染色體的個數(shù)m為100,最大迭代次數(shù)g為1000,種群中染色體的鄰居個數(shù)tn為20,網(wǎng)絡(luò)中節(jié)點的個數(shù)表示為n;
(2)初始化種群:將迭代次數(shù)t的初始設(shè)置為1,應(yīng)用基于排列的編碼表示,隨機生成m個染色體,記為a(p1),a(p2),…,a(pj),…a(pm),其中a(pj)表示種群中第j個染色體,j=1,2……m;
(3)基于局部結(jié)構(gòu)和屬性緊密度對種群中的染色體a(pj)進行解碼,生成具有重疊的社區(qū)劃分a(cj);
(4)構(gòu)建屬性相似度函數(shù)sa為:
其中,z表示第z個社區(qū),s(a,b)表示節(jié)點a和節(jié)點b的余弦相似度,rz代表社區(qū)z中節(jié)點的個數(shù);
(5)利用拓展模塊度函數(shù)eq和屬性相似度函數(shù)sa,利用如下公式分別計算m個社劃分適應(yīng)度函數(shù)f:f=λt×|eq-ft|+λa×|sa-fa|,
其中,ft代表當(dāng)前種群中所有個體的拓展模塊度函數(shù)eq最優(yōu)值,fa代表當(dāng)前種群中所有個體的屬性相似度函數(shù)sa最優(yōu)值,ft和fa初始化為無窮小,λt代表結(jié)構(gòu)緊密度權(quán)重,λa代表屬性相似度權(quán)重;
(6)產(chǎn)生新的染色體,生成新的種群:
(6a)初始化j為1,在a(pj)鄰居內(nèi)隨機選兩個染色體作為父代染色體a(pj1)和
(6b)對兩個父代新染色體a(pj1)和
(6c)對兩個新染色體
(6d)將步驟(6b)與步驟(6c)的結(jié)果進行對比:如果f3大于f1,則用
(6e)對a(pj)染色體實施轉(zhuǎn)換基因位變異,生成一個新染色體
(6f)對a(pj)解碼生成社區(qū)劃分a(cj),利用步驟(4)的公式計算其屬性相似度,并計算其拓展模塊度,再利用步驟(5)中的公式計算其適應(yīng)度f6;
(6g)對新染色體
(6h)將步驟(6f)與步驟(6g)的結(jié)果進行對比:如果f5大于f6,則用
(6i)判斷j是否等于m,若是,執(zhí)行步驟(7);否則,令j=j(luò)+1,返回步驟(6a);
(7)判斷t是否等于g,如果是,輸出社區(qū)的劃分結(jié)果;否則,令t=t+1,返回步驟(6);
本發(fā)明與現(xiàn)有的技術(shù)相比具有以下優(yōu)點:
1.本發(fā)明由于設(shè)計了評價屬性相似度的目標(biāo)函數(shù)sa,可有效處理社交網(wǎng)絡(luò)中的屬性信息。
2.本發(fā)明由于采用基于局部結(jié)構(gòu)和屬性相似度相結(jié)合的解碼方式??色@得有實際意義的重疊社區(qū)。
3.本發(fā)明由于將多目標(biāo)算法應(yīng)用于帶屬性社交網(wǎng)絡(luò)社區(qū)劃分中,并通過優(yōu)化eq和sa兩個目標(biāo)函數(shù),提高了社區(qū)劃分的準(zhǔn)確性。
附圖說明
圖1是本發(fā)明的實現(xiàn)流程圖;
圖2是本發(fā)明對實驗數(shù)據(jù)仿真結(jié)果顯示圖。
具體實施方式
以下結(jié)合附圖,對本發(fā)明的技術(shù)方案和效果作進一步詳細(xì)描述。
參照圖1,本發(fā)明的實施步驟如下:
步驟1.設(shè)定參數(shù)。
設(shè)定種群中染色體的個數(shù)m為100,最大迭代次數(shù)g為1000,種群中染色體的鄰居個數(shù)tn為20,染色體中基因的個數(shù)表示為n。
步驟2.初始化種群。
將迭代次數(shù)t的初始設(shè)置為1,應(yīng)用基于排列的編碼表示,隨機生成m個染色體,記為a(p1),a(p2),…,a(pj),…a(pm),其中a(pj)表示種群中第j個染色體,j=1,2……m,例如,如果n=5,a<pj>的排列有多種形式,其中一種排列為<2,3,1,5,4>,另一種排列為<1,3,2,5,4>;同理,如果n=6,a<pj>的一種排列為<2,3,1,5,4,6>,另一種排列為<1,6,3,2,5,4>。
步驟3.基于局部結(jié)構(gòu)和屬性緊密度對種群中的染色體a(pj)進行解碼,生成具有重疊的社區(qū)劃分a(cj)。
(3a)令社區(qū)集合為c,并初始為空,cz表示第z個社區(qū),z=1,2,……|c|,|c|表示c中社區(qū)的個數(shù);
(3b)初始化i為1,在染色體a(pj)中選取第i個基因;
(3c)依次遍歷1到|c|個社區(qū),將第i個基因放入cz中;
(3d)利用如下公式分別計算基因i加入cz社區(qū)前的局部結(jié)構(gòu)緊密度ql1和基因i加入cz社區(qū)后的局部結(jié)構(gòu)緊密度ql2:
其中,kincz和koutcz分別表示cz社區(qū)內(nèi)部的所有點的內(nèi)度和外度;
(3e)利用如下公式分別計算基因i加入cz社區(qū)前的局部屬性緊密度sl1和基因i加入cz社區(qū)后的局部屬性緊密度sl2:
其中,s(a,b)表示節(jié)點a與節(jié)點b之間的屬性相似度,rcz代表社區(qū)z中節(jié)點的個數(shù);
(3f)比較基因i加入cz社區(qū)前后ql和sl的值,用p表示(0,1)之間的隨機數(shù):若不滿足(p<0.5且sl2>sl1)或(p<0.8且ql2>ql1)或(ql2>ql1且sl2>sl1),則在社區(qū)cz中移出基因i,否則,不移出;
(3g)判斷基因i是否被加入社區(qū),若不是,則構(gòu)建新社區(qū)cz+1,并將i加入cz+1,否則,不構(gòu)建;
(3h)判斷節(jié)點i是否等于基因的個數(shù)n,若是,解碼結(jié)束,否則,返回步驟(3b)。
步驟4.構(gòu)建屬性相似度函數(shù)sa為:
其中,z表示第z個社區(qū),s(a,b)表示節(jié)點a和節(jié)點b的余弦相似度,rz代表第z個社區(qū)中節(jié)點的個數(shù)。
步驟5.構(gòu)建適應(yīng)度函數(shù)。
構(gòu)建適應(yīng)度函數(shù),首先需要計算模塊度函數(shù)eq和屬性相似度函數(shù)sa,其中拓展模塊度函數(shù)eq的計算公式如下:
式中,m表示網(wǎng)絡(luò)中邊的個數(shù),z表示第z個社區(qū),ov表示節(jié)點v所屬社區(qū)的個數(shù),ow表示節(jié)點w所屬于社區(qū)的個數(shù),kv表示節(jié)點v的度,kw表示節(jié)點w的度,avw表示節(jié)點v和節(jié)點w的邊連接關(guān)系,當(dāng)節(jié)點v和節(jié)點w之間存在邊連接時,則avw的取值為1,否則,其值為0;
利用拓展模塊度函數(shù)eq和屬性相似度函數(shù)sa,得到計算m個社區(qū)劃分適應(yīng)度函數(shù)f:
f=λt×|eq-ft|+λa×|sa-fa|,
其中,ft代表當(dāng)前種群中所有個體的拓展模塊度函數(shù)eq最優(yōu)值,fa代表當(dāng)前種群中所有個體的屬性相似度函數(shù)sa最優(yōu)值,ft和fa初始化為無窮小,λt代表結(jié)構(gòu)緊密度權(quán)重,λa代表屬性相似度權(quán)重。
步驟6.產(chǎn)生新的個體,生成新的種群。
(6a)初始化j為1,在a(pj)鄰居內(nèi)隨機選兩個染色體作為父代染色體a(pj1)和
(6b)對兩個父代染色體a(pj1)和
(6c)對兩個父代新染色體
(6d)將步驟(6b)與步驟(6c)的結(jié)果進行對比:如果f3大于f1,則用
(6e)對a(pj)染色體實施轉(zhuǎn)換基因位變異,生成一個變異后的新染色體
(6f)對a(pj)進行解碼,生成第5個社區(qū)劃分
(6g)對變異后的新染色體
(6h)將步驟(6f)與步驟(6g)的結(jié)果進行對比:如果f6大于f5,則用
(6i)判斷j是否等于m,若是,執(zhí)行步驟(7);否則,令j=j(luò)+1,返回步驟(6a)。
步驟7.判斷t是否等于g,如果是,輸出社區(qū)的劃分結(jié)果;否則,令t=t+1,返回步驟(6)。
本發(fā)明的效果可以通過仿真實驗進行驗證:
1.實驗條件
1.1)實驗環(huán)境:處理器為intel(r)core(tm)i3cpu550@3.2ghz3.19ghz,內(nèi)存為3.05gb,硬盤為1t,操作系統(tǒng)為microsoftwindows7,編程環(huán)境為visiostudio2012。
1.2)實驗數(shù)據(jù):
美國政治圖書網(wǎng):該網(wǎng)絡(luò)是亞馬遜網(wǎng)站政治圖書間的關(guān)系圖,每本書具有屬性政治派系,可取值為:保守,自由,中立。
facebook自我網(wǎng)絡(luò)數(shù)據(jù)集:該數(shù)據(jù)集包含10個自我網(wǎng)絡(luò),共有193個圈子和4039個用戶。自我網(wǎng)是由一個用戶的所有好友組成的網(wǎng)絡(luò)。其中,這10個自我網(wǎng)絡(luò)中的用戶都擁有多個屬性,屬性維度是42到576。所有屬性已通過獨熱編碼預(yù)處理。
上述所有帶屬性網(wǎng)絡(luò)的匯總信息見表1。
表1實驗數(shù)據(jù)的統(tǒng)計信息
2.評價指標(biāo):
2.1)用社區(qū)緊密度t用于評價社區(qū)內(nèi)結(jié)構(gòu)的優(yōu)劣,其計算公式如下:
其中,m表示網(wǎng)絡(luò)中邊的個數(shù),z表示第z個社區(qū),ov表示節(jié)點v所屬于社區(qū)的個數(shù),ow表示節(jié)點w所屬于社區(qū)的個數(shù),avw表示節(jié)點v和節(jié)點w的邊連接關(guān)系,當(dāng)節(jié)點v和節(jié)點w之間存在邊連接時,則avw的取值為1,否則,其值為0;
2.2)用熵e評價社區(qū)內(nèi)屬性的同質(zhì)性,其計算公式如下:
其中,z表示第z個社區(qū),d表示屬性維數(shù),d代表第d個屬性,rz表示第z個社區(qū)中節(jié)點的個數(shù),
t越大代表社區(qū)內(nèi)節(jié)點連接越緊密,e越小代表社區(qū)內(nèi)節(jié)點屬性更同質(zhì)。
3.實驗內(nèi)容和結(jié)果分析
實驗1.針對表1中的六個網(wǎng)絡(luò),分別用本發(fā)明進行社區(qū)劃分,對每個網(wǎng)絡(luò),獨立重復(fù)運行30次并取平均值,其結(jié)果如圖2所示。其中,圖2(a)表示劃分的politicalbooks網(wǎng)絡(luò),圖2(b)表示劃分的ego_0網(wǎng)絡(luò),圖2(c)表示劃分的ego_107網(wǎng)絡(luò),圖2(d)表示劃分的ego_1684網(wǎng)絡(luò),圖2(e)表示劃分的ego_1912網(wǎng)絡(luò),圖2(f)表示劃分的ego_3437網(wǎng)絡(luò)。
從圖2中可以看出,eq在所有網(wǎng)絡(luò)中的值都大于0.3,表明本發(fā)明所得劃分具有明顯的社區(qū)結(jié)構(gòu)。sa在所有網(wǎng)絡(luò)中的值都達到0.001,表明本發(fā)明很好的平衡了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和節(jié)點的屬性信息,提高了社區(qū)劃分的準(zhǔn)確性。
實驗2.為了評價本發(fā)明所得劃分的質(zhì)量,分別對每個網(wǎng)絡(luò)計算密度t和熵e,結(jié)果見表2。
表2每個網(wǎng)絡(luò)的密度t和熵e
從表2中可以看出,本發(fā)明的在每個網(wǎng)絡(luò)中密度t的平均值都大于0.6,表明本發(fā)明所得劃分具有明顯的社區(qū)結(jié)構(gòu),而其標(biāo)準(zhǔn)差都小于0.12,表明本發(fā)明涉及的方法具有很好的穩(wěn)定性。所有網(wǎng)絡(luò)熵e的最小值都小于0.3,而其標(biāo)準(zhǔn)差都小于0.01,表明本發(fā)明所得社區(qū)劃分其內(nèi)部屬性是高度同質(zhì)且穩(wěn)定的。