MATLAB预测算法与示例

本文最后更新于:17 天前

灰色系统

灰色系统理论是华中理工大学邓聚龙教授在1982年提出发展的.在我国已经成为社会、经济、科学技术等诸多领域进行预测、决策、评估、规划控制、系统分析与建模的重要方法。

特点:

对时间序列短、统计数据少、信息不完全系统的分析与建模,具有独特的功效。

  1. 用灰色数学处理不确定量,使之量化。
  2. 充分利用已知信息寻求系统的运动规律
  3. 灰色系统理论能处理贫信息系统

定义:

及含有已知信息又含有未知信息的系统称为灰色系统,区别于白色系统与黑色系统的重要标志是系统各因素之间是否具有确定的关系。

分类

  1. 数列预测(主要是时间序列)
  2. 灾变与异常值预测

方法

  1. 给定观测数据列:
  2. 经一次累加得:
  3. 假设$x^{(1)}$满足一阶常微分方程:其中$a$是常熟,$u$称为发展灰数,为内生控制灰数,是对系统的常定输入,此方程满足初始条件:
    当$t = t_0$时, $x^{(1)} = x^{(1)}(t_0)$的解为: $$ \[{x^{(1)}}(t) = \left[ {{x^{(1)}}({t_0}) - \frac{u}{a}} \right]{e^{ - a(t - {t_0})}} + \frac{u}{a}\] $$ 等间隔取样的离散值(注意到$t_0 = 1$)则为: $$ x^{(1)}(k+1) = \left[ x^{(1)}(1) - \frac{u}{a} \right] e^{-ak} + \frac{u}{a} $$
  4. 使用最小二乘法原理得到参数的估计值:

    其中$B$矩阵等于:

    y向量为:$y = {({x^{(0)}}(2),{x^{(0)}}(3),…,{x^{(0)}}(N))^T}$

  5. 精度检验

    1. 计算残差$E(t)$
    2. 计算相关统计量:样本的标准差(分母为$N$)$S_1$,样本残差的标准差(分母为$N-1$):$S_2$
    3. 计算后验差比值:$C = \frac{S_2}{S_1}$,小概率误差:$[ = P{ |E(k) - \bar E| < 0.6745{S_1}} ]$(T检验)

| :—-: | :—-: |
| 后验差大小C | 符合原假设的概率P |
| <0.35 | >0.95 |
| <0.45 | >0.80 |
| <0.50 | >0.70 |
| >=0.65 | <=0.70 |

BP神经网络

表述

人工神经网络是具有适应性的简单单元组成的广泛并行互连的网络,能模拟生物神经系统对真实世界物体所做出的交互反应。常采用误差反传算法或其变化形式的网络模型。

本质是数学近似映射,包括:

  1. 拟合->预测
  2. 分析->聚类分析

其具有:

  1. 自学习
  2. 自组织
  3. 较好容错性

基本结构

  1. 输入层
  2. 隐藏层
  3. 输出层
三层之间互不连接,输入层和隐藏层,输出层和隐藏层全连接。

步骤

  1. 网络结构的确定,包括网络拓部结构和每个神经元相应函数的选取
    输入与输出的关系:

    $$ \[ne{t_i} = \sum\limits_{j = 1}^n {{w_{ij}}{x_j}} - \theta = \sum\limits_{j = 0}^n {{w_{ij}}{x_j}} \\ y_i = f(net_i) $$

    激活函数可以使用:

    1. 线性函数$f(x) = kx + b$
    2. S型函数$f(x) = \frac{1}{1+e^{-ax}}$
    3. 阈值函数: $$ f(x) = \left\{ {\begin{array}{*{20}{l}} {T,}&{x > c}\\ {k*x,}&{|x| \le c}\\ { - T,}&{x < - c} \end{array}} \right. $$
    4. 双极S型函数:$f(x) = \frac{2}{1+e^{-ax}}-1$

    网络模型分类:

    1. 前馈神经网络
    2. 反馈神经网络
    3. 自组织神经网络
  2. 权值和阈值的确定

  3. 模拟

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

% 生成BP网络
% PR:由R维的输入样本最小最大值构成的R*2维矩阵
% [S1 S2 ... SNl]各层的神经元传递函数
% {TF1 TF2 ... TFNl}各层的神经元传递函数
% TF一般取值:'tansig', 'purelin'
% BTF训练用函数的名称
% BTF的可取值:
% traingd 梯度下降法
% traingdm 有动量的的梯度下降法
% traingda 自适应lr梯度下降法
% traingdx 自适应lr动量梯度下降法
% trainrp 弹性梯度下降法
% traincgf Fletcger-reeves共轭梯度法
% traincgp Ploak-Rbibiere共轭梯度法
% traincgb Powell-Beale共轭梯度法
% trainscg 量化共轭梯度法
% trainbfg 拟牛顿算法
% trainoss 一步正割算法
% trainlm Levenberg-Marquardt

net = newff(PR, [S1 S1 ... SNl], {TF1 TF2 ... TFNl}, BTF)


% 网络训练
net = train(net, P, T)


% 网络仿真

Y2 = sim(net, P2)


% 对象属性和参数

net.trainParam.show % int 输出结果的步长
net.trainParam.lr % double(0.01)学习率,误差率
net.trainParam.epochs % int 结束仿真的步数
net.trainParam.goal % double(1e-5) 结束仿真时的残差均平方和

蒙特卡洛方法

统计模拟法,随机抽样技术,是一种随机模拟方法,使用随机数来解决很多计算问题的方法。

表述

当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率,数学期望有关的量时,通过某种实验的方法,得出该事件发生的概率,或该随机变量若干个具体观察值的算术平均值,通过它得到问题的解。即使用随机数计算概率。

粒子群算法(PSO)

群体迭代,粒子在解空间追随最优的粒子进行搜索。

算法流程

  1. Initial
    初始化粒子群体,群体规模,随机位置和速度
  2. Evaluation
    根据fitness function,评价每个粒子的适应度
  3. Find the Gbest
    根据适应度更新全局最佳位置gbest,更新公式
    $[v{id}^k = wv{id}^{k - 1} + {c1}{r_1}(pbes{t{id}} - x{id}^{k - 1}) + {c_2}{r_2}(gbes{t_d} - x{id}^{k - 1})]$
  4. Update the Velocity
    根据公式更新每个粒子的速度与位置
    如果为满足结束条件,则返回步骤2,通常算法达到最大迭代次数G_max或者最佳适应度的增量小于阈值为止。
构成要素:
  1. 群体大小(int)
  2. 惯性因子$w$和学习因子$c_1,c_2$

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!