主要内容

简称anfis

利用训练数据调整sugeno型模糊推理系统

描述

例子

金融中间人=简称anfis (trainingData生成单输出Sugeno模糊推理系统(FIS),并使用指定的输入/输出训练数据调整系统参数。FIS对象是使用网格分区自动生成的。

该训练算法使用最小二乘和反向传播梯度下降方法的组合来建模训练数据集。

例子

金融中间人=简称anfis (trainingData选项使用指定的训练数据和选项调优FIS。使用这个语法,你可以指定:

  • 要调整的初始FIS对象。

  • 防止对训练数据过拟合的验证数据。

  • 培训算法选项。

  • 是否显示培训进度信息。

例子

金融中间人trainError) =简称anfis (___返回每个培训时代的根均方训练错误。

例子

金融中间人trainError一步的大小) =简称anfis (___返回每个训练阶段的训练步长。

例子

金融中间人trainError一步的大小chkFISchkError) =简称anfis (trainingData选项返回每个培训时期的验证数据错误,chkError,以及验证错误最小的优化FIS对象,chkFIS.要使用此语法,您必须使用options.ValidationData.

例子

全部折叠

加载培训数据。该数据具有单个输入和单个输出。

负载fuzex1trnData.dat

生成并培训模糊推理系统。缺省情况下,使用具有两个隶属函数的输入变量范围的网格分区创建FIS结构。

fis =简称anfis (fuzex1trnData);
ANFIS信息:节点数:12线性参数数:4非线性参数数:6参数数:10训练数据对数:25检查数据对数:0模糊规则数:2开始训练ANFIS…1 0.229709 2 0.22896 3 0.228265 4 0.227624步长在epoch 5之后增加到0.011000。5 0.227036 6 0.2265 7 0.225968 8 0.225488步长在epoch 9之后增加到0.012100。9 0.225052 10 0.22465指定的epoch号已达到。ANFIS训练在epoch 10完成。最小训练RMSE = 0.22465

绘制ANFIS输出和培训数据。

x = fuzex1trnData (: 1);anfisOutput = evalfis (fis, x);情节(x, fuzex1trnData (:, 2),“* r”,x,anfisoutput,“。b”)传说('培训数据'简称ANFIS输出的'地点'“西北”

图中包含一个轴。坐标轴包含两个line类型的对象。这些对象表示培训数据,ANFIS输出。

ANFIS数据与培训数据不符。改善比赛:

  • 增加FIS结构中的成员函数数量4.这样做为系统添加了模糊规则和可调参数。

  • 增加训练时期的数量。

选择= anfisOptions (“InitialFIS”,4,“EpochNumber”, 40);

抑制错误和步长命令窗口显示。

opt.DisplayErrorValues = 0;opt.displaystepsize = 0;

培养金融中间人。

fis =简称anfis (fuzex1trnData,选择);
ANFIS信息:节点数量:20线性参数数:8非线性参数数:12总参数数:20个培训数量数据数量:25次数检查数据对:0模糊规则数:4次训练RMSE =0.0833853.

绘制ANFIS输出和培训数据。

图anfisOutput = evalfis(fis,x);情节(x, fuzex1trnData (:, 2),“* r”,x,anfisoutput,“。b”)传说('培训数据'简称ANFIS输出的'地点'“西北”

图中包含一个轴。坐标轴包含两个line类型的对象。这些对象表示培训数据,ANFIS输出。

训练数据和ANFIS输出之间的匹配已得到改善。

创建单输入,单输出培训数据。

x =(0:0.1:10)”;y =罪(2 * x) / exp (x / 5);

定义一个初始FIS结构与五个高斯输入隶属函数。

genOpt = genfisOptions ('gridpartition');genOpt。NumMembershipFunctions = 5; genOpt.InputMembershipFunctionType =“gaussmf”;不定式= genfis (x, y, genOpt);

配置ANFIS培训选项。设置初始FIS,并抑制训练进度显示。

选择= anfisOptions (“InitialFIS”,Infis);opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;

使用指定的选项培训FIS。

Outfis = ANFIS([x y],选择);

将ANFIS输出与培训数据进行比较。

plot(x,y,x,evalfis(outfis,x))传奇('培训数据'简称ANFIS输出的

图中包含一个轴。坐标轴包含两个line类型的对象。这些对象表示培训数据,ANFIS输出。

加载培训数据。该数据具有单个输入和单个输出。

负载fuzex2trnData.dat

指定培训选项。

选择= anfisOptions (“InitialFIS”,4,“EpochNumber”, 40);opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;

培训FIS,并返回培训错误。

[fis, trainError] =简称anfis (fuzex2trnData,选择);

trainError包含每个培训时代的培训数据的根均方误差。训练错误金融中间人是最低价值trainError

fisrmse = min(trainerror)
fisRMSE = 0.2572

创建单输入,单输出培训数据。

x =(0:0.1:10)”;y =罪(2 * x) / exp (x / 5);

配置ANFIS培训选项。设置初始FIS,并抑制训练进度显示。

选择= anfisOptions (“InitialFIS”,4,“EpochNumber”、60);opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;

步长增加速率越大,训练收敛速度越快。然而,过多地增加步长增量会导致较差的收敛性。对于本例,尝试将步长增加速率加倍。

opt.StepSizeIncreaseRate = 2 * opt.StepSizeIncreaseRate;

训练FIS,并返回步长数组。

[fis,~,stepSize] = anfis([x y],opt);

绘制步长剖面。最优步长轮廓应该首先增加,达到最大值,然后在剩下的训练中减少。

图绘制(stepSize)

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

加载培训数据。

负载fuzex1trnData.dat

加载验证数据。

负载fuzex1chkdata.dat.

指定以下培训选项:

  • 4输入隶属度函数

  • 30.培训时期

  • 抑制训练进度显示

选择= anfisOptions (“InitialFIS”,4,“EpochNumber”,30);opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;

将验证数据添加到培训选项。

opt.validationData = fuzex1chkdata;

培训FIS,并返回验证结果。

[fis, trainError stepSize、chkFIS chkError] =简称anfis (fuzex1trnData,选择);

训练误差,trainError,验证错误,chkError,每个数组在每个训练时期包含一个错误值。绘制训练错误和验证错误。

x = (1:30);情节(x, trainError,“。b”, x, chkError“* r”

图中包含一个轴。坐标轴包含两个line类型的对象。

最小验证错误出现在epoch 17。此时验证误差增大,说明模型参数对训练数据过拟合。因此,调谐后的FIS在第17期,chkFIS,展示最佳的概括性表现。

输入参数

全部折叠

训练数据,指定为数组。对于具有N输入,指定trainingData作为一个数组N+ 1列。第一个N列包含输入数据,最后一列包含输出数据。每一行的trainingData包含一个数据点。

一般来说,训练数据应该完全代表FIS拟建模的数据的特征。

培训选项,指定为anfisOptions选项设置。使用选项,您可以指定:

  • 要调整的初始FIS结构options.initialfis.

  • 防止对训练数据过拟合的验证数据,options.ValidationData.

  • 培训算法选项,例如培训时期的最大数量,选项。EpochNumber或者训练错误目标,选项。ErrorGoal

  • 是否显示训练进度信息,例如每个训练阶段的训练错误值,选项。DisplayErrorValues

输出参数

全部折叠

训练模糊推理系统与隶属度函数参数调整使用训练数据,返回作为Mamfis.或者Sugfis.对象。该模糊系统对应于训练误差最小的时期。如果两个epoch有相同的最小训练误差,则返回前一个epoch的FIS。

每个训练历元的均方根训练误差,以数组形式返回。中最小值trainError是模糊系统的训练误差吗金融中间人

每个epoch的训练步长,以数组形式返回。的简称anfis训练算法采用梯度下降优化方法调整FIS参数。训练步长是参数空间中梯度过渡的大小。

理想情况下,步长在训练开始时增加,达到最大值,然后在余下的训练中减少。要实现这个步长配置文件,请调整初始步长(选项.InitialStepsize.),步长增加率(options.stepsizeincreasate),步长减小率选项.stepsizeCreaseate

验证错误最小的优化FIS,返回为Mamfis.或者Sugfis.对象。如果两个epoch有相同的最小验证错误,则返回较早一个epoch的FIS。

chkFIS仅在使用验证数据时才返回options.ValidationData.

均方根训练误差,作为长度等于训练epoch数的数组返回。中最小值chkError是模糊系统的训练误差吗chkFIS

chkError仅在使用验证数据时才返回options.ValidationData.

替代功能

tunefis功能

从R2019A开始,您可以使用模糊系统使用tunefis.控件指定的其他几个调优算法选项tunefisOptions对象。

要使用ANFIS,将调优算法指定为简称anfis”tunefisOptions.然后,使用options对象作为输入参数tunefis.例如:

创建初始模糊推理系统,并定义可调参数设置。

x =(0:0.1:10)”;y =罪(2 * x) / exp (x / 5);选择= genfisOptions ('gridpartition');选项。NumMembershipFunctions = 5; fisin = genfis(x,y,options); [in,out,rule] = getTunableSettings(fisin);

使用。调优成员关系函数参数简称anfis”

opt = tunefisoptions(“方法”简称anfis”);fisout = tunefis (fisin [;], x, y,选择);

兼容性考虑因素

全部展开

警告从R2019b开始

参考

[1]张成泽,js。李建平,“基于广义神经网络和卡尔曼滤波算法的模糊建模”,Proc。第九届国家联合会。论人工智能(AAAI-91).1991年7月,第762-767页。

[2]张成泽,js。陈建平,“基于自适应网络的模糊推理系统”,IEEE系统、人与控制论汇刊,第23卷第3期,1993年5月,第665-685页。

在R2006A之前介绍