【自组织竞争网络】自组织竞争网络进行分类的一个小案例
注:本文仅作为自己的学习记录以备以后复习查阅
一 概述
自组织神经网络可以通过对客观事件的重复分析学习该事件的内在规律,并对具有类似/共同特征的新事物进行分类,它的基本思想类似于比赛,通过竞争来获得对输入模式的响应机会,最后也只会有一个神经元成为胜利者,那么各个连接的权重值就会向着更有利于胜利神经元(代表了当前输入样本的竞争模式)竞争的方向进行调整。
如图所示,可以将网络分为两个层(一般来说也就两层),分别是竞争层
和输入层
,网络连接的权值为:
满足约束条件:
竞争层神经元状态的计算方式:
竞争后的权值修正公式如下(当xij活跃时,对应的第i个权值增加,否则减小):
二 案例(MATLAB实现)
案例中使用到的关键函数为net()
,调用格式如下:
net = newc(PR,S,KLR,CLR)# PR为R个输入元素的最大值和最小值的设定值;S为神经元数目;KLS为Kohonen的学习速率,默认为0.01;CLR为Conscience学习速率,默认为0.001;net为函数的返回值,一个新的竞争层
首先清空环境变量,并加载数据。原始数据一共包含60个样本,将其分为40个训练样本和20个预测样本:
# 清空环境变量
clc
clear
# 加载数据并进行划分
load gene.mat;
data=gene;
P=data(1:40,:);
T=data(41:60,:);# 转置
P=P';
T=T';
# 取输入元素的最大值和最小值
Q=minmax(P);
接下来进行网络的建立和训练:
# 利用newc( )命令建立竞争网络:2代表竞争层的神经元个数,也就是要分类的个数。0.1代表学习速率。
net=newc(Q,2,0.1)# 初始化网络及设定网络参数:
net=init(net);
net.trainparam.epochs=20;
# 训练网络:
net=train(net,P);
验证训练后的网络效果:
# 将原数据回带,测试网络效果:
a=sim(net,P);
ac=vec2ind(a)
网络分类预测:
Y=sim(net,T)
yc=vec2ind(Y)
yc就是我们的分类结果
三 参考资料
1、MATLAB神经网络43个案例分析
以上!!!!!!