• 沒有找到結果。

Modified k-means 為主之演算法

第四章 節點分群與加邊之演算法

4.1 三種節點分群演算法

4.1.2 Modified k-means 為主之演算法

k-means 為一種傳統且在資料探勘中相當重要的分群方法,此方法主要的概 念是將一群未分類的資料,依照事先訂定的群數及條件,分成若干群,如圖 16。圖 16(a)中有數筆未分類的資料,假設現在希望將這些資料分成三群,故隨 機挑選三個節點當作重心(centroid);接著計算每一筆資料與這些重心的距離,

並與重心距離最近的資料分為一群,如圖 16(b);當分群完後再從新計算每群的 重心位置,並重複上一個步驟,重新分群,如圖 16(c);當重心位置不再更動 時,則分群工作即完成,最後結果如圖 16(d)。

(a) (b) (c) (d) 圖 16 k-means 概念

本研究發現,傳統的 k-means 方法能夠快速將一群尚未分類的資料分成數 群,但在分群過程中,若資料集內包含極端值,則可能會造成分群的不均勻,

此影響將會無法滿足分支度隱匿的條件,故藉由 k-means 的概念修改成符合(k1, k2) – anonymous shortest path privacy 隱匿的條件。

以圖 12 為例,圖 12 的 TN 為{VX, VE, VG, VD, VF, VY},其分支度數為{3, 5, 3, 4, 2, 4},如阿,若 k2等於 2,則代表分群的結果每一群內的節點至少要有兩個 以上,以此圖 12 中的 TN 一共有六個,故至少要分成三群。首先,隨機任選三 個節點當作重心,並計算各個節點的分支度與重心的分支度的差距;假設挑中 VE、VD、VF為重心,這三點的分支度為 5、4、2,接著一一計算各個節點的分 支度與其他節點分支度的差距,以 VX為例,VX的分支度為 3,與這三個重心分 支度差距為 2、1、1,而 VX相距重心 VF的距離與重心 VD,相同,則 VX點會選 擇與重心 VD分為一群,以此類推。當分群完之後,將群內的所有節點分支度取 平均值當作新的重心值,並依此重新分群。重複上述的步驟直到重心不再更 動。若此時的分群結果為{ VF }, { VD, VE}, { VX, VG, VY},則此時{ VF }內的節點 數不足 k2的條件,故必須從其他群中取出一節點與節點 VE為一群。此時,我 們會選擇從群內節點數超過 k2個的為優先,並從這些群組中挑找出重心與 { VF }最靠近,再從這重心最接近的群組中取出一節點,其分支度能夠最接近 { VF }中最大的分支度數。故根據我們所提出的限制,我們選擇{ VX, VG, VY },

在{ VF }群其最大分支度數為 2,而在{ VX, VG, VY }中節點分支度數最接近 2 的 節點為 VX與 VG,其分支度數為 3,則我們將選擇 VX移到{ VF}中,使得每一群

都至少有 k2個節點,最後我們檢查使否滿足我們所訂定的分支度隱匿條件,若 無,則分群完畢,若有,我們將會將進行節點交換,直到滿足限制。

以下為 Modified k-means 之演算法:

Input:1. 一張 k-anonymous path privacy 的隱匿圖 2. k2

Output:若干個至少包含 k2個節點的群集 Parameter:

TN : 所有最短路徑不重複的點 SP : 最短路徑

Nsp: 最短路徑上的所有節點 S : 起點

T : 終點 演算法:

1 Find top k1 SPs and all Nsp;

2 Let TN = { ti | the set of all transfer nodes };

3 If |TN| < 2k2 , then only one cluster;

4 Let K = |𝑇𝑁|𝑘

2 ⌋;

5 Randomly pick K nodes as initial centroids 6 Repeat

6.1 Form K clusters by assigning each point to the closest centroid

6.2 Reassign points such that each cluster has size 𝑘2 ≤ |𝐶𝑖| ≤ 2𝑘2− 1 6.3 Recompute the centroid of each cluster until centroid do not change

7 If (a cluster contains nodes all from the same SP), then

7.1 Select a vertex that has closest node degree with neighboring cluster vertex, not on the same SP, and swap the two vertices

相關文件