周志華《機器學習》課後習題解答系列(六):Ch5.8 - SOM網路實驗
本系列相關答案和原始碼託管在我的Github上:PY131/Machine-Learning_ZhouZhihua.
SOM神經網路實驗
注:本題程式分別基於Python和Matlab實現(這裡檢視完整程式碼和資料集)。
1 基礎概述
1.1 SOM網路概念
SOM(Self-Organizing Map,自組織對映)網路是一種無監督的競爭型神經網路,常用於資料的聚類和降維分析。它從仿生學中引出,模擬了面臨不同輸入模式時生物神經組織的興奮機理。SOM神經網路最初由Kohonen提出,所以也常把SOM網路稱為Kohonen網路。
SOM神經網路通過自組織對映(SOM),將高維的輸入資料對映到低維空間,從而實現了特徵空間的降維,同時保持了輸入資料在高維空間中的拓撲結構。下圖為最常見的輸出層為二維的SOM神經網路:
SOM網路經過訓練之後,輸出層各神經元及其引數反映的是輸入資料的模式聚合。
1.2 SOM網路工作機理
SOM工作機理分為三大部分:
- 競爭(Competition)
- 協同(Cooperation)
- 適應(Adaption)
下面對工作機制進行概要討論(這裡以上圖5.11所示輸出層為二維的Kohonen網路為例):
1. 引數
先明確網路所涉及的資料和引數(即要通過資料學習的物件):
資料:
輸入層:D 個輸入變數記為 x = {x_i: i=1,…,D};
輸出層:N*M 個輸出變數記為 o = {o_jk: j=1,…,N;k=1,…,M};
引數:
優勝鄰域係數(j1k1和j2k2) T = {T_j1k1j2k2: j1,j2=1,…,N;k1,k2=1,…,M},和距離遠近有關;
學習率 η,和迭代次數有關;
輸出層第 jk 個神經元相對於輸入層的權重引數 w_jk = {w_jki: j=1,…,N;k=1,...,M;i=1,…,D},對應該神經元模式屬性;
下面將進一步解釋這些引數及其使用。
2. 競爭機制(Competition)
我們需要一個判別函式來確定,在某條輸入樣本下,勝出的是輸出層的那一個神經元,這裡可採用歐氏距離來度量,通過計算輸出層神經元 o_jk 和 輸入之間的距離,越小的勝出。判別函式如下式,記勝出的神經元索引為 I(x),可以看出這裡起決定性作用的引數是權重 w:
3. 協同機制(Cooperation)
SOM網路根據優勝鄰域進行權值調整(側抑制(lateral inhibition)機制),即對於所有輸出層神經元,越靠近勝出者權值調整幅度越大,我們可用下面的衰減函式來度量這樣一種權值調整幅度:
可以繪製出該函式示意如下圖示(可以看出其取值規律符合側抑制機理):
4. 引數更新機制(Adaption)
引數更新針對權重 w,直接給出更新公式如下:
為優化收斂,防止振盪,可採用隨迭代次數衰減的學習率,同理可調整上面側抑制函式中的尺度係數 σ,一併給出其計算式樣例如下:
1.3 SOM網路訓練演算法
根據上面的記述,給出SOM網路訓練演算法概略如下:
2 簡單實驗(降維、聚類)
這裡我們採用西瓜資料集3.0a作為分析物件,採用SOM神經網路來分析其輸入變數的聚類情況,並與實際類別對比。
2.1 資料預處理
物件資料集(watermelon_3a)如下所示:
資料樣本為二維連續輸入和一維標稱輸出,繪製其視覺化散點圖如下所示:
從資料點的分佈可以得到一些基本資訊(如線性不可分,存在離群點,每類樣本量平衡等)。
由於演算法中涉及到距離的計算,這裡需要將資料集的每個屬性進行歸一化(正則化)(含糖率、密度)。
採用Z-score的歸一化的python程式樣例如下:
# data normalization (z-scale) based on column
X_train = np.zeros(X.shape)
for j in range(X.shape[1]):
for i in range(X.shape[0]):
X_train[i,j] = (X[i,j] - X[:,j].mean())/X[:,j].std()
X = X_train
採用Max-min歸一化的Matlab語句樣例如下:
X = mapminmax(X, 0, 1);
2.2 模型訓練
這裡我們採用兩種方式互補實現此處SOM網路的實驗:
- 基於python的pymvpa2機器學習包實現;
- 基於Matlab的神經網路工具箱(Neural Network Toolbox)實現;
下面主要講述實現思路:
- 為體現SOM的資料降維功能,搭建網路時設定其Kohonen層(競爭輸出層)為一維。
- 執行引數訓練的迭代過程,檢視輸出層(競爭層)的神經元類別所屬情況:
2.3 結果分析
首先檢視神經元權重引數(記憶引數) w 的變化結果(神經元記憶中心運動情況):
在Matlab-神經網路工具箱上實現SOM網路並訓練得到競爭層(size = 10*1)的神經元對映結果圖:
可以看出此時SOM網路競爭層以大致從輸入中提取出1,2兩類(且對應神經元數量相當),這與樣本真實情況相符,但是由於樣本中離群點的存在,導致出現了異類(3)。
進一步,若不考慮降維,取樣pymvpa2包搭建一個2維Kohonen層(競爭層),經過多次訓練後得出下面的權重著色圖:
可以看到,權重值存在漸變,說明存在類簇的作用。
3. 總結
這裡對SOM網路進行初步的學習探索,可以看到它在資料降維,聚類分析上的優勢。
進一步可知,SOM網路的聚類無需事先指定類別數量,是一種完全自主的實現(這點不同於K-means等聚類方法)。
經過訓練的SOM網路可以進一步實現分類預測等更多功能。
4. 參考
(注:sompy是本文實現過程中可用到的一個python軟體包,未在文中提出)
- SOM神經網路基礎知識: 伯明翰大學課件:Self Organizing Maps: Fundamentals
- Python輔助-pymvpa: 官方
- Python輔助-pymvpa: Self-organizing Maps樣例
- Python輔助-sompy: SOM軟體包:sompy_GitHub
- Python輔助-sompy: sompy使用_CSDN部落格
- Python輔助-sompy: sompy使用_官方examples
- Matlab輔助-神經網路工具箱: SOM自組織特徵對映神經網路
相關文章
- 周志華《機器學習》課後習題解答系列(六):Ch5.7 - RBF網路實驗機器學習H5
- 周志華《機器學習》課後習題解答系列(六):Ch5 - 神經網路機器學習H5神經網路
- 周志華《機器學習》課後習題解答系列(六):Ch5.10 - 卷積神經網路實驗機器學習H5卷積神經網路
- 周志華《機器學習》課後習題解答系列(一):目錄機器學習
- 周志華《機器學習》課後習題解答系列(六):Ch5.5 - BP演算法實現機器學習H5演算法
- 周志華《機器學習》課後習題解答系列(四):Ch3.4 - 交叉驗證法練習機器學習
- 周志華《機器學習》課後習題解答系列(六):Ch5.6 - BP演算法改進機器學習H5演算法
- 周志華《機器學習》課後習題解答系列(四):Ch3 - 線性模型機器學習模型
- 周志華《機器學習》課後習題解答系列(五):Ch4 - 決策樹機器學習
- 機器學習-周志華-課後習題答案5.5機器學習
- 周志華《機器學習》課後習題解答系列(三):Ch2 - 模型評估與選擇機器學習模型
- 周志華《機器學習》課後習題解答系列(四):Ch3.3 - 程式設計實現對率迴歸機器學習程式設計
- 周志華《機器學習》課後習題解答系列(四):Ch3.5 - 程式設計實現線性判別分析機器學習程式設計
- 周志華《機器學習》課後習題解答系列(五):Ch4.3 - 程式設計實現ID3演算法機器學習程式設計演算法
- 周志華《機器學習》課後習題解答系列(五):Ch4.4 - 程式設計實現CART演算法與剪枝操作機器學習程式設計演算法
- 機器學習-周志華機器學習
- 周志華 機器學習ppt機器學習
- 周志華西瓜書《機器學習》機器學習
- 重磅!周志華《機器學習》手推筆記來了!機器學習筆記
- 機器學習定義及基本術語(根據周志華的《機器學習》概括)機器學習
- AI會議排名_周志華AI
- 周志華西瓜書《機器學習》第三章線性模型機器學習模型
- 牛人(周志華)推薦的人工智慧網站人工智慧網站
- 2018 AI World 觀後感——周志華教授partAI
- 《機器學習導論》和《統計機器學習》學習資料:張志華教授機器學習
- 華中科技大學軟體學院機器學習課程實驗機器學習
- 周志華:滿足這三大條件,可以考慮不用深度神經網路神經網路
- AI會議的總結(by南大周志華)AI
- 周志華《機器學習》西瓜書精煉版筆記來了!16 章完整版機器學習筆記
- 《C和指標》第三章課後習題解答指標
- 周志華西瓜書《機器學習筆記》學習筆記第二章《模型的評估與選擇》機器學習筆記模型
- CSAPP 第六章課後習題APP
- 微課|玩轉Python輕鬆過二級:第2章課後習題解答(3課,79題)Python
- 《計算機網路實驗課程》——Wireshark實驗計算機網路
- 計算機網路自頂向下方法:第六章: 鏈路層和區域網 課後複習題計算機網路
- 微課|玩轉Python輕鬆過二級:第3章課後習題解答3Python
- 微課|玩轉Python輕鬆過二級:第3章課後習題解答4Python
- 微課|玩轉Python輕鬆過二級:第3章課後習題解答2Python