【数据分析】基于matlab SOM的数据分类【含Matlab源码 238期】

一、简介

1 SOM原理分析
在网络结构上,自组织竞争网络一般是有输入和竞争层构成的单层网络,网络没有掩藏层,输入和竞争层之间的神经元实现双向链接,同时竞争层各神经元之间还存在横向连接。
自组织竞争网络的基本思想是网络竞争层各个神经元竞争对输入模式的响应机会,最后仅一个神经元成为竞争的胜者,并对那些与获胜神经元有关的各连接权值朝向更有利于竞争的方向调整。获胜神经元表示输入模式的分类。
除了竞争方法外,还有通过抑制方法获胜的,即网络竞争层各层神经元都能抑制所有其他神经元对输入模式的响应机会,从而使自己成为胜利者。
此外,还有一种抑制的方法,即每个神经元只抑制与自己临近的神经元,而对远离自己的神经元则不抑制。因此,自组织竞争网络自组织自适应的学习能力进一步拓宽了神经网络在模式识别分类方面的应用。
1981年芬兰Helsink大学的T.Kohonen教授提出一种自组织特征映射网,简称SOM网,又称Kohonen网。生物神经系统中,存在一种“侧抑制”现象,即一个神经细胞兴奋后,通过它的分支会对周围其他神经细胞产生抑制。由于侧抑制的作用,各细胞之间相互竞争的最终结果是:兴奋作用最强的神经细胞所产生的抑制作用战胜了周围所有其他细胞的抑制作用而“赢”了,其周围的其他神经细胞则全“输”了。
Kohonen认为:一个神经网络接受外界输入模式时,将会分为不同的对应区域,各区域对输入模式具有不同的响应特征,而且这个过程是自动完成的。自组织竞争人工神经网络正是基于上述生物系统结构和现象形成的。它是一种以无导师学习学习方式进行网络,具有自组织功能的神经网络。网络通过自身训练,自动对输入模式进行分类。
2 SOM拓扑结构分析
自组织特征映射神经网络(Self-organizing Feature Maps)简称SOFM或者SOM,也是一种无导师学习的网络,主要用于对输入向量进行区域分类。和自组织竞争网络不同的是,它不但识别输入区域临近的区域,还研究输入向量的分布特性和拓扑特性结构。
SOM网络模拟大脑神经系统自组织特征映射的功能,是一种竞争型网络,并在学习中能无导师进行自组织学习。
脑神经学研究结果表明:神经元之间的信息交互具有的共同特征是:最近邻的两个神经元互相激励,较远的神经元互相抑制,更远的则又具有较弱的激励作用。
在这里插入图片描述
由于SOM算法是一种无导师的聚类法,它能将任意维输入模式在输出层映射成一维或者二维离散图形,并保持其拓扑结构不变,即在无导师的情况下,通过对输入模式的自组织学习,在竞争层将分类结果表示出来,此外,网络通过对输入模式的反复学习,可以使连接权值空间分布密度与输入模式的概率分布趋于一致,即链接权向量分布能反映输入模式的统计特征。
和自组织竞争网络一样,SOM网络可以用来识别获胜神经元 ,不同的是,自组织竞争网络只修正获胜神经元,而SOM网络依据Kohonen学习规则,要同时修正获胜神经元附近区域Ni(d)内所有神经元。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3 SOM的癌症样本分类预测
SOM是一类采用无教师学习方式的神经网络模型,它无须期望输出,只是根据数据样本进行学习,并调整自身的权重以达到学习的目的。自组织神经网络的学习规则大都采用竞争型的学习规则。
竞争型神经网络的基本思想是网络竞争层的各神经元通过竞争来获取对输入模式的响应机会,最后仅由一个神经元成为胜利者,并将与获胜神经元有关的各连接权值朝向这更有利于的方向调整。
自组织映射神经网络用途:模式分类和模式识别。其具体网络层结构图如图29-8所示。
在这里插入图片描述

二、源代码

clc % 清屏
clear all; % 删除workplace变量
close all; % 关掉显示图形窗口
format short
% Initial
%% gridtop()网络拓扑结构
pos = gridtop(2,3)
figure,plotsom(pos)
grid on
%% Hextop()函数生成一个六角形形式的拓扑结构
pos = hextop(2,3)
figure,plotsom(pos)
grid on
%% 8*10 神经元拓扑结构来看看六角形神经元拓扑图像
pos = hextop(8,10)
figure,plotsom(pos)
grid on
%% randtop()函数生成的是N维随机形式分布的神经元拓扑结构
pos = randtop(2,3)
figure,plotsom(pos)
grid on
%% 网络建立和训练
% newsom建立SOM网络。minmax(P)取输入的最大最小值。竞争层为6*6=36个神经元
net=newsom(minmax(P),[6 6]);
plotsom(net.layers{
    
    1}.positions)
% 5次训练的步数
a=[10 30 50 100 200 500 1000];
% 随机初始化一个1*10向量。
yc=rands(7,8);
%% 进行训练
% 训练次数为10次
net.trainparam.epochs=a(1);
% 训练网络和查看分类
net=train(net,P);
y=sim(net,P);
yc(1,:)=vec2ind(y);
plotsom(net.IW{
    
    1,1},net.layers{
    
    1}.distances)

% 训练次数为30次
net.trainparam.epochs=a(2);
% 训练网络和查看分类
net=train(net,P);
y=sim(net,P);
yc(2,:)=vec2ind(y);
plotsom(net.IW{
    
    1,1},net.layers{
    
    1}.distances)

% 训练次数为50次
net.trainparam.epochs=a(3);
% 训练网络和查看分类
net=train(net,P);
y=sim(net,P);
yc(3,:)=vec2ind(y);
plotsom(net.IW{
    
    1,1},net.layers{
    
    1}.distances)

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、备注

完整代码或者代写添加QQ1564658423
往期回顾>>>>>>
【数据分析】基于matlab时变参数随机波动率向量自回归模型(TVP-VAR)【含Matlab源码 099期】
【数据分析】基于matlab自回归模型之时变参数随机波动率向量(TVP-VAR)【含Matlab源代码 153期】
【故障检测问题】基于matlab免疫算法之故障检测问题【含Matlab源码 196期】
【数据聚类】基于matlab粒子群算法之聚类设计【含Matlab源码 199期】
【数据聚类】基于matlab模拟退火算法聚类设计【含Matlab源码 200期】
【数据聚类】基于matlab遗传算法之聚类设计【含Matlab源码 201期】
【数据聚类】基于matlab蚁群算法聚类设计【含Matlab源码 202期】
【数据分析】基于matlab GUI界面之不同GUI 数据导入【含Matlab源码 211期】
【数据分析】基于matlab GUI界面之成绩管理系统【含Matlab源码 212期】
【数据分析】基于matlab GUI界面之万年历【含Matlab源码 213期】
【数据分析】基于matlab贝叶斯判别的机场航班延误因素分析【含Matlab源码 230期】

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/113725083