馬爾科夫聚類算法

背景:

  聚類算法分爲兩類:向量聚類和圖聚類,而馬爾科夫就是屬於圖聚類算法。

Random Walks:

一個圖中,如果有好幾個聚類,聚類中的線比較密集,而聚類之間的線比較少,那麼從一個點開始隨機行走,那麼我們更可能待在同一個聚類中,所以這就是馬爾科夫聚類算法的中心思想:通過Random Walks,我們可以發現流在哪裏匯聚,這樣我們就可以發現聚類了。Random Walks 是通過“Markov Chains”計算出來的。

Markov Chains:

如圖,我們可以發現,從節點一,我們有33%的概率到達節點 2,3,4,到達節點5 6 7 的概率爲0,同理從節點2出發有25%的概率到達1 3 4 5,根據這樣的思想,我們可以得到以下矩陣A:

  然後下一步操作就是

A*A=D;

D*A=C;

C*A....

直到收斂。

矩陣A的數值我們還可以根據節點間的距離來改變,通過距離來判斷兩個節點的親疏關係,例子如下:

然後添加自循環(即把a[i,i]的值變爲1)。

MCL

Expansion

2.1Expansion
但是,上面的例子有一個問題。就是對於奇數長度的簡單,進行奇數次冪的擴大獲得的值有很大的影響。同樣,對於偶數也有影響。
要解決這個問題,需要對每個節點添加一條自循環的邊。通過添加一條長度爲1的路徑,在計算矩陣的奇數次冪時,這個問題就不在發生。

而對於Markov Chain求冪的運算就稱爲“Expansion”。

2.2Inflation
同樣,先看例子:

上面的變換,即求Inflation的平方運算。由此可以看出,Inflation操作就是:求矩陣中每個元素的n次冪,然後求出的結果除以所在列的所有元素之和。
標準的定義是這樣的:


Inflation操作的職責是增大或減小當前概率(增大當前大概率,減小當前小概率)。同時,Inflation的參數r影響聚簇的粒度。

2.3算法
在MCL中,下面兩個處理過程交替的重複執行:
Expansion(計算Markov Chain過渡矩陣的冪)
Inflation
Expansion操作的職責是讓流連接圖的不同區域。
Inflation操作的職責是同時增大和減小當前概率。
算法實現步驟:
輸入一個無向圖,Expansion的冪e和Inflation的參數r,
創建鄰接矩陣,
對每個結點添加自循環(可選的),
標準化矩陣(每個元素除以所在列的所有元素之和),
計算矩陣的第e次冪,
用參數r對求得的矩陣進行Inflation處理,
重複第5步和第6步,直到狀態穩定不變(收斂),
把最終結果矩陣轉換成聚簇。

2.4收斂矩陣轉換爲聚簇
爲了找到聚簇,把所有的點分爲兩類:Attractor,聚集其他點;Vertex,被聚集的點。其中,Attractor所在的行必須至少有一個正值。每個Attractor聚集它所在行上有正值的點。然後,Attractor和被它聚集的點被分到一個聚簇。

如上圖,則分爲{1,6,7,10},{2,3,5},{4,8,9,11,12}三個聚簇。一般來說,看行的正值點。
注意:重疊簇。所謂重疊簇,是指某個點被多個聚簇所共享。

當且僅當某些點等概率的分配到多個聚簇;
當且僅當簇與簇是同構的。

2.6Inflation參數

本文參考文檔:https://blog.csdn.net/u010376788/article/details/50187321

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章