主要内容

利用Type-2 FIS预测混沌时间序列

这个例子展示了使用调谐的2型模糊推理系统(FIS)进行混沌时间序列预测。本例使用粒子群优化优化FIS,这需要全局优化工具箱™软件。

时间序列数据

本例使用以下形式的麦基-格拉斯(MG)非线性时滞微分方程来模拟时间序列数据。

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

使用以下配置模拟1200个样本的时间序列。

  • 样品时间<年代pan class="inlineequation"> t 年代 1 证券交易委员会

  • 初始条件<年代pan class="inlineequation"> x 0 1 2

  • τ 20.

  • x t - τ 0 为<年代pan class="inlineequation"> t < τ

Ts = 1;numSamples = 1200;Tau = 20;x = 0 (1,numSamples+tau+1);X (tau+1) = 1.2;<年代pan style="color:#0000FF">为t = 1 +τ:numSamples + x (t-tau) /τx_dot = 0.2 * (1 + (x (t-tau)) ^ 10) -0.1 * x (t);X (t+1) = X (t) + ts*x_dot;<年代pan style="color:#0000FF">结束

绘制模拟MG时间序列数据。

图(1)plot(x(tau+2:end))<年代pan style="color:#A020F0">“麦基-格拉斯混沌时间序列”)包含(<年代pan style="color:#A020F0">的时间(秒)) ylabel (<年代pan style="color:#A020F0">“x (t)”)

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

生成训练和验证数据

时间序列预测使用到目前为止已知的时间序列值<年代pan class="emphasis">t在某一时刻预测未来的价值<年代pan class="inlineequation"> t + P 。这种类型的预测的标准方法是从<年代pan class="emphasis">D样本数据点,在每个Δ单位的时间内采样(<年代pan class="inlineequation"> x t - D - 1 Δ ... x t - Δ x t )到预测的未来价值<年代pan class="inlineequation"> x t + P 。对于本例,设置<年代pan class="inlineequation"> D 4 而且<年代pan class="inlineequation"> Δ P 1 。因此,对于每个<年代pan class="emphasis">t,输入输出训练数据集为<年代pan class="inlineequation"> ( x t - 3. x t - 2 x t - 1 x t 而且<年代pan class="inlineequation"> x t + 1 ,分别。换句话说,使用四个连续的已知时间序列值来预测下一个值。

从样本中创建1000个输入/输出数据集<年代pan class="inlineequation"> x One hundred. + D - 1 来<年代pan class="inlineequation"> x 1100 + D - 2

D = 4;inputData = 0 (1000,D);outputData = 0 (1000,1);<年代pan style="color:#0000FF">为t = 100+D-1:1100+D-2<年代pan style="color:#0000FF">为i = 1:D inputData(t-100-D+2) = x(t-D+i);<年代pan style="color:#0000FF">结束outputData(t-100- d +2,:) = x(t+1);<年代pan style="color:#0000FF">结束

使用前500个数据集作为训练数据(trnX而且trnY)和第二500组作为验证数据(vldX而且vldY)。

trnX = inputData(1:500,:);trnY = outputData(1:500,:);vldX = inputData(501:end,:);vdy = outputData(501:end,:);

构建金融中间人

本例使用type-2 Sugeno FIS。由于Sugeno FIS比Mamdani FIS具有更少的可调参数,因此Sugeno系统在优化过程中通常收敛得更快。

Fisin = sugfistype2;

添加三个输入,每个输入有三个默认三角成员函数(mf)。最初,通过设置每个下MF等于其对应的上MF来消除每个输入MF的不确定性足迹(FOU)。为此,将每个较低MF的刻度和滞后值设置为1而且0,分别。通过消除所有输入隶属函数的FOU,可以将type-2 FIS配置为与type-1 FIS一样的行为。

numInputs = D;numInputMFs = 3;范围= [min(x) max(x)];<年代pan style="color:#0000FF">为i = 1:numInputs fisin = addInput(fisin,range,<年代pan style="color:#A020F0">“NumMFs”, numInputMFs);<年代pan style="color:#0000FF">为j = 1:numInputMFs finin . inputs (i). membershipfunctions (j)。LowerScale = 1;fisin.Inputs (i) .MembershipFunctions (j)。LowerLag = 0;<年代pan style="color:#0000FF">结束结束

为了进行预测,向FIS添加一个输出。输出包含默认的常量成员函数。要为输入-输出映射提供最大分辨率,请将输出MF的数量设置为输入MF组合的数量。

numOutputMFs = numInputMFs^numInputs;fishin = addOutput(fishin,range,<年代pan style="color:#A020F0">“NumMFs”, numOutputMFs);

查看FIS结构。最初,FIS没有任何规则。系统的规则是在调优过程中发现的。

plotfis (fisin)

图中包含6个轴对象。Axes对象1包含6个line类型的对象。坐标轴对象2包含6个line类型的对象。Axes对象3包含6个line类型的对象。Axes对象4包含6个line类型的对象。Axes对象5包含一个text类型的对象。Axes对象6包含一个text类型的对象。

使用训练数据调优FIS

要调优FIS,您可以使用以下三个步骤。

  1. 学习规则库,同时保持输入和输出MF参数不变。

  2. 调整输出MF参数和输入的上MF参数,同时保持规则和下MF参数不变。

  3. 调整输入的下MF参数,同时保持规则、输出MF和上MF参数不变。

第一步由于规则参数较少,计算量较小,并且在训练过程中快速收敛到模糊规则库。在第二步之后,该系统是一个经过训练的1型FIS。第三步产生调优的type-2 FIS。

学习规则

方法指定调优选项,以了解规则库tunefisOptions对象。

options = tunefisOptions;

由于FIS不包含任何预先调优的模糊规则,因此使用全局优化方法(遗传算法或粒子群)来学习规则。与局部优化方法(模式搜索和模拟退火)相比,全局优化方法在大参数调优范围内表现更好。对于本例,使用粒子群优化优化FIS (“particleswarm”)。

选项。方法=<年代pan style="color:#A020F0">“particleswarm”;

要学习新规则,设置OptimizationType“学习”

选项。OptimizationType =<年代pan style="color:#A020F0">“学习”;

将规则的最大数量限制为输入MF组合的数量。调优规则的数量可以小于此限制,因为调优过程会删除重复的规则。

选项。NumMaxRules = numInputMFs^numInputs;

如果您拥有并行计算工具箱™软件,则可以通过设置UseParallel真正的。如果没有并行计算工具箱软件,请设置UseParallel

选项。UseParallel = false;

将最大迭代次数设置为10。增加迭代次数可以减少训练误差。然而,大量的迭代增加了调优过程的持续时间,并可能对训练数据的规则参数进行调整。

options.MethodOptions.MaxIterations = 10;

由于粒子群优化使用随机搜索,为了获得可重复的结果,请将随机数生成器初始化为默认配置。

rng (<年代pan style="color:#A020F0">“默认”)

方法调优FIStunefis函数需要几分钟。对于本例,通过设置启用调优runtunefis真正的。在不运行的情况下加载预训练的结果tunefis,您可以设置runtunefis

Runtunefis = false;

使用指定的训练数据和选项调优FIS。

如果runtunefis fisout1 = tunefis(fisin,[],trnX,trnY,options);<年代pan style="color:#0000FF">其他的Tunedfis = load(<年代pan style="color:#A020F0">“tunedfischaotictimeseriestype2.mat”);Fisout1 = tunedfis.fisout1;<年代pan style="color:#0000FF">结束

查看训练后的FIS结构,其中包含新学习到的规则。

plotfis (fisout1)

图中包含6个轴对象。Axes对象1包含6个line类型的对象。坐标轴对象2包含6个line类型的对象。Axes对象3包含6个line类型的对象。Axes对象4包含6个line类型的对象。Axes对象5包含一个text类型的对象。Axes对象6包含一个text类型的对象。

检查由学习规则库调优的各个输入-输出关系。例如,下图显示了第二次输入和输出之间的关系。

gensurf (fisout1 gensurfOptions (<年代pan style="color:#A020F0">“InputIndex”2))

图中包含一个轴对象。axis对象包含一个line类型的对象。

使用输入验证数据评估调优后的FIS。将实际生成的输出与预期的验证输出绘制在一起,并计算均方根误差(RMSE)。

plotActualAndExpectedResultsWithRMSE (fisout1 vldX vldY)

图中包含一个轴对象。标题为RMSE = 0.12635的axes对象包含2个line类型的对象。这些对象表示实际输出、预期输出。

调优上层隶属函数参数

调优上层隶属函数参数。type-2 Sugeno FIS只支持金宝app清晰的输出函数。因此,这个步骤调优输入上层mf和脆化输出函数。

获取输入和输出参数设置getTunableSettings。由于FIS使用三角形输入mf,您可以使用非对称滞后值来优化输入mf。

[in,out] = gettunlesettings (fisout1,<年代pan style="color:#A020F0">“AsymmetricLag”,真正的);

禁用下MF参数调优。

I = 1:长度(in)<年代pan style="color:#0000FF">为j = 1:length(in(i). membershipfunctions) in(i). membershipfunctions (j). lowerscale . length(in(i). membershipfunctions)Free = false;(我).MembershipFunctions .LowerLag (j)。Free = false;<年代pan style="color:#0000FF">结束结束

若要优化现有的可调MF参数,同时保持规则库不变,请设置OptimizationType“优化”

选项。OptimizationType =<年代pan style="color:#A020F0">“优化”;

使用指定的调优数据和选项调优FIS。在不运行的情况下加载预训练的结果tunefis,您可以设置runtunefis

rng (<年代pan style="color:#A020F0">“默认”)<年代pan style="color:#0000FF">如果runtunefis fisout2 = tunefis(fisout1,[in;out],trnX,trnY,options);<年代pan style="color:#0000FF">其他的Tunedfis = load(<年代pan style="color:#A020F0">“tunedfischaotictimeseriestype2.mat”);Fisout2 = tunedfis.fisout2;<年代pan style="color:#0000FF">结束

查看经过训练的FIS的结构,它现在包含调优的上MF参数。

plotfis (fisout2)

图中包含6个轴对象。Axes对象1包含6个line类型的对象。坐标轴对象2包含6个line类型的对象。Axes对象3包含6个line类型的对象。Axes对象4包含6个line类型的对象。Axes对象5包含一个text类型的对象。Axes对象6包含一个text类型的对象。

使用验证数据评估调优的FIS,计算RMSE,并将实际生成的输出与预期的验证输出绘制出来。

plotActualAndExpectedResultsWithRMSE (fisout2 vldX vldY)

图中包含一个轴对象。标题为RMSE = 0.062922的axes对象包含2个line类型的对象。这些对象表示实际输出、预期输出。

调整上MF参数可以提高FIS的性能。这个结果相当于调优type-1 FIS。

调优较低隶属函数参数

只调优输入下MF参数。为此,将较低的刻度和滞后值设置为可调的,并禁用上MF参数的调优。

I = 1:长度(in)<年代pan style="color:#0000FF">为j = 1:length(in(i). membershipfunctions) in(i). membershipfunctions (j). upperparameters。Free = false;(我).MembershipFunctions .LowerScale (j)。Free = true;(我).MembershipFunctions .LowerLag (j)。Free = true;<年代pan style="color:#0000FF">结束结束

使用指定的调优数据和选项调优FIS。在不运行的情况下加载预训练的结果tunefis,您可以设置runtunefis

rng (<年代pan style="color:#A020F0">“默认”)<年代pan style="color:#0000FF">如果runtunefis fisout3 = tunefis(fisout2,in,trnX,trnY,options);<年代pan style="color:#0000FF">其他的Tunedfis = load(<年代pan style="color:#A020F0">“tunedfischaotictimeseriestype2.mat”);Fisout3 = tunedfis.fisout3;<年代pan style="color:#0000FF">结束

已训练FIS的视图结构,现在包含调优的较低MF参数。

plotfis (fisout3)

图中包含6个轴对象。Axes对象1包含6个line类型的对象。坐标轴对象2包含6个line类型的对象。Axes对象3包含6个line类型的对象。Axes对象4包含6个line类型的对象。Axes对象5包含一个text类型的对象。Axes对象6包含一个text类型的对象。

使用验证数据评估调优的FIS,计算RMSE,并将实际生成的输出与预期的验证输出绘制出来。

plotActualAndExpectedResultsWithRMSE (fisout3 vldX vldY)

图中包含一个轴对象。标题为RMSE = 0.047573的axes对象包含2个line类型的对象。这些对象表示实际输出、预期输出。

调整上、下MF值可以提高FIS的性能。当训练的FIS包括调优的上参数值和下参数值时,RMSE得到改善。

结论

与type-1 mf相比,Type-2 mf提供了额外的可调参数。因此,在训练数据充足的情况下,调优的type-2 FIS比调优的type-1 FIS能更好地拟合训练数据。

总的来说,您可以通过修改以下任何FIS属性或调优选项来产生不同的调优结果:

  • 输入数量

  • mf数量

  • mf的类型

  • 优化方法

  • 调优迭代次数

本地函数

函数[rmse,actY] = calculateRMSE(fis,x,y)<年代pan style="color:#228B22">指定FIS评估的选项evalOptions = evalfisOptions(<年代pan style="color:#A020F0">“EmptyOutputFuzzySetMessage”,<年代pan style="color:#A020F0">“没有”,<年代pan style="color:#0000FF">...“NoRuleFiredMessage”,<年代pan style="color:#A020F0">“没有”,<年代pan style="color:#A020F0">“OutOfRangeInputValueMessage”,<年代pan style="color:#A020F0">“没有”);<年代pan style="color:#228B22">评估FISactY = evalfis(fis,x,evalOptions);<年代pan style="color:#228B22">计算RMSEdel = actY - y;Rmse =√(mean(del.^2));<年代pan style="color:#0000FF">结束函数plotActualAndExpectedResultsWithRMSE(fis,vldX,vldY) [rmse,actY] = calculateRMSE(fis,vldX,vldY);([0长度(vdy) min(vdy)-0.01最大(vdy)+0.13])<年代pan style="color:#A020F0">“样本指数”) ylabel (<年代pan style="color:#A020F0">的信号值)标题(<年代pan style="color:#A020F0">' rmse = 'num2str (rmse)])传说([<年代pan style="color:#A020F0">“实际产出”“预期的输出”),<年代pan style="color:#A020F0">“位置”,<年代pan style="color:#A020F0">“东北”)<年代pan style="color:#0000FF">结束

另请参阅

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

相关的话题