① 跪求som神經網路的MATLAB源代碼,謝謝各位大哥大姐。如果運行結果代碼正確,高分相送。
SOM:
close all
clf reset
figure(gcf);
echo on
pause
clc
p=zscore(data);%biaozhunhua
pause
clc
plot3(p(:,1),p(:,2),p(:,3),'*');
axis([0 1 0 1]);
title('Input data');
pause
clc
net=newsom([0 1;0 1],[9]);
pause
clc
net.trainParam.epochs=100;
net=train(net,p);
pause
clc
figure;
w=net.IW{1};
%IW 是輸入層到第一層的權值矩陣
%LW 是中間層和輸出層,也就是神經內元到神經元的權值
%b 是第Ni層的偏向向容量
plotsom(net.IW{1,1},net.layers{1}.distances);
pause
clc
a=sim(net,[0.6;0.8])
echo off
② 數據挖掘干貨總結(四)--聚類演算法
本文共計2680字,預計閱讀時長七分鍾
聚類演算法
一 、 本質
將數據劃分到不同的類里,使相似的數據在同一類里,不相似的數據在不同類里
二 、 分類演算法用來解決什麼問題
文本聚類、圖像聚類和商品聚類,便於發現規律,以解決數據稀疏問題
三 、 聚類演算法基礎知識
1. 層次聚類 vs 非層次聚類
– 不同類之間有無包含關系
2. 硬聚類 vs 軟聚類
– 硬聚類:每個對象只屬於一個類
– 軟聚類:每個對象以某個概率屬於每個類
3. 用向量表示對象
– 每個對象用一個向量表示,可以視為高維空間的一個點
– 所有對象形成數據空間(矩陣)
– 相似度計算:Cosine、點積、質心距離
4. 用矩陣列出對象之間的距離、相似度
5. 用字典保存上述矩陣(節省空間)
D={(1,1):0,(1,2):2,(1,3):6...(5,5):0}
6. 評價方法
– 內部評價法(Internal Evalution):
• 沒有外部標准,非監督式
• 同類是否相似,跨類是否相異
DB值越小聚類效果越好,反之,越不好
– 外部評價法(External Evalution):
• 准確度(accuracy): (C11+C22) / (C11 + C12 + C21 + C22)
• 精度(Precision): C11 / (C11 + C21 )
• 召回(Recall): C11 / (C11 + C12 )
• F值(F-measure):
β表示對精度P的重視程度,越大越重視,默認設置為1,即變成了F值,F較高時則能說明聚類效果較好。
四 、 有哪些聚類演算法
主要分為 層次化聚類演算法 , 劃分式聚類演算法 , 基於密度的聚類演算法 , 基於網格的聚類演算法 , 基於模型的聚類演算法等 。
4.1 層次化聚類演算法
又稱樹聚類演算法,透過一種層次架構方式,反復將數據進行分裂或聚合。典型的有BIRCH演算法,CURE演算法,CHAMELEON演算法,Sequence data rough clustering演算法,Between groups average演算法,Furthest neighbor演算法,Neares neighbor演算法等。
凝聚型層次聚類 :
先將每個對象作為一個簇,然後合並這些原子簇為越來越大的簇,直到所有對象都在一個簇中,或者某個終結條件被滿足。
演算法流程:
1. 將每個對象看作一類,計算兩兩之間的最小距離;
2. 將距離最小的兩個類合並成一個新類;
3. 重新計算新類與所有類之間的距離;
4. 重復2、3,直到所有類最後合並成一類。
特點:
1. 演算法簡單
2. 層次用於概念聚類(生成概念、文檔層次樹)
3. 聚類對象的兩種表示法都適用
4. 處理大小不同的簇
5. 簇選取步驟在樹狀圖生成之後
4.2 劃分式聚類演算法
預先指定聚類數目或聚類中心,反復迭代逐步降低目標函數誤差值直至收斂,得到最終結果。K-means,K-modes-Huang,K-means-CP,MDS_CLUSTER, Feature weighted fuzzy clustering,CLARANS等
經典K-means:
演算法流程:
1. 隨機地選擇k個對象,每個對象初始地代表了一個簇的中心;
2. 對剩餘的每個對象,根據其與各簇中心的距離,將它賦給最近的簇;
3. 重新計算每個簇的平均值,更新為新的簇中心;
4. 不斷重復2、3,直到准則函數收斂。
特點:
1.K的選擇
2.中心點的選擇
– 隨機
– 多輪隨機:選擇最小的WCSS
3.優點
– 演算法簡單、有效
– 時間復雜度:O(nkt)
4.缺點
– 不適於處理球面數據
– 密度、大小不同的聚類,受K的限制,難於發現自然的聚類
4.3 基於模型的聚類演算法
為每簇假定了一個模型,尋找數據對給定模型的最佳擬合,同一」類「的數據屬於同一種概率分布,即假設數據是根據潛在的概率分布生成的。主要有基於統計學模型的方法和基於神經網路模型的方法,尤其以基於概率模型的方法居多。一個基於模型的演算法可能通過構建反應數據點空間分布的密度函數來定位聚類。基於模型的聚類試圖優化給定的數據和某些數據模型之間的適應性。
SOM 神經網路演算法 :
該演算法假設在輸入對象中存在一些拓撲結構或順序,可以實現從輸入空間(n維)到輸出平面(2維)的降維映射,其映射具有拓撲特徵保持性質,與實際的大腦處理有很強的理論聯系。
SOM網路包含輸入層和輸出層。輸入層對應一個高維的輸入向量,輸出層由一系列組織在2維網格上的有序節點構成,輸入節點與輸出節點通過權重向量連接。學習過程中,找到與之距離最短的輸出層單元,即獲勝單元,對其更新。同時,將鄰近區域的權值更新,使輸出節點保持輸入向量的拓撲特徵。
演算法流程:
1. 網路初始化,對輸出層每個節點權重賦初值;
2. 將輸入樣本中隨機選取輸入向量,找到與輸入向量距離最小的權重向量;
3. 定義獲勝單元,在獲勝單元的鄰近區域調整權重使其向輸入向量靠攏;
4. 提供新樣本、進行訓練;
5. 收縮鄰域半徑、減小學習率、重復,直到小於允許值,輸出聚類結果。
4.4 基於密度聚類演算法
只要鄰近區域的密度(對象或數據點的數目)超過某個閾值,就繼續聚類,擅於解決不規則形狀的聚類問題,廣泛應用於空間信息處理,SGC,GCHL,DBSCAN演算法、OPTICS演算法、DENCLUE演算法。
DBSCAN:
對於集中區域效果較好,為了發現任意形狀的簇,這類方法將簇看做是數據空間中被低密度區域分割開的稠密對象區域;一種基於高密度連通區域的基於密度的聚類方法,該演算法將具有足夠高密度的區域劃分為簇,並在具有雜訊的空間數據中發現任意形狀的簇。
4.5 基於網格的聚類演算法
基於網格的方法把對象空間量化為有限數目的單元,形成一個網格結構。所有的聚類操作都在這個網格結構(即量化空間)上進行。這種方法的主要優點是它的處理 速度很快,其處理速度獨立於數據對象的數目,只與量化空間中每一維的單元數目有關。但這種演算法效率的提高是以聚類結果的精確性為代價的。經常與基於密度的演算法結合使用。代表演算法有STING演算法、CLIQUE演算法、WAVE-CLUSTER演算法等。
③ 數據挖掘中的聚類演算法聚成幾類是人為設定還是自動的用SOM神經網路做聚類是不是就是人為設定好聚幾類
分類是開始有訓練集,通過大量樣本集進行分類,然後對待測數據進行歸類內,通過計算,看樣本集中容的數據屬於哪一類就放在該類下面;而聚類是根據自己確定k值,確定聚類中心點,通過演算法來實現聚類,聚類是無監督的。聚類演算法聚類幾類是需要大量數據分析的,通過取得k值的不同,看哪一次的聚類的效果最好。k值是認為確定,但是需要大量數據分析的。不是隨機想分為幾類就幾類的
④ 神經網路Kohonen模型
一、Kohonen模型概述
1981年芬蘭赫爾辛基大學Kohonen教授提出了一個比較完整的,分類性能較好的自組織特徵影射(Self-Organizing Feature Map)人工神經網路(簡稱SOM網路)方案。這種網路也稱為Kohonen特徵影射網路。
這種網路模擬大腦神經系統自組織特徵影射功能,它是一種競爭式學習網路,在學習中能無監督地進行自組織學習。
二、Hohonen模型原理
1.概述
SOM網路由輸入層和競爭層組成。輸入層神經元數為N,競爭層由M=R×C神經元組成,構成一個二維平面陣列或一個一維陣列(R=1)。輸入層和競爭層之間實現全互連接。
SOM網路的基本思想是網路競爭層各神經元競爭對輸入模式的響應機會,最後僅有一個神經元成為競爭的勝者,並對那些與獲勝神經元有關的各連接權朝著更有利於它競爭的方向調整,這一獲勝神經元就表示對輸入模式的分類。
SOM演算法是一種無教師示教的聚類方法,它能將任意輸入模式在輸出層映射成一維或二維離散圖形,並保持其拓撲結構不變。即在無教師的情況下,通過對輸入模式的自組織學習,在競爭層將分類結果表示出來。此外,網路通過對輸入模式的反復學習,可以使連接權矢量空間分布密度與輸入模式的概率分布趨於一致,即連接權矢量空間分布能反映輸入模式的統計特徵。
2.網路權值初始化
因為網路輸入很可能出現在中間區,因此,如果競爭層的初始權值選擇在輸入空間的中間區,則其學習效果會更加有效。
3.鄰域距離矩陣
SOM網路中的神經元可以按任何方式排列,這種排列可以用表示同一層神經元間的Manhattan距離的鄰域距離矩陣D來描述,而兩神經元的Manhattan距離是指神經元坐標相減後的矢量中,其元素絕對值之和。
4.Kohonen競爭學習規則
設SOM網路的輸入模式為Xp=(
Wj=(wj1,wj2,…,wjN),j=1,2,…,M。
Kohonen網路自組織學習過程包括兩個部分:一是選擇最佳匹配神經元,二是權矢量自適應變化的更新過程。
確定輸入模式Xp與連接權矢量Wj的最佳匹配的評價函數是兩個矢量的歐氏距離最小,即
g,確定獲勝神經元g。
dg=mjin(dj),j=1,2,…,M。
求輸入模式Xp在競爭層的獲勝神經元g及其在鄰域距離nd內的神經元的輸出。
中國礦產資源評價新技術與評價新模型
dgm為鄰域距離矩陣D的元素,為競爭層中獲勝神經元g與競爭層中其它神經元的距離。
求輸入模式Xp在競爭層的獲勝神經元g及其在鄰域距離nd內的神經元的權值修正值。
中國礦產資源評價新技術與評價新模型
式中:i=1,2,…,N;
lr為學習速率;
t為學習循環次數。
Δwjt(t+1)的其餘元素賦值為0。
進行連接權的調整
wji(t+1)=wji(t)+Δwji(t+1)。
5.權值學習中學習速率及鄰域距離的更新
(1)SOM網路的學習過程分為兩個階段
第一階段為粗學習與粗調整階段。在這一階段內,連接權矢量朝著輸入模式的方向進行調整,神經元的權值按照期望的方向在適應神經元位置的輸入空間建立次序,大致確定輸入模式在競爭層中所對應的影射位置。一旦各輸入模式在競爭層有了相對的影射位置後,則轉入精學習與細調整階段,即第二階段。在這一階段內,網路學習集中在對較小的范圍內的連接權進行調整,神經元的權值按照期望的方向在輸入空間伸展,直到保留到他們在粗調整階段所建立的拓撲次序。
學習速率應隨著學習的進行不斷減小。
(2)鄰域的作用與更新
在SOM網路中,腦神經細胞接受外界信息的刺激產生興奮與抑制的變化規律是通過鄰域的作用來體現的鄰域規定了與獲勝神經元g連接的權向量Wg進行同樣調整的其他神經元的范圍。在學習的最初階段,鄰域的范圍較大,隨著學習的深入進行,鄰域的范圍逐漸縮小。
(3)學習速率及鄰域距離的更新
在粗調整階段,
學習參數初始化
最大學習循環次數 MAX_STEP1=1000,
粗調整階段學習速率初值 LR1=1.4,
細調整階段學習速率初值 LR2=0.02,
最大鄰域距離 MAX_ND1=Dmax,
Dmax為鄰域距離矩陣D的最大元素值。
粗調階段
學習循環次數step≤MAX_STEP1,
學習速率lr從LR1調整到LR2,
鄰域距離nd 從MAX_ND1調整到1,
求更新系數r,
r=1-step/MAX_STEP1,
鄰域距離nd更新,
nd=1.00001+(MAX_ND1-1)×r。
學習速率lr更新,
lr=LR2+(LR1-LR2)×r。
在細調整階段,
學習參數初始化,
最大學習循環次數 MAX_STEP2=2000,
學習速率初值 LR2=0.02,
最大鄰域距離 MAX_ND2=1。
細調階段
MAX_STEP1<step≤MAX_STEP1+MAX_STEP2,
學習速率lr慢慢從LR2減少,
鄰域距離nd設為1,
鄰域距離nd更新,
nd=MAX_ND2+0.00001。
學習速率lr更新,
lr=LR2×(MAX_STEP1/step)。
6.網路的回想——預測
SOM網路經學習後按照下式進行回想:
中國礦產資源評價新技術與評價新模型
Yj=0,j=1,2,…,M,(j≠g)。
將需要分類的輸入模式提供給網路的輸入層,按照上述方法尋找出競爭層中連接權矢量與輸入模式最接近的神經元,此時神經元有最大的激活值1,而其它神經元被抑制而取0值。這時神經元的狀態即表示對輸入模式的分類。
三、總體演算法
1.SOM權值學習總體演算法
(1)輸入參數X[N][P]。
(2)構造權值矩陣W[M][N]。
1)由X[N][P]求Xmid[N],
2)由Xmid[N]構造權值W[M][N]。
(3)構造競爭層。
1)求競爭層神經元數M,
2)求鄰域距離矩陣D[M][M],
3)求矩陣D[M][M]元素的最大值Dmax。
(4)學習參數初始化。
(5)學習權值W[M][N]。
1)學習參數學習速率lr,鄰域距離nd更新,分兩階段:
(i)粗調階段更新;
(ii)細調階段更新。
2)求輸入模式X[N][p]在競爭層的獲勝神經元win[p]。
(i)求X[N][p]與W[m][N]的歐氏距離dm;
(ii)按距離dm最短,求輸入模式X[N][p]在競爭層的獲勝神經元win[p]。
3)求輸入模式X[N][p]在競爭層的獲勝神經元win[p]及其在鄰域距離nd內的神經元的輸出Y[m][p]。
4)求輸入模式X[N][p]在競爭層的獲勝神經元win[p]及其
在鄰域距離nd內的神經元的權值修正值ΔW[m][N],
從而得到輸入模式X[N][p]產生的權值修正值ΔW[M][N]。
5)權值修正W[M][N]=W[M][N]+ΔW[M][N]。
6)學習結束條件:
(i)學習循環到MAX_STEP次;
(ii)學習速率lr達到用戶指定的LR_MIN;
(iii)學習時間time達到用戶指定的TIME_LIM。
(6)輸出。
1)學習得到的權值矩陣W[M][N];
2)鄰域距離矩陣D[M][M]。
(7)結束。
2.SOM預測總體演算法
(1)輸入需分類數據X[N][P],鄰域距離矩陣D[M][M]。
(2)求輸入模式X[N][p]在競爭層的獲勝神經元win[p]。
1)求X[N][p]與W[m][N]的歐氏距離dm;
2)按距離dm最短,求輸入模式X[N][p]在競爭層的獲勝神經元win[p]。
(3)求獲勝神經元win[p]在競爭層排列的行列位置。
(4)輸出與輸入數據適應的獲勝神經元win[p]在競爭層排列的行列位置,作為分類結果。
(5)結束。
四、總體演算法流程圖
Kohonen總體演算法流程圖見附圖4。
五、數據流圖
Kohonen數據流圖見附圖4。
六、無模式識別總體演算法
假定有N個樣品,每個樣品測量M個變數,則有原始數據矩陣:
X=(xij)N×M,i=1,2,…,N,j=1,2,…,M。
(1)原始數據預處理
X=(xij)N×M處理為Z=(zij)N×M,
分3種處理方法:
1)襯度;
2)標准化;
3)歸一化。
程序默認用歸一化處理。
(2)構造Kohonen網
競爭層與輸入層之間的神經元的連接權值構成矩陣WQ×M。
WQ×M初始化。
(3)進入Kohonen網學習分類循環,用epoch記錄循環次數,epoch=1。
(4)在每個epoch循環中,對每個樣品n(n=1,2,…,N)進行分類。從1個樣品n=1開始。
(5)首先計算輸入層的樣品n的輸入數據znm(m=1,2,…,M)與競爭層Q個神經元對應權值wqm的距離。
(6)尋找輸入層的樣品n與競爭層Q個神經元的最小距離,距離最小的神經元Win[n]為獲勝神經元,將樣品n歸入獲勝神經元Win[n]所代表的類型中,從而實現對樣品n的分類。
(7)對樣品集中的每一個樣品進行分類:
n=n+1。
(如果n≤N,轉到5。否則,轉到8。)
(8)求分類後各神經元所對應的樣品的變數的重心,用對應的樣品的變數的中位數作為重心,用對應的樣品的變數的重心來更新各神經元的連接權值。
(9)epoch=epoch+1;
一次學習分類循環結束。
(10)如果滿足下列兩個條件之一,分類循環結束,轉到11;
否則,分類循環繼續進行,轉到4。
1)全部樣品都固定在某個神經元上,不再改變了;
2)學習分類循環達到最大迭代次數。
(11)輸出:
1)N個樣品共分成多少類,每類多少樣品,記錄每類的樣品編號;
2)如果某類中樣品個數超過1個,則輸出某類的樣品原始數據的每個變數的均值、最小值、最大值和均方差;
3)如果某類中樣品個數為1個,則輸出某類的樣品原始數據的各變數值;
4)輸出原始數據每個變數(j=1,2,…,M)的均值,最小值,最大值和均方差。
(12)結束。
七、無模式識別總體演算法流程圖
Kohonen無模式總體演算法流程圖見附圖5。
⑤ som神經網路中競爭層神經元數目怎麼確定
輸出層神經元數量設定和訓練集樣本的類別數相關,但是實際中我們往往不能清除地知道有多少類。如果神經元節點數少於類別數,則不足以區分全部模式,訓練的結果勢必將相近的模式類合並為一類;相反,如果神經元節點數多於類別數,則有可能分的過細,或者是出現「死節點」,即在訓練過程中,某個節點從未獲勝過且遠離其他獲勝節點,因此它們的權值從未得到過更新。
不過一般來說,如果對類別數沒有確定知識,寧可先設定較多的節點數,以便較好的映射樣本的拓撲結構,如果分類過細再酌情減少輸出節點。「死節點」問題一般可通過重新初始化權值得到解決。