和改進,這些都屬于本發(fā)明的保 護范圍。
[0040] 實施例
[0041] 本實施例提供了一種整合結(jié)構(gòu)聚類和屬性分類的多目標社區(qū)發(fā)現(xiàn)方法,包括如下 步驟:
[0042] 步驟S1、建立待分析網(wǎng)絡的鄰接矩陣A和屬性矩陣B:為網(wǎng)絡所有節(jié)點進行連續(xù)編 號,編號從1開始;建正方形鄰接矩陣A,鄰接矩陣A中的元素為1代表對應節(jié)點之間有 邊相連,為〇代表對應節(jié)點之間不存在邊;構(gòu)建屬性矩陣B,屬性矩陣B中的元素盡廣^代表 第i個節(jié)點的第j個屬性值為% ;
[0043] 步驟S2、構(gòu)建衡量社區(qū)劃分結(jié)構(gòu)質(zhì)量的目標函數(shù)模塊度:
[0045] 其中,X是網(wǎng)絡的社區(qū)劃分,匕是社區(qū)劃分中的社區(qū),1表示節(jié)點i的度,m表示網(wǎng) 絡總的邊數(shù);
[0046] 步驟S3、構(gòu)建衡量社區(qū)劃分屬性質(zhì)量的目標函數(shù)均質(zhì)性
[0047] 其中,'表示社區(qū)劃分X關(guān)于第j個屬性均質(zhì)性的權(quán)重,〃.、,(%)表示社區(qū)劃分X 關(guān)于第j個屬性的均質(zhì)性,t為屬性的數(shù)量;
[0048] 所述的步驟S3,具體為:
[0049] 步驟S31、計算社區(qū)Gi內(nèi)的節(jié)點取屬性值6丨的偽頻率:
其中h表示 社區(qū)&內(nèi)的節(jié)點數(shù),%表示社區(qū)&內(nèi)節(jié)點取屬性值%的數(shù)量,q表示第j個屬性取該屬性 的第q個屬性值;
[0050] 步驟S32、計算社區(qū)劃分X關(guān)于屬性h的偽分類熵:
[0052] 步驟S33、計算社區(qū)劃分X關(guān)于第j個屬性的均質(zhì)性式= +1)-PC£;;(Z), 其中七表示屬性能夠取值的個數(shù);
[0053] 步驟S34、計算社區(qū)劃分X關(guān)于第j個屬性的均質(zhì)性的權(quán)重:
,其中
,表示屬性t在網(wǎng)絡G中的熵;
[0054] 步驟S4、初始化網(wǎng)絡社區(qū)劃分種群;
[0055] 所述的步驟S4,具體為:
[0056] S41、采用基于鄰接位置的編碼法編碼社區(qū)劃分個體,即劃分個體有N個基因,其 中N為網(wǎng)絡節(jié)點總數(shù),每個基因?qū)粋€節(jié)點,每個基因從范圍{1,2,......,N}中取一個 等位基因值,表示該基因?qū)墓?jié)點和等位基因?qū)墓?jié)點之間有邊相連;屬于同一個連 通部分的節(jié)點被分配到一個社區(qū);設定種群大小SD,設定種群進化迭代次數(shù)6_,初始化種 群代數(shù)g= 〇 ;
[0057] 步驟S42、生成SD個個體,每個個體的每個基因的取值限制為其對應節(jié)點的鄰居節(jié) 點,從而確保初始化的社區(qū)劃分中每個社區(qū)是連通的;
[0058] 步驟S5、使用交叉和變異操作更新社區(qū)劃分種群;
[0059] 所述的步驟S5,具體為:
[0060] 步驟S51、定義個體之間的支配關(guān)系,一個個體a支配另一個個體b表示個體a至 少在一個目標函數(shù)上優(yōu)于個體b并且在所有目標函數(shù)上都不弱于個體b,根據(jù)支配關(guān)系找 出群體中所有支配個體,支配個體表示種群中最好的一部分個體;定義擁擠距離衡量社區(qū) 劃分個體在種群中所處位置的密度,所處位置稀疏的個體具有更強的代表性和多樣性,生 成更好的個體的可能性更大,按擁擠距離降序選取前SD個支配個體組成支配種群,復制支 配種群生成外部支配種群,用于保留該種群中的優(yōu)秀個體;
[0061] 步驟S52、對支配種群進行交叉操作,從支配種群中隨機選擇兩個社區(qū)劃分作為交 叉操作的父個體,隨機生成一個長度N的二進制向量,根據(jù)該二進制向量交叉兩個父個體 生成一個子個體,重復該過程SD次,所有新生成的子個體組成交叉社區(qū)劃分種群;
[0062] 步驟S53、對交叉社區(qū)劃分種群進行變異操作,對交叉社區(qū)劃分種群中的每個個體 進行變異,對個體中的每個節(jié)點,以變異概率將其等位基因值改變?yōu)樵摴?jié)點的任一鄰居節(jié) 點,所有變異個體組成社區(qū)劃分子種群;
[0063] 步驟S6、組合社區(qū)劃分子種群和外部支配種群,生成下一代種群Bg,設置種群代數(shù) g的值增加1,如果g<G_,則返回步驟S5繼續(xù)迭代,否則進行步驟S7 ;
[0064] 步驟S7、找出最終的社區(qū)劃分種群1中的所有支配社區(qū)劃分,計算每個支配社區(qū) 劃分的模塊度和均質(zhì)性,根據(jù)具體應用及模塊度和均質(zhì)性的值選擇社區(qū)劃分。
[0065] 為使本實施例要解決的技術(shù)問題、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對 本實施例進行詳細描述。
[0066] 如圖1所示,本實施例提供的整合結(jié)構(gòu)聚類和屬性分類的多目標社區(qū)發(fā)現(xiàn)方法, 包括如下步驟:
[0067] 步驟S1,建立待分析網(wǎng)絡的鄰接矩陣A和屬性矩陣B:為網(wǎng)絡所有節(jié)點進行連續(xù)編 號,編號從1開始;構(gòu)建正方形鄰接矩陣A,矩陣中元素為1代表對應的節(jié)點之間有邊相 連,為〇代表對應的節(jié)點之間不存在邊;構(gòu)建屬性矩陣B,矩陣中元素^ - %代表節(jié)點i的 第j個屬性的值為% ;
[0068] 步驟S2,構(gòu)建衡量社區(qū)劃分結(jié)構(gòu)質(zhì)量的目標函數(shù)模塊度:
[0070] 其中,X是網(wǎng)絡的社區(qū)劃分,匕是社區(qū)劃分中的社區(qū),ki表示第i個節(jié)點的度,m表 示網(wǎng)絡總的邊數(shù);模塊度值越大,表示該社區(qū)劃分在結(jié)構(gòu)上劃分質(zhì)量越好。
[0071] 步驟S3,構(gòu)建衡量社區(qū)劃分屬性質(zhì)量的目標函數(shù)均質(zhì)性:
[0072] 其中,' 表示社區(qū)劃分X關(guān)于第j個屬性均質(zhì)性的權(quán)重,〃/、#)表示社區(qū)劃分X 關(guān)于第j個屬性的均質(zhì)性,t為屬性的數(shù)量;
[0073] 為了計算//4;(X),首先計算社區(qū)匕內(nèi)節(jié)點取屬性值g的偽頻率
,其 中h表示社區(qū)Gi內(nèi)的節(jié)點數(shù),崎表示社區(qū)匕內(nèi)節(jié)點取屬性值%的數(shù)量;接著計算社區(qū)劃分X關(guān)于屬性h的偽分類熵:
;最后計算社區(qū)劃分X關(guān)于第j 個屬性的均質(zhì)性:仏,(義)=InW, + 1)-八:中dj表示屬性b」能夠取值的個數(shù);
[0074] 社區(qū)劃分X關(guān)于第j個屬性的均質(zhì)性的權(quán)重的計算公式為:
,其中
,表示屬性t在網(wǎng)絡G中的熵。
[0075] 步驟S4,初始化網(wǎng)絡社區(qū)劃分種群;采用基于鄰接位置的編碼法編碼社區(qū)劃分個 體,即劃分個體有N個基因,其中N為網(wǎng)絡節(jié)點總數(shù),每個基因?qū)粋€節(jié)點,每個基因從范 圍{12,......,N}中取一個等位基因值,表示該基因?qū)墓?jié)點和等位基因?qū)墓?jié)點之 間有邊相連;屬于同一個連通部分的節(jié)點被分配到一個社區(qū);圖2用一個具有7個節(jié)點的 實例網(wǎng)絡說明該編碼方式,右邊的連通結(jié)構(gòu)對應于中間的編碼,因此該編碼將網(wǎng)絡劃分成 了兩個社區(qū);
[0076] 設定種群大小SD,設定種群進化迭代次數(shù)G_,初始化種群代數(shù)g = 0 ;生成SD個 個體,每個個體的每個基因的取值限制為其對應節(jié)點的鄰居節(jié)點,從而確保初始化的社區(qū) 劃分中每個社區(qū)是連通的。
[0077] 步驟S5,使用交叉和變異操作更新社區(qū)劃分種群;定義個體之間的支配關(guān)系,一 個個體a支配另一個個體b表示個體a至少在一個目標函數(shù)上優(yōu)于個體b并且在所有目標 函數(shù)上都不弱于個體b,根據(jù)支配關(guān)系找出群體中所有支配個體,支配個體表示種群中最好 的一部分個體;定義擁擠距離衡量社區(qū)劃分個體在種群中所處位置的密度,所處位置稀疏 的個體具有更強的代表性和多樣性,更有可能生成更好的個體,按擁擠距離降序選取前S D 個支配個體組成支配種群,復制支配種群生成外部支配種群,用于保留該種群中的優(yōu)秀個 體;
[0078] 對支配種群進行交叉操作,從支配種群中隨機選擇兩個社區(qū)劃分作為交叉操作的 父個體,隨機生成一個長度N的二進制向量,根據(jù)該二進制向量交叉兩個父個體生成一個 子個體,從第一個父個體中選取那些處在隨機二進制向量為1的位置處的基因,從第二個 父個體中選取那些處在隨機二進制向量為〇的位置處的基因,按原位置交叉選取的兩組基 因組成子個體;重復該過程S D次,所有新生成的子個體組成交叉社區(qū)劃分種群;
[0079] 對交叉社區(qū)劃分種群進行變異操作,對交叉社區(qū)劃分種群中的每個個體進行變 異,對個體中的每個節(jié)點,以變異概率將其等位基因值改變?yōu)樵摴?jié)點的任一鄰居節(jié)點,所有 變異個體組成社區(qū)劃分子種群。
[0080] 步驟S6,組合社區(qū)劃分子種群和外部支配種群,生成下一代種群Bg,設置種群代數(shù) g的值增加1,如果g < G_,則返回步驟S5,否則進行步驟S7。
[0081] 步驟S7,找出最終的社區(qū)劃分種群1中的所有支配社區(qū)劃分,計算每個支配社區(qū) 劃分的模塊度和均質(zhì)性,根據(jù)具體應用及模塊度和均質(zhì)性的值選