• 沒有找到結果。

第三章 方法描述和實作

3.1 分群演算法(Cluster Algorithm)

3.1.2 分群演算法

立 政 治 大 學

Na tiona

l Ch engchi University

19 圖 3.3:每群影響力 Top1 的節點存放圖

如上圖所示,在我們分完群之後會計算每個群內節點在各自群內的影響力期望值,

並且取出每個群裡 Top1 影響力期望值的節點,接著使用動態規劃法找出最佳解。

3.1.2 分群演算法

在此一章節中,我們將介紹兩種不同的分群方法,並且比較此兩種分群方法的計算 時間和造成的影響力。我們所採取的分群演算法是改良[10]所使用的分群演算法(SCAN Cluster algorithm),以及我們自己提出的機率分群演算法(High-Probability Cluster algorithm)。以下將介紹兩種演算法的分群流程:

(一)[10]是利用每個節點在社群網路上的節點結構當做是否將節點分在同一個群 內的依據,如果兩個節點的鄰居節點成員很相似的話,代表此兩個節點被分在同一個群 的機會很大。剛好符合我們分群的概念,也就是將社群網路分成幾個不同的團體,團體 中的人會互相認識,而團體跟團體之間互相認識的情況就比較少。

以下定義我們在分群演算法裡使用到的專有名詞:

定義一(節點結構)

令節點 v  V,我們可以從節點 v 的鄰居節點來定義 v 在社群網路上的結構,定義成

(v),是節點 v 所有的鄰居節點與節點 v 的聯集。(v)={w  V|(v,w)  E}{v}

變數說明如下:

V 為社群網路上的所有節點。

定義六(OUTLIER)

對於社群網路上的任何一個節點而言,此節點與其所有鄰居節點的結構相似度皆沒有超 過門檻值,且此節點的所有鄰居節點皆不屬於任何一個群或者皆只屬於一個群,我們

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

21

就設定此節點為一個 OUTLIER。OUTLIER 為社群網路上的獨立節點,並不屬於任何一個 群。

定義七(DirREACH,(y,x))

對一個核心節點 v 來說,節點 y 為核心節點 v 的-鄰居,如果節點 x 為節點 y 的-鄰 居,則將節點 x 加入以核心節點 v 發展的群中。

表 3.1:SCAN Cluster algorithm

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

22

在分群的過程中,我們會先記錄每個節點在社群網路中的節點結構,然後計算節點 與此節點鄰近節點的結構相似度。當一個節點的-鄰居超過門檻值時我們就把此節點 當做是一個核心節點,從此節點開始發展一個群。當我們找到一個核心節點時,首先先 判斷核心節點周圍的鄰居與核心節點的結構相似度是否有超過門檻值,有的話就先將 此鄰居與核心節點放到同一個群裡,接著再計算鄰居節點與它鄰近點的結構相似度,如 果相似度大於門檻值,就加入同一個群內。以此類推把所有的社群網路上的節點都分 類到屬於自己的群裡。當所有的節點都已經計算完之後,沒有被分到群裡的節點就會被 列為 HUB 或者是 OUTLIER。當所有節點都分群完之後,我們也會將 HUB 和 OUTLIER 分到 群裡,我們會根據 HUB 以及 OUTLIER 的鄰居節點多數屬於哪群來決定 HUB 以及 OUTLIER 應該被分到哪群內。舉例來說:當 HUB 有 5 個鄰居節點的時候,如果有其中三個鄰居節 點屬於同一群時,那我們就會將 HUB 分入那三個鄰居節點屬於的分群中。

此演算法原先在設計的時候,節點和節點之間的連線並沒有機率的概念,也就是說 節點跟節點之間有連線就是代表機率為 1,沒有連線就代表機率為 0。不過在我們的社 群網路模型中,節點跟節點之間的連線是有機率的因素存在,因此在分群的時候我們會 對連線的機率設定一個門檻值 T,將機率大於 T 的連線視為機率為 1,機率小於 T 的連 線機率為 0,然後再進行分群的動作,因此在我們的實驗中我們也會比較如何設定門檻 值 T 可以達到最好的分群效果。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

23

圖 3.4:機率性社群網路模型圖

如上圖所示,目前有一個社群網路,每個節點之間的連線都存在一個機率,代表的是兩 個節點互相影響的機率。當我們設定一個門檻值 T 為 0.5 時,代表只保留機率為 0.5 以 上的連線,刪除機率為 0.5 以下的連線。經過門檻值 T 的篩選之後,可以得到下圖。我 們去除了機率為 0.5 以下的連線,只保留機率為 0.5 以上的連線,並且利用此圖進行我 們的分群演算法。

圖 3.5:經門檻值 T 篩選後的社群網路模型圖

此分群演算法的分群精神在於利用兩個節點所擁有的共同鄰居節點判斷兩個節點是 否應該分在同一個群裡,與我們在計算影響力時希望不要影響到重複的節點有相同的作 用,因此很適合拿來做社群網路的分群。

(二)第二種分群方法是由我們自己提出的機率分群演算法,此分群演算法的目的

0.4 0.3 0.6

0.7

0.5

0.7 0.7

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

24

是希望可以控制分群的數目,並且可以知道群內的節點數量。透過控制分群的數目,我 們可以有效的知道可以減少多少計算時間,藉由調整分群的數目,在計算時間和影響力 上取得一個平衡。此機率分群演算法會挑選機率高的邊所連接的節點放入同一群,重複 此一步驟直到所有節點都分到各自的群內為止。

變數說明如下:

N:社群網路上的節點數量 m:分群的數量

EPh:社群網路上機率最高的邊

EPh(v,u):由最高機率的邊所連接的兩個節點

NeighEPh(v,x):節點 v 和其周圍相連機率最高的節點 x

表 3.2:High-Probability cluster algorithm

我們假設社群網路上有 N 個節點,而我們將社群網路分成 m 群,因此每群內會有 N/m

SCAN Cluster High-probability cluster

分群數量 不可控制 可控制 algorithm 分群時,沒有辦法事先得知分群的數量以及分群內的節點數量。但此演算法 有比較高的分群係數,代表使用此演算法分群之後群內會有比較多的連結,在計算影響 力的時候也會有比較好的結果。但使用 High-probability cluster algorithm 分群時 可以控制分群的數量以及群內的節點數量,所以當我們使用此演算法將社群網路分群 時,分的越多群我們在計算影響力時所花的時間也會越少,但並不能夠保證選出來的節 點有較高的影響力。

相關文件