此示例显示如何使用ANFI进行混沌时间串联预测。
这个示例使用ANFIS.
来预测由下列麦基-格拉斯(MG)时滞微分方程产生的时间序列。
这个时间序列是混乱的,没有明确的周期。该级数既不收敛也不发散,而且轨迹对初始条件非常敏感。该基准问题被用于神经网络和模糊建模研究领域。
为了得到整点处的时间序列值,采用四阶龙格-库塔法对之前的MG方程进行数值求解。人们认为<年代pan class="inlineequation">
,<年代pan class="inlineequation">
, 和<年代pan class="inlineequation">
为<年代pan class="inlineequation">
.结果保存在文件中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)')
在时间序列预测中,您将时间序列的已知值达到时间点,<年代pan class="inlineequation">
,来预测未来某个时刻的价值,<年代pan class="inlineequation">
.这种类型预测的标准方法是创建一个映射<年代pan class="inlineequation">
样本数据点,每次采样<年代pan class="inlineequation">
单位及时(<年代pan class="inlineequation">
)到预测的未来价值<年代pan class="inlineequation">
.根据预测MG时间序列的常规设置,设置<年代pan class="inlineequation">
和<年代pan class="inlineequation">
.对于每一个人<年代pan class="inlineequation">
的输入训练数据ANFIS.
是如下形式的四列向量。
输出的训练数据对应于轨迹预测。
对于每一个人<年代pan class="inlineequation">
,取值范围从118到1117,有1000个输入/输出训练样本。对于本例,使用前500个样本作为训练数据(trnData
)和第二个500值作为检查数据进行验证(chkdata.
)。每行训练和检查数据阵列包含一个样本点,前四列包含四维输入<年代pan class="inlineequation">
第五列是输出<年代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)
生成的FIS对象包含<年代pan class="inlineequation"> = 16个具有104个参数的模糊规则(24个非线性参数和80个线性参数)。为了实现良好的泛化能力,重要的是训练数据点的数量比估计的数字参数大的数量大。在这种情况下,数据和参数之间的比率约为五(500/104),这是拟合参数和训练采样点之间的良好平衡。
要配置培训选项,请创建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)
绘制训练和检查错误信号。
图绘图([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">'错误曲线')
训练错误高于所有时代中的检查错误。这种现象在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预测)
预测的序列与原序列相似。
计算并绘制预测误差。
Diff = x(index) - anfis_output;情节(时间(索引),diff)包含(<年代pan style="color:#A020F0">'时间(秒)') 标题(<年代pan style="color:#A020F0">预测错误的)
预测误差图的尺度约为时间序列图尺度的百分之一。在这个例子中,你只训练了系统10个纪元。对新时期的训练可以提高训练效果。
ANFIS.
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">evalfis
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">Genfis.