1. 程式人生 > 其它 >拓端tecdat|R語言譜聚類、K-means聚類分析非線性環狀資料比較

拓端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)

現在是譜聚類解決方案。

  1. # 計算距離矩陣
  2. dist(dat, method = "euclidean", diag= T, upper = T)
  3. sig=1 # 超引數
  4. # 一個點與自身的距離為零
  5. diag(tmpa) <- 0 #設定對角線為零
  6. # 計算程度矩陣
  7. # 因為D是一個對角線矩陣,所以下面一行就可以了:
  8. diag(D) <- diag(D)^(-0.5)
  9. # 現在是拉普拉斯的問題:
  10. # 特徵分解
  11. eig_L <- eigen(L, symmetric= T)
  12. K <- 4 # 讓我們使用前4個向量
  13. # 它是相當穩健的--例如5或6的結果不會改變
  14. x <- eig_L$vectors[,1:K]
  15. # 現在進行歸一化處理:
  16. sqrt( apply(x^2, 1, sum) ) # 臨時分母
  17. # 臨時分母2:轉換為一個矩陣
  18. # 建立Y矩陣
  19. # 在y上應用聚類
  20. # 視覺化:
  21. 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.



最受歡迎的見解

1.R語言k-Shape演算法股票價格時間序列聚類

2.R語言中不同型別的聚類方法比較

3.R語言對用電負荷時間序列資料進行K-medoids聚類建模和GAM迴歸

4.r語言鳶尾花iris資料集的層次聚類

5.Python Monte Carlo K-Means聚類實戰

6.用R進行網站評論文字挖掘聚類

7.用於NLP的Python:使用Keras的多標籤文字LSTM神經網路

8.R語言對MNIST資料集分析 探索手寫數字分類資料

9.R語言基於Keras的小資料集深度學習影象分類

▍關注我們 【大資料部落】第三方資料服務提供商,提供全面的統計分析與資料探勘諮詢服務,為客戶定製個性化的資料解決方案與行業報告等。 ▍諮詢連結:http://y0.cn/teradat ▍聯絡郵箱:[email protected]