主要内容

简称anfis

使用训练数据优化Sugeno-type模糊推理系统

描述

例子

金融中间人=简称anfis (trainingData)生成一个对于Sugeno模糊推理系统(FIS)和音乐系统参数使用指定的输入/输出训练数据。使用网格分区FIS对象自动生成。

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

例子

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

  • 最初FIS对象来优化。

  • 为防止过度拟合训练数据验证数据。

  • 训练算法的选择。

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

例子

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

例子

(金融中间人,trainError,stepSize)=简称anfis (___)返回培训步长在每个时代。

例子

(金融中间人,trainError,stepSize,chkFIS,chkError)=简称anfis (trainingData,选项)返回验证数据为每个培训时代错误,chkError,调谐FIS对象验证错误的最小值,chkFIS。要使用这种语法,您必须指定验证数据使用options.ValidationData

例子

全部折叠

负荷训练数据。这些数据只有一个输入和一个输出。

负载fuzex1trnData.dat

生成和训练一个模糊推理系统。默认情况下,创建FIS结构使用一个输入变量范围的网格分区有两个隶属度函数。

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

情节简称ANFIS的输出和训练数据。

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

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表训练数据,简称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输出的,“位置”,“西北”)

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表训练数据,简称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”不定式);opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;

火车FIS使用指定的选项。

人物=简称anfis ((x, y),选择);

简称ANFIS的输出与训练数据进行比较。

情节(x, y, x, evalfis(人物,x))传说(的训练数据,简称ANFIS输出的)

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表训练数据,简称ANFIS输出。

负荷训练和验证数据。这些数据只有一个输入和一个输出。

负载fuzex2trnData.dat负载fuzex2chkData.dat

指定培训选项。

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

培养金融中间人,然后返回训练误差。

[trainFIS, trainFISError, ~, validationFIS validationFISError] =简称anfis (fuzex2trnData,选择);

trainFISError包含训练数据的根均方误差在每个培训时代。训练误差trainFIS的最小值trainFISError

trainFISRMSE = min (trainFISError)
trainFISRMSE = 0.2572

validationFISError包含根均方误差验证数据在每个培训时代。的验证错误validationFIS的最小值validationFISError

validationFISRMSE = min (validationFISError)
validationFISRMSE = 0.6300

对于创建输入训练数据。

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),选择);

情节步长概要文件。最初最优步长概要文件应该增加,达到最大值,然后下降剩下的培训。

图绘制(stepSize)

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

负荷训练数据。

负载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, trainError stepSize、chkFIS chkError] =简称anfis (fuzex1trnData,选择);

训练误差,trainError验证错误,chkError,每个包含一个错误值数组/培训的时代。训练误差和验证错误的阴谋。

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

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。一个或多个行显示的值只使用标记

最小的验证错误发生在时代17。验证错误的增加后,这一点表明过度拟合训练数据的模型参数。因此,调整金融中间人在时代17日chkFIS,展示最好的泛化性能。

输入参数

全部折叠

训练数据,指定为一个数组。模糊系统N输入,指定trainingData作为一个数组N+ 1列。第一个N列中包含输入数据,最后一列输出数据。每一行的trainingData包含一个数据点。

一般来说,训练数据应充分代表数据的特性FIS旨在模型。

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

  • 一个初始FIS结构调整,options.InitialFIS

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

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

  • 是否显示培训进展信息,如每个训练时期,训练误差值options.DisplayErrorValues

输出参数

全部折叠

训练有素的模糊推理系统与隶属函数参数调谐使用训练数据,作为一个返回mamfissugfis对象。此模糊系统对应的时代训练误差最小。如果两个时代有相同的训练误差最小,FIS的返回之前的时代。

均方根误差训练对于每个培训的时代,作为一个数组返回。的最小值trainError是模糊系统的训练误差金融中间人

步长训练对于每个时代,作为一个数组返回。的简称anfis使用梯度下降训练算法曲调FIS参数优化方法。训练步长梯度的大小是在参数空间的转换。

理想情况下,步长增加的培训,达到最大值,然后减少剩余的培训。实现这一步配置文件大小,调整初始步长(options.InitialStepSize),步长增加率(options.StepSizeIncreaseRate),步长率下降options.StepSizeDecreaseRate

调谐FIS验证错误的最小值,作为一个返回mamfissugfis对象。如果两个时代有相同的最小验证错误,返回前面FIS的时代。

chkFIS只有当你返回指定验证数据使用options.ValidationData

均方根误差,培训作为一个数组返回长度等于训练时期的数量。的最小值chkError是模糊系统的训练误差chkFIS

chkError只有当你返回指定验证数据使用options.ValidationData

选择功能

tunefis函数

从R2019a开始,您可以调整模糊系统使用tunefis。这个函数为优化算法提供了几个其他选项,指定的tunefisOptions对象。

使用简称ANFIS,指定优化算法简称anfis”tunefisOptions。然后,使用选择对象作为输入参数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”

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

模糊逻辑设计应用程序

从R2023a开始,你可以交互地调整一个简称ANFIS系统使用模糊逻辑设计应用。例如,明白了自适应神经模糊推理系统进行训练

引用

[1]张成泽,js。R。“模糊建模使用广义神经网络和卡尔曼滤波算法。”第九国家会议上人工智能(aaai - 91)。(1991年7月):762 - 767。

[2]张成泽,js。R。简称ANFIS: Adaptive-Network-based模糊推理系统。”IEEE系统,人,控制论23日,没有。3(1993年5月):665 - 685。

版本历史

之前介绍过的R2006a

全部展开