SOM自组织特征映射神经网络-MATLAB-NCTOOL
SOM自组织特征映射神经网络-MATLAB-NCTOOL
In clustering problems, you want a neural network to group data by similarity.
A self-organizing map (newsom) consists of a competitive layer which can classify a dataset of vectors with any number of dimensions into as many classes as the layer has neurons. The neurons are arranged in a 2D topology, which allows the layer to form a representation of the distribution and a two-dimensional approximation of the topology of the dataset.
The network is trained with the SOM batch algorithm (trainubwb, learnsomb).
竞争层?正方形?
看不出来数据属于哪类?
神经网络创建函数
(一)newsom函数
net=newsom(PR,[D1,D2,^],TFCN,DFCN,OLR,OSTEPS,TLR,TND)
PR:R个输入元素的最大值和最小值的设定值,R*2维矩阵
Di:第I层的维数,默认为[5 8]
TFCN:拓扑函数,默认为hextop
DFCN:距离函数,默认为linkdist
OLR:分类阶段学习速率,默认为0.9
OSTEPS:分类阶段的步长,默认为1000
TLR:调谐阶段的学习速率,默认为0.02
TNS:调谐阶段的领域距离,默认为1.
输入net=newsom([0 1;0 1],[3 5])时的拓扑结构
eg.
>> P=[rand(1,400)*2;rand(1,400)];
>> plot(P(1,:),P(2,:),'.','markersize',20)
>> net=newsom([0 1;0 1],[3 5]);
>> net=train(net,P);
>> hold on
>> plotsom(net.iw{1,1},net.layers{1}.distances)
>> hold off
功能:该函数用于创建一个竞争层
net=newc
net=newc(PR,S,KLR,CLR)
S:神经元的数目
KLR:Kohonen学习速度,默认为0.01
CLR:Conscience学习速度,默认为0.001
net:函数返回值,一个新的竞争层。
(三)newlvq函数
功能:该函数用于创建一个学习向量量化的LVQ网络
net=newlvp
net=newlvp(PR,S1,PC,LR,LF)
S1:竞争层神经元的数目
PC:分类的百分比
LR:学习速率,默认为0.01
LF:学习函数,默认为learnlvl
例子看http://blog.sina.com.cn/s/blog_7671b3eb0100y4t3.html
传递函数
(一)compet函数
功能:该函数为传递函数
A=compet(N)
info=compet(code)
N:输入(列)向量的S*Q维矩阵
A:函数返回值,输出向量矩阵,每一列向量只有一个1,位于输入向量最大的位置
info=compet(code):根据code值的不同返回有关函数的不同信息,包括derice-导数名称;name-函数名称;output-输出范围;active-动态输入范围。
>> n1=[5;3;6;8];
>> a1=compet(n1)
a1 =
(4,1) 1
(二)softmax函数
功能:该函数为软最大传递函数
A=softmax(N)
info=softmax(code)
与compet不同的是,参数A为函数返回向量,个元素在区间[0,1],且向量结构与N一致。
>> n1=[5;3;6;8];
>> a2=softmax(n1)
a2 =
0.0418
0.0057
0.1135
0.8390
距离函数
(一)boxdist函数
功能:该函数为Box距离函数,在给定神经网络某层的神经元的位置后,可利用该函数计算神经元之间的位置,该函数通常用于结构函数的gridtop的神经网络层。
d=boxdist(pos)
ps:神经元位置的N*S维矩阵
d:函数返回值,神经元距离的S*S维矩阵。
函数的运算原理为d(i,j)=max||pi-pj||。其中,d(i,j)表示距离矩阵中的元素,pi表示位置矩阵的第i列向量。
(二)dist函数
功能:该函数的欧式距离权函数,通过对输入进行加权得到加权后的输入
Z=dist(W,P);
df=dist('deriv')
D=dist(pos)
W:S*R维的权值矩阵
P:Q组输入(列)向量的R*Q维矩阵
Z:S*Q维的距离矩阵
pos:神经元位置的N*S维矩阵
D:S*S维的距离矩阵
df=dist('deriv'):返回值为空,因为该函数不存在导函数。
函数运算规则为D=sqrt(sum((x-y)2)),其中x和y分别为列向量。
(三)linkdist函数
功能:该函数为连接距离函数,在给定神经元的位置后,该函数可用于计算神经元之间的距离
d=linkdist(pos)
(四)mandist函数
功能:该函数为Manhattan距离权函数
Z=mandist(W,P)
df=mandist('deriv')
D=mandist(pos)
学习函数
(一)learnk函数
功能:该函数为kohonen权值学习函数
[dw,LS]=learnk(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info=learnk(code)
W:权值矩阵
P:输入向量矩阵
Z:权值输入向量矩阵
N:网格输入向量矩阵
A:输出向量矩阵
T:目标向量矩阵
E:误差向量矩阵
gW:性能梯度矩阵
D:神经元距离矩阵
LP:学习参数,若无则为空
LS:学习状态,初始化为空
dW:权值(阈值)变化矩阵
LS:新的学习状态
info=learnk(code)……
(二)learnsom函数
功能:该函数为自组织映射权值学习函数
[dW,LS]=learnsom(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info=learnsom(code)
几个需要设置的学习参数
LP.order_lr分类阶段学习速率,默认0.9
LP.order_steps学习阶段补偿,默认1000
LP.tune_lr调谐阶段领域距离,默认0.02
LP.tune_nd调谐阶段学习速率,默认1
(三)learnis函数
功能:该函数为instar权值学习函数
[dW,LS]=learnis(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info=learnis(code)
(四)learnos函数
初始化函数(midpoint)
功能:该函数为i中心点权值初始化函数
W=midpoint(S,PR)
S:神经元的数目;
PR:每组输入向量的最大值和最小值组成的R*2维矩阵,规定了输入区间为[Pmin,Pmax]
W:函数返回值,S*R维的矩阵,每个元素对应设定为(Pmin+Pmax)/2
权值函数(negdist)
功能:该函数为负距离权值函数
Z=negdist(W,P)
显示函数(plotsom)
功能:该函数用于绘制自组织特征映射
plotsom(pos)
plotsom(W,D,ND)
pos:神经元位置向量
W:权值矩阵
D:距离矩阵
ND:领域矩阵,默认为1
plotsom(pos):利用红点绘制神经元的位置,将欧氏距离小于等于1的神经元连接起来
plotsom(W,D,ND):将欧氏距离小于等于1的神经元的权值向量连接起来
结构函数(hextop)
六角层结构函数
pos=hextop(dim1,dim2,^dimN)
eg.
pos=hextop(8,5);
plotsom(pos)
W=rands(40,2);plotsom(W,dist(pos))