主要内容

利用ANFIS预测混沌时间序列

此示例显示如何使用ANFI进行混沌时间串联预测。

时间序列数据

这个示例使用ANFIS.来预测由下列麦基-格拉斯(MG)时滞微分方程产生的时间序列。

x ˙ t 0 2 x t - τ. 1 + x 1 0 t - τ. - 0 1 x t

这个时间序列是混乱的,没有明确的周期。该级数既不收敛也不发散,而且轨迹对初始条件非常敏感。该基准问题被用于神经网络和模糊建模研究领域。

为了得到整点处的时间序列值,采用四阶龙格-库塔法对之前的MG方程进行数值求解。人们认为<年代pan class="inlineequation"> x 0 1 2 ,<年代pan class="inlineequation"> τ. 1 7 , 和<年代pan class="inlineequation"> x t 0 为<年代pan class="inlineequation"> t < 0 .结果保存在文件中mgdata.dat.

加载并绘制MG时间序列。

负载<年代pan style="color:#A020F0">mgdata.dat.时间= mgdata(:,1);x = mgdata(:,2);图(1)绘图(时间,x)标题(<年代pan style="color:#A020F0">“麦基-格拉斯混沌时间序列”)Xlabel(<年代pan style="color:#A020F0">'时间(秒)')ylabel(<年代pan style="color:#A020F0">'x(t)')

图中包含一个轴。标题为麦基-格拉斯混沌时间序列的轴包含一个类型为line的对象。

数据进行预处理

在时间序列预测中,您将时间序列的已知值达到时间点,<年代pan class="inlineequation"> t ,来预测未来某个时刻的价值,<年代pan class="inlineequation"> t + P .这种类型预测的标准方法是创建一个映射<年代pan class="inlineequation"> D 样本数据点,每次采样<年代pan class="inlineequation"> δ. 单位及时(<年代pan class="inlineequation"> x t - D - 1 δ. ... x t - δ. x t )到预测的未来价值<年代pan class="inlineequation"> x t + P .根据预测MG时间序列的常规设置,设置<年代pan class="inlineequation"> D 4 和<年代pan class="inlineequation"> δ. P 6 .对于每一个人<年代pan class="inlineequation"> t 的输入训练数据ANFIS.是如下形式的四列向量。

w t x t - 1 9 x t - 1 2 x t - 6 x t

输出的训练数据对应于轨迹预测。

年代 t x t + 6

对于每一个人<年代pan class="inlineequation"> t ,取值范围从118到1117,有1000个输入/输出训练样本。对于本例,使用前500个样本作为训练数据(trnData)和第二个500值作为检查数据进行验证(chkdata.)。每行训练和检查数据阵列包含一个样本点,前四列包含四维输入<年代pan class="inlineequation"> w 第五列是输出<年代pan class="inlineequation"> 年代

构建培训和检查数据阵列。

t = 118:1117数据(t-117,:) = [x(t-18)x(t-12)x(t-6)x(t)x(t + 6)];<年代pan style="color:#0000FF">结束trndata =数据(1:500,:);chkdata =数据(501:结束,:);

构建初始模糊系统

创建初始Sugeno FIS对象用于使用Genfis.具有网格分区的函数。

fis = genfis (trnData (: 1: end-1), trnData(:,结束),<年代pan style="color:#0000FF">...GenfisOptions(<年代pan style="color:#A020F0">'gridpartition'));

FIS输入和输出的数量对应于输入和输出训练数据中的列数,四个和一个。

默认,Genfis.为四个输入中的每一个创建两个通用bell成员函数。每个变量的初始隶属函数间隔相等,覆盖整个输入空间。

图次要情节(2 2 1)plotmf (fis,<年代pan style="color:#A020F0">“输入”1)次要情节(2,2,2)plotmf (fis,<年代pan style="color:#A020F0">“输入”, 2)次要情节(2,2,3)plotmf (fis,<年代pan style="color:#A020F0">“输入”,3)子图(2,2,4)plotmf(fis,<年代pan style="color:#A020F0">“输入”4)

图包含4个轴。轴1包含4个类型的线,文本的4个对象。轴2包含4型对象的类型线,文本。轴3包含4个类型的类型,文本。轴4包含4个类型的线条,文本。

生成的FIS对象包含<年代pan class="inlineequation"> 2 4 = 16个具有104个参数的模糊规则(24个非线性参数和80个线性参数)。为了实现良好的泛化能力,重要的是训练数据点的数量比估计的数字参数大的数量大。在这种情况下,数据和参数之间的比率约为五(500/104),这是拟合参数和训练采样点之间的良好平衡。

简称ANFIS训练模型

要配置培训选项,请创建anfisOptions选项集,指定初始FIS和验证数据。

选项= ANFISOPTIONS(<年代pan style="color:#A020F0">“InitialFIS”金融中间人,<年代pan style="color:#A020F0">'vightationdata',chkdata);

使用指定的培训数据和选项列车FIS。

[fis1, error1,党卫军,fis2, error2] =简称anfis (trnData、期权);
ANFIS信息:节点数量:55线性参数数:80非线性参数数:24参数总数:104培训数量数据数对:500个检查数据对:500个模糊规则:16开始培训ANFIS。..10。002960460。00292488 2 0.00290346 0.0028684 3 0.00285048 0.00281544 4 0.00280117 0.00276566 Step size increases to 0.011000 after epoch 5. 5 0.00275517 0.00271874 6 0.00271214 0.00267438 7 0.00266783 0.00262818 8 0.00262626 0.00258435 Step size increases to 0.012100 after epoch 9. 9 0.00258702 0.00254254 10 0.00254972 0.00250247 Designated epoch number reached. ANFIS training completed at epoch 10. Minimal training RMSE = 0.00254972 Minimal checking RMSE = 0.00250247

fis1是训练误差最小的训练时期的训练模糊推理系统。由于您指定了验证数据,具有最小检查错误的模糊系统,fis2,也被归还。检验误差最小的FIS在训练数据之外具有最好的泛化效果。

绘制训练系统的隶属函数。

图次要情节(2 2 1)plotmf (fis2,<年代pan style="color:#A020F0">“输入”1)次要情节(2,2,2)plotmf (fis2,<年代pan style="color:#A020F0">“输入”,2)子图(2,2,3)plotmf(FIS2,<年代pan style="color:#A020F0">“输入”,3)子图(2,2,4)plotmf(FIS2,<年代pan style="color:#A020F0">“输入”4)

图包含4个轴。轴1包含4个类型的线,文本的4个对象。轴2包含4型对象的类型线,文本。轴3包含4个类型的类型,文本。轴4包含4个类型的线条,文本。

绘图错误曲线

绘制训练和检查错误信号。

图绘图([ERROR1 ERROR2])保持<年代pan style="color:#A020F0">上绘图([错误1 ERROR2],<年代pan style="color:#A020F0">'o')传说(<年代pan style="color:#A020F0">'训练错误',<年代pan style="color:#A020F0">'检查错误')Xlabel(<年代pan style="color:#A020F0">“时代”)ylabel(<年代pan style="color:#A020F0">均方根误差) 标题(<年代pan style="color:#A020F0">'错误曲线')

图中包含一个轴。具有标题错误曲线的轴包含4个类型的类型。这些对象表示训练错误,检查错误。

训练错误高于所有时代中的检查错误。这种现象在ANFIS学习或一般非线性回归中并不罕见;它可能表明,额外的培训可以产生更好的培训结果。

比较原始和预测的系列

要检查训练系统的预测能力,请使用培训和检查数据进行评估模糊系统,并将结果与​​原始的结果绘制

anfis_output = evalfis (fis2, [trnData (:, 1:4);chkData (: 1:4)]);图指数= 125:1124;情节(时间(指数),[x(指数)anfis_output])包含(<年代pan style="color:#A020F0">'时间(秒)') 标题(<年代pan style="color:#A020F0">MG时间序列和ANFIS预测)

图中包含一个轴。标题为MG时间序列的轴和ANFIS预测的轴包含2个类型线的对象。

预测的序列与原序列相似。

计算并绘制预测误差。

Diff = x(index) - anfis_output;情节(时间(索引),diff)包含(<年代pan style="color:#A020F0">'时间(秒)') 标题(<年代pan style="color:#A020F0">预测错误的)

图中包含一个轴。标题为“预测错误”的轴包含一个类型为line的对象。

预测误差图的尺度约为时间序列图尺度的百分之一。在这个例子中,你只训练了系统10个纪元。对新时期的训练可以提高训练效果。

另请参阅

|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">

相关话题