譜聚類(Spectral clustering)(2):NCut


作者:桂。

時間:2017-04-13  21:19:41

鏈接:http://www.cnblogs.com/xingshansi/p/6706400.html 

聲明:歡迎被轉載,不過記得注明出處哦~


前言

本文為譜聚類的第二篇,主要梳理NCut算法,關於譜聚類的更多細節信息,可以參考之前的博文:

  1)拉普拉斯矩陣(Laplace Matrix)與瑞利熵(Rayleigh quotient)

  2)譜聚類之RatioCut算法

內容主要參考劉建平Pinard博客,更多細節可以參考該作者博文,本文最后給出代碼實現,全文包括:

  1)NCut原理

  2)NCut算法實現

 

一、NCut原理

  Ncut切圖和RatioCut切圖很類似,但是把Ratiocut的分母$|Ai|$換成$vol(A_i)$,由於子圖樣本的個數多並不一定權重就大,我們切圖時基於權重也更合我們的目標,因此一般來說Ncut切圖優於RatioCut切圖。

$vol(A): = \sum\limits_{i \in A}d_i$

對應的,Ncut切圖對指示向量h做了改進。注意到RatioCut切圖的指示向量使用的是$\frac{1}{\sqrt{|A_j|}}$標示樣本歸屬,而Ncut切圖使用了子圖權重$\frac{1}{\sqrt{vol(A_j)}}$來標示指示向量h,定義如下:

那么我們對於$h_i^TLh_i$有:

推導方式和RatioCut完全一致。也就是說,我們的優化目標仍然是

但是此時我們的$H^TH \neq I$而是$H^TDH = I$,推導如下:

也就是說,此時我們的優化目標最終為:

這個就是泛化瑞利熵的求解問題,之前文章分析過。這里再次給出細節分析。

令$H = D^{-1/2}F$,則優化目標轉化為:

至此已經完成了NCut的理論。

畫蛇添足一下吧,注意到:

 

事實上,連拉普拉斯矩陣都懶得構造了。

 

二、NCut算法實現

首先給出算法步驟:

步驟一:求解鄰接矩陣W和度矩陣D

步驟二:對${D^{ - \frac{1}{2}}}W{D^{ - \frac{1}{2}}}$進行特征值分解,並取K個最大特征值對應的特征向量(K為類別數目)

步驟三:將求解的K個特征向量(並分別歸一化),構成新的矩陣,對該矩陣進行Kmeans處理

Kmeans得到的類別標簽,就是原數據的類別標簽,至此完成NCut聚類。

給出代碼實現:

sigma2 = 0.01;
%%Step1: Calculate  matrixs
for i = 1:N
    for j =1:N
        W(i,j) = exp(-sqrt(sum((X(i,:)-X(j,:)).^2))/2/sigma2);
    end
end
W = W-diag(diag(W));% adjacency matrix
D = diag(sum(W)); %degree matrix
%%Step2:Eigenvalues decomposition
K = 3;
[Q,V] = eigs(D^(-1/2)*W*D^(-1/2),K);
%%Step3:New matrix Q
Q = Q./repmat(sqrt(diag(Q'*Q)'),N,1);
[idx,ctrs] = kmeans(Q,K); 

結果圖:

測試一下,按數據為3類進行譜聚類,可以看出來還是有效的,譜聚類中高斯權重涉及到$\sigma$如何取值,不過這里就不做進一步討論了。

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM