SOM聚類算法


1. 算法簡介

SOM神經網絡[11]是由芬蘭神經網絡專家Kohonen教授提出的,該算法假設在輸入對象中存在一些拓撲結構或順序,可以實現從輸入空間(n維)到輸出平面(2維)的降維映射,其映射具有拓撲特征保持性質,與實際的大腦處理有很強的理論聯系。自組織映射神經網絡, 即Self Organizing Maps (SOM), 可以對數據進行無監督學習聚類。它的思想很簡單,本質上是一種只有輸入層--隱藏層的神經網絡。隱藏層中的一個節點代表一個需要聚成的類。訓練時采用“競爭學習”的方式,每個輸入的樣例在隱藏層中找到一個和它最匹配的節點,稱為它的激活節點,也叫“winning neuron”。 緊接着用隨機梯度下降法更新激活節點的參數。同時,和激活節點臨近的點也根據它們距離激活節點的遠近而適當地更新參數。

  SOM的一個特點是,隱藏層的節點是有拓撲關系的。這個拓撲關系需要我們確定,如果想要一維的模型,那么隱藏節點依次連成一條線;如果想要二維的拓撲關系,那么就行成一個平面,如下圖所示(也叫Kohonen Network):

 

 

 

  SOM網絡包含輸入層和輸出層。輸入層對應一個高維的輸入向量,輸出層由一系列組織在2維網格上的有序節點構成,輸入節點與輸出節點通過權重向量連接。學習過程中,找到與之距離最短的輸出層單元,即獲勝單元,對其更新。同時,將鄰近區域的權值更新,使輸出節點保持輸入向量的拓撲特征。

  既然隱藏層是有拓撲關系的,所以我們也可以說,SOM可以把任意維度的輸入離散化到一維或者二維(更高維度的不常見)的離散空間上。 Computation layer里面的節點與Input layer的節點是全連接的。

拓撲關系確定后,開始計算過程,大體分成幾個部分:

    (1)初始化:每個節點隨機初始化自己的參數。每個節點的參數個數與Input的維度相同。

    (2)對於每一個輸入數據,找到與它最相配的節點。假設輸入時D維的, 即 X={x_i, i=1,...,D},那么判別函數可以為歐幾里得距離:

 

 

    (3)找到激活節點I(x)之后,我們也希望更新和它臨近的節點。令S_ij表示節點i和j之間的距離,對於I(x)臨近的節點,分配給它們一個更新權重(簡單地說,臨近的節點根據距離的遠近,更新程度要打折扣):

 

 

     (4)接着就是更新節點的參數了。按照梯度下降法更新(循環迭代,直到收斂);

 

 

 

2. 算法流程:

  (1) 網絡初始化,對輸出層每個節點權重賦初值;

  (2) 將輸入樣本中隨機選取輸入向量,找到與輸入向量距離最小的權重向量;

  (3) 定義獲勝單元,在獲勝單元的鄰近區域調整權重使其向輸入向量靠攏;

  (4) 提供新樣本、進行訓練;

  (5) 收縮鄰域半徑、減小學習率、重復,直到小於允許值,輸出聚類結果。

 

與K-Means的比較

同樣是無監督的聚類方法,SOM與K-Means有什么不同呢?

(1)K-Means需要事先定下類的個數,也就是K的值。 SOM則不用,隱藏層中的某些節點可以沒有任何輸入數據屬於它。所以,K-Means受初始化的影響要比較大。

(2)K-means為每個輸入數據找到一個最相似的類后,只更新這個類的參數。SOM則會更新臨近的節點。所以K-mean受noise data的影響比較大,SOM的准確性可能會比k-means低(因為也更新了臨近節點)。

(3) SOM的可視化比較好。優雅的拓撲關系圖 。

參考文獻:https://www.cnblogs.com/sylvanas2012/p/5117056.html


免責聲明!

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



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