1、BP神经网络的非线性系统建模
%%newff:BP神经网络设置函数
net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
%%train:BP神经网络训练函数
[net,tr] = train(NET,X,T,Pi,Ai)
%%sim:BP神经网络预测函数
y = sim(net,x)
2、遗传算法优化BP神经网络
遗传算法基本操作有:选择,交叉,变异。
%%遗传算法主函数
%清空环境变量
clc;clear all;
%读取数据
load data input output
%网络结构
inputnum = 2;
hiddennum = 5;
outputnum = 1;
%获取训练数据和预测数据
input_train = input(1:1900,:);
input_test = input(1901:2000,:);
output_train = output(1:1900);
output_test = output(1901:2000);
%数据归一化
[inputn,inputps] = mapminmax(input_train);
[outputn,outputps] = mapminmax(output_train);
%构建网络
net = newff(inputn,outputn,hiddennum);
%遗传算法参数初始化
maxgen = 50; %迭代次数
sizepop = 10; %种群规模
pcross = [0,4]; %交叉概率
pautation = [0,2]; %编译概率
numsum = inputnum + hiddennum + outputnum
lenchrom = ones(1, numsum); %个体长度
bound = [-3 * ones(numsum, 1), 3*ones(numsum,1)] %个体范围
%种群信息定义为结构体
individuals = struct('fitness',zeros(1,sizepop),'chrom',[]);
avgfitness = []; %每代平均适应度值
bestfitness = []; %每代最佳适应度值
bestchrom = []; %最优个体
%计算个体适应度值
for i = 1 : sizepop
%个体初始化
individuals.chrom(i,:) = Code(lenchrom, bound);
%计算个体适应度
individuals.fitness(i) = fun(x, inputnum, hiddennum, outputnum, net, inputn, outputn);
end
%迭代寻优
for i = 1:maxgen
%选择操作
individuals = Select(individuals.sizepop);
%交叉操作
individuals.chrom = Cross(pross, lenchrom, individuals.chrom.sizepop, bound);
%变异操作
individuals.chrom = Mutation(pautation, lenchrom,individuals.chrom.sizepop, i, maxgen, bound);
%计算适应度值
for j = 1:sizepop
x = individuals.chrom(j.:); %个体
individual.fitness(j) = fun(x, inputnum, hiddennum, outputnum, net, inputn, outputn, n);
%寻找最优最差个体
[newbestfitness, newbestindex] = min(individuals.fitness);
[worsestfitness, worsestindex] = max(individuals.fitness);
%最优个体更新
if bestfitness > newbestfitness
bestfitness = newbestfitness;
bestchrom = individual.chrom(newbestindex,:);
end
individuals.chrom(worstindex,:) = bestchrom;
individuals.fitness(worstindex) = bestfitness;
%记录最优个体适应度值和平均适应度值
avgfitness = sum(individuals.fitness)/sizepop;
trace = [trace; avgfitness, bestfitness];
end
3、神经网络遗传算法函数极值寻优
4、基于BP_Adaboost的强分类器设计(公司财务预警建模)
Adaboost算法的思想是合并多个弱分类器来产生有效分类,步骤如下:
5、PID神经元解耦控制算法(应该不会用到)
6、RBF网络的回归
RBF神经网络概述
径向基函数(RBF)是多维空间插值的传统技术。RBF神经网络属于前向神经网络(输入层,隐藏层,输出层)。其基本思路为:用RBF作为隐单元的“基”构成隐藏层空间,隐含层对输入矢量进行变换,讲低维的模式输入数据变换到高维空间内,使得低维线性不可分变为高维度线性可分。
线性不可分
即不能通过一个线性分类器进行分类,主流的解决线性不可分的办法是通过核函数:
1)将输入的空间中样本映射到新的空间中,在新的空间中求内积;
2)找到一个核函数,它不需要将输入空间中的样本映射到新的空间中去,在输入空间中就可以直接计算出内积了。
7、GRNN的数据预测
GRNN神经网络概述
广义回归神经网络(GRNN)有很强的非线性映射能力和柔性网络结构以及高度的容错性和鲁棒性,适用于解决非线性问题。速度快。
(输入层,模式层,求和层,输出层)
8、离散 H o p f i e l d Hopfield Hopfield神经网络(数字识别)
也称DHNN,实现步骤如下:
这个matlab有工具箱。
9、SVM数据分类预测
支持向量机(SVM)用于模式分类和非线性回归。建立一个分类超平面作为决策屏幕,使得正例和反例之间的隔离边缘被最大化。
原理:
学习及其在测试集上的误差率和一个依赖于VC维数的项的和为界,在可分情况下,SVM前一项的值为0,并且第二项最小化。因此,虽然它不利用问题的领域内部问题,但是泛化性能好。
10、自组织竞争网络
11、SOM网络数据分类
自组织特征映射网络(SOM)是由一个全连接的神经元阵组成的无监督学习网络。当一个神经网络接受外界输入模式时,将会分为不同的反应区域,各区域对输入模式有不同的响应特性。
12、Elman神经网络
反馈型神经网络。
13、概率神经网络
基于贝叶斯理论,PNN。由四层组成(输入层,模式层,求和层,输出层)。
14、LVQ神经网络分类
学习向量量化是一种用于训练竞争层的有监督学习前向神经网络。由输入层,竞争层,线性输出层组成。matlab里用 n e w l v q ( ) newlvq() newlvq() 可直接建立。有个人脸朝向识别的demo。
15、小波神经网络的时间序列预测
小波特点
小波神经网络
以BP神经网络结构为基础,把小波简述作为隐含层节点的传递函数,前向传播的同时误差反向传播的神经网络。
16、模糊神经网络
T-S模糊模型(水质分析)
一种自适应能力很强的模糊系统,该模型不仅能自动更新,而且能不断修正模糊子集的隶属函数。类似于 i f . . . t h e n . . . if...then... if...then...格式。
17、广义神经网络的聚类算法
FCM聚类算法
模糊c均值聚类算法是用隶属度确定每个元素属于某个类别程度的一种聚类算法。步骤如下:
广义神经网络
径向基函数神经网络的一个分支,是一种属于非线性回归理论的前馈式神经网络。
18、粒子群优化算法的寻优算法(非线性函数极值寻优)
粒子群优化算法(PSO)中每个粒子都代表问题的一个潜在解,每个例子对应一个由适应度函数决定的适应度值,粒子的速度决定了粒子移动的方向和距离,速度随自身以及其他粒子的移动经验进行动态调整,从而实现个体再可解空间中的寻找。寻优的非线性函数实例:
y = − c 1 e − 0.2 1 n ∑ j = 1 n x i 2 − e 1 n ∑ j = 1 n c o s ( 2 π x j ) + c 1 + e y = -c_1e^{-0.2\sqrt{\frac{1}{n}\sum\limits_{j =1}^{n}x_i^2}}-e^{\frac{1}{n}\sum\limits_{j=1}^{n}cos(2\pi{x_j})}+c_1+e y=−c1e−0.2n1j=1∑nxi2−en1j=1∑ncos(2πxj)+c1+e
迭代寻优示例
%迭代寻优
for i = 1:maxgen
%粒子位置和速度更新
for j = 1:sizepop
%速度更新
V(j,:) = V(j,:) + c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:));
V(j,find(V(j,:) > Vmax)) = Vmax;
V(j,find(V(j,:) < Vmin)) = Vmin;
%粒子更新
pop(j,:) = pop(j,:) + 0.5*V(j,:);
pop(j,find(pop(j,:) > popmax)) = popmax;
pop(j,find(pop(j,:) < popmin)) = popmin;
%新粒子适应度值
fitness(j) = fun(pop(j,:));
end
%个体极值和群体极值更新
for j = 1:sizepop
%群体极值更新
if fitness(j) < fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitness(j);
end
%个体极值更新
if fitness(j) < fitnesszbest
zbest = pop(j,:);
fitnesszbest = fitness(j);
end
%每代最优值记录到yy数组中
yy(i) = fitnesszbest;
end
遗传算法有工具箱。
19、注意神经网络GUI使用,可以直接建立网络。