拓端tecdat|R語言譜聚類、K-means聚類分析非線性環狀資料比較
原文連結:http://tecdat.cn/?p=23276
原文出處:拓端資料部落公眾號
有些問題是線性的,但有些問題是非線性的。我假設,你過去的知識是從討論和解決線性問題開始的,這是一個自然的起點。對於非線性問題的解決,往往涉及一個初始處理步驟。這個初始步驟的目的是將問題轉化為同樣具有線性特徵的問題。
一個教科書式的例子是邏輯迴歸,用於獲得兩類之間的最佳線性邊界。在一個標準的神經網路模型中,你會發現邏輯迴歸(或多類輸出的迴歸)應用於轉換後的資料。前面的幾層 "致力於 "將不可分割的輸入空間轉化為線性方法可以處理的東西,使邏輯迴歸能夠相對容易地解決問題。
同樣的道理也適用於譜聚類。與其用原始輸入的資料工作,不如用一個轉換後的資料工作,這將使它更容易解決,然後再連結到你的原始輸入。
譜聚類是一些相當標準的聚類演算法的重要變體。它是現代統計工具中的一個強大工具。譜聚類包括一個處理步驟,以幫助解決非線性問題,這樣的問題可以用我們所喜歡的那些線性演算法來解決。例如,流行的K-means。
內容
- 譜系聚類的動機
- 一個典型的譜聚類演算法
- 編碼例項
譜聚類的動機
"一張圖片勝過萬語千言"(Tess Flanders)。
目標是劃分兩個不相交的類別。我們的資料就有這種 "兩個環 "的形狀。你可以看到,由於資料不是線性可分離的,K-means解決方案沒有太大意義。我們需要考慮到資料中特別的非線性結構。 做到這一點的方法之一是使用資料的特徵子空間,不是資料的實際情況,而是資料的相似性矩陣。
典型的譜聚類演算法步驟
輸入:n個樣本點和聚類簇的數目k;
輸出:聚類簇
(1)使用下面公式計算的相似度矩陣W;
W為組成的相似度矩陣。
(2)使用下面公式計算度矩陣D;
,即相似度矩陣W的每一行元素之和
D為組成的對角矩陣。
(3)計算拉普拉斯矩陣;
(4)計算L的特徵值,將特徵值從小到大排序,取前k個特徵值,並計算前k個特徵值的特徵向量;
(5)將上面的k個列向量組成矩陣,;
(6)令是的第行的向量,其中;
(7)使用k-means演算法將新樣本點聚類成簇;
(8)輸出簇,其中,.
上面就是未標準化的譜聚類演算法的描述。也就是先根據樣本點計算相似度矩陣,然後計算度矩陣和拉普拉斯矩陣,接著計算拉普拉斯矩陣前k個特徵值對應的特徵向量,最後將這k個特徵值對應的特徵向量組成的矩陣U,U的每一行成為一個新生成的樣本點,對這些新生成的樣本點進行k-means聚類,聚成k類,最後輸出聚類的結果。這就是譜聚類演算法的基本思想。相比較PCA降維中取前k大的特徵值對應的特徵向量,這裡取得是前k小的特徵值對應的特徵向量。但是上述的譜聚類演算法並不是最優的,接下來我們一步一步的分解上面的步驟,總結一下在此基礎上進行優化的譜聚類的版本。
編碼示例
環資料在程式碼中是物件dat。下面的幾行只是簡單地生成K-means解決方案,並將其繪製出來。
plot(dat, col= kmeans0cluster)
現在是譜聚類解決方案。
- # 計算距離矩陣
- dist(dat, method = "euclidean", diag= T, upper = T)
- sig=1 # 超引數
- # 一個點與自身的距離為零
- diag(tmpa) <- 0 #設定對角線為零
- # 計算程度矩陣
- # 因為D是一個對角線矩陣,所以下面一行就可以了:
- diag(D) <- diag(D)^(-0.5)
- # 現在是拉普拉斯的問題:
- # 特徵分解
- eig_L <- eigen(L, symmetric= T)
- K <- 4 # 讓我們使用前4個向量
- # 它是相當穩健的--例如5或6的結果不會改變
- x <- eig_L$vectors[,1:K]
- # 現在進行歸一化處理:
- sqrt( apply(x^2, 1, sum) ) # 臨時分母
- # 臨時分母2:轉換為一個矩陣
- # 建立Y矩陣
- # 在y上應用聚類
- # 視覺化:
- plot(dat, col= spect0$cluster)
* 在我們的例子中,的條目不僅是0和1(連線或不連線),而且是量化相似性的數字。
參考資料
Ng, Andrew Y., Michael I. Jordan, and Yair Weiss. “On spectral clustering: Analysis and an algorithm.” Advances in neural information processing systems. 2002.
最受歡迎的見解
3.R語言對用電負荷時間序列資料進行K-medoids聚類建模和GAM迴歸
5.Python Monte Carlo K-Means聚類實戰
7.用於NLP的Python:使用Keras的多標籤文字LSTM神經網路
▍關注我們 【大資料部落】第三方資料服務提供商,提供全面的統計分析與資料探勘諮詢服務,為客戶定製個性化的資料解決方案與行業報告等。 ▍諮詢連結:http://y0.cn/teradat ▍聯絡郵箱:[email protected]