主要内容gydF4y2Ba

fitrgamgydF4y2Ba

拟合广义加性模型(GAM)进行回归gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

MdlgydF4y2Ba= fitrgam (gydF4y2Ba资源描述gydF4y2Ba,gydF4y2BaResponseVarNamegydF4y2Ba)gydF4y2Ba返回一个gydF4y2Ba广义加性模型gydF4y2BaMdlgydF4y2Ba使用表中包含的示例数据进行训练gydF4y2Ba资源描述gydF4y2Ba.输入参数gydF4y2BaResponseVarNamegydF4y2Ba变量名在吗gydF4y2Ba资源描述gydF4y2Ba其中包含回归的响应值。gydF4y2Ba

例子gydF4y2Ba

MdlgydF4y2Ba= fitrgam (gydF4y2Ba资源描述gydF4y2Ba,gydF4y2Ba公式gydF4y2Ba)gydF4y2Ba使用模型规范参数gydF4y2Ba公式gydF4y2Ba中指定响应变量和预测变量gydF4y2Ba资源描述gydF4y2Ba.可以指定预测器变量的子集和预测器变量的交互项gydF4y2Ba公式gydF4y2Ba.gydF4y2Ba

MdlgydF4y2Ba= fitrgam (gydF4y2Ba资源描述gydF4y2Ba,gydF4y2BaYgydF4y2Ba)gydF4y2Ba使用表中的预测变量gydF4y2Ba资源描述gydF4y2Ba和向量中的响应值gydF4y2BaYgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

MdlgydF4y2Ba= fitrgam (gydF4y2BaXgydF4y2Ba,gydF4y2BaYgydF4y2Ba)gydF4y2Ba使用矩阵中的预测器gydF4y2BaXgydF4y2Ba和向量中的响应值gydF4y2BaYgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

MdlgydF4y2Ba= fitrgam (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba除前面语法中的任何输入参数组合外,还使用一个或多个名称-值参数指定选项。例如,gydF4y2Ba“互动”,5gydF4y2Ba指定在模型中包含五个交互项。属性指定交互术语列表gydF4y2Ba“互动”gydF4y2Ba名称-值参数。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

训练一个单变量GAM,其中包含预测因子的线性项。方法解释指定数据实例的预测gydF4y2BaplotLocalEffectsgydF4y2Ba函数。gydF4y2Ba

加载数据集gydF4y2BaNYCHousing2015gydF4y2Ba.gydF4y2Ba

负载gydF4y2BaNYCHousing2015gydF4y2Ba

该数据集包括10个变量,其中包含2015年纽约市房产销售信息。本例使用这些变量来分析销售价格(gydF4y2BaSALEPRICEgydF4y2Ba).gydF4y2Ba

预处理数据集。删除异常值,转换gydF4y2BadatetimegydF4y2Ba阵列(gydF4y2BaSALEDATEgydF4y2Ba)到月份数字,并移动响应变量(gydF4y2BaSALEPRICEgydF4y2Ba)到最后一列。gydF4y2Ba

idx = isoutlier(nychousing2015 . salesprice);NYCHousing2015(idx,:) = [];NYCHousing2015。SALEDATE=month(NYCHousing2015.SALEDATE); NYCHousing2015 = movevars(NYCHousing2015,“SALEPRICE”gydF4y2Ba,gydF4y2Ba“后”gydF4y2Ba,gydF4y2Ba“SALEDATE”gydF4y2Ba);gydF4y2Ba

显示表的前三行。gydF4y2Ba

头(NYCHousing2015, 3)gydF4y2Ba
区附近BUILDINGCLASSCATEGORY RESIDENTIALUNITS COMMERCIALUNITS LANDSQUAREFEET GROSSSQUAREFEET YEARBUILT SALEDATE SALEPRICE  _______ ____________ ____________________________ ________________ _______________ ______________ _______________ _________ ________ _________ 2{‘BATHGATE}{01一个家庭住宅的}1 0 4750 2619 1899 8 0 2{‘BATHGATE}{01一个家庭住宅的}1 0 4750 2619 1899 8 0 2{‘BATHGATE}{01一个家庭住宅的}1 1 1287 2528 1899 12 0gydF4y2Ba

为销售价格训练一个单变量GAM。为gydF4y2Ba区gydF4y2Ba,gydF4y2Ba社区gydF4y2Ba,gydF4y2BaBUILDINGCLASSCATEGORYgydF4y2Ba,gydF4y2BaSALEDATEgydF4y2Ba作为分类预测因子。gydF4y2Ba

Mdl = fitrgam(NYCHousing2015;gydF4y2Ba“SALEPRICE”gydF4y2Ba,gydF4y2Ba“CategoricalPredictors”gydF4y2Ba,[1 2 3 9])gydF4y2Ba
Mdl = RegressionGAM PredictorNames: {1x9 cell} ResponseName: 'SALEPRICE'分类预测器:[1 2 3 9]ResponseTransform: 'none'拦截:3.7518e+05 IsStandardDeviationFit: 0 NumObservations: 83517属性,方法gydF4y2Ba

MdlgydF4y2Ba是一个gydF4y2BaRegressionGAMgydF4y2Ba模型对象。模型显示显示模型属性的部分列表。若要查看完整的属性列表,请双击变量名gydF4y2BaMdlgydF4y2Ba在工作区中。打开变量编辑器gydF4y2BaMdlgydF4y2Ba.或者,您可以使用点表示法在命令窗口中显示属性。例如,显示的估计截距(常数)项gydF4y2BaMdlgydF4y2Ba.gydF4y2Ba

Mdl。拦截gydF4y2Ba
Ans = 3.7518e+05gydF4y2Ba

预测销售价格的第一个观察的训练数据,并绘制局部效应的条款gydF4y2BaMdlgydF4y2Ba关于预测。gydF4y2Ba

yFit = predict(Mdl,NYCHousing2015(1,:)))gydF4y2Ba
yFit = 4.4421e+05gydF4y2Ba
: plotLocalEffects (Mdl NYCHousing2015 (1))gydF4y2Ba

图中包含一个轴对象。标题为Local Effects Plot的axes对象包含一个类型为bar的对象。gydF4y2Ba

的gydF4y2Ba预测gydF4y2Ba函数预测第一个观测值的销售价格为gydF4y2Ba4.4421 e5gydF4y2Ba.的gydF4y2BaplotLocalEffectsgydF4y2Ba函数创建一个水平柱状图,显示项的局部效果gydF4y2BaMdlgydF4y2Ba关于预测。每个局部效应值表示每一项对预测销售价格的贡献。gydF4y2Ba

用三种不同的方式训练一个包含预测因子线性和交互项的广义加法模型:gydF4y2Ba

  • 属性指定交互术语gydF4y2Ba公式gydF4y2Ba输入参数。gydF4y2Ba

  • 指定gydF4y2Ba“互动”gydF4y2Ba名称-值参数。gydF4y2Ba

  • 方法先用线性项构建模型,并向模型中添加交互项gydF4y2BaaddInteractionsgydF4y2Ba函数。gydF4y2Ba

加载gydF4y2BacarbiggydF4y2Ba数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。gydF4y2Ba

负载gydF4y2BacarbiggydF4y2Ba

创建一个包含预测变量的表(gydF4y2Ba加速度gydF4y2Ba,gydF4y2Ba位移gydF4y2Ba,gydF4y2Ba马力gydF4y2Ba,gydF4y2Ba重量gydF4y2Ba)和响应变量(gydF4y2Ba英里/加仑gydF4y2Ba).gydF4y2Ba

tbl = table(加速度,排量,马力,重量,MPG);gydF4y2Ba

指定gydF4y2Ba公式gydF4y2Ba

训练包含四个线性项的GAM (gydF4y2Ba加速度gydF4y2Ba,gydF4y2Ba位移gydF4y2Ba,gydF4y2Ba马力gydF4y2Ba,gydF4y2Ba重量gydF4y2Ba)和两个交互项(gydF4y2Ba*位移加速度gydF4y2Ba而且gydF4y2Ba位移*马力gydF4y2Ba).使用表单中的公式指定术语gydF4y2Ba“Y ~项”gydF4y2Ba.gydF4y2Ba

Mdl1 = fitrgam(tbl,gydF4y2BaMPG ~加速度+排量+马力+重量+加速度:排量+排量:马力gydF4y2Ba);gydF4y2Ba

该函数按照重要性的顺序将交互项添加到模型中。您可以使用gydF4y2Ba的相互作用gydF4y2Ba属性检查模型中的交互项及其顺序gydF4y2BafitrgamgydF4y2Ba将它们添加到模型中。显示gydF4y2Ba的相互作用gydF4y2Ba财产。gydF4y2Ba

Mdl1。的相互作用gydF4y2Ba
ans =gydF4y2Ba2×2gydF4y2Ba2 3 1 2gydF4y2Ba

每行gydF4y2Ba的相互作用gydF4y2Ba表示一个交互项,并包含该交互项的预测变量的列索引。gydF4y2Ba

指定gydF4y2Ba“互动”gydF4y2Ba

传递培训数据(gydF4y2Ba资源描述gydF4y2Ba)和响应变量的名称gydF4y2Ba资源描述gydF4y2Ba来gydF4y2BafitrgamgydF4y2Ba,使函数包含所有其他变量的线性项作为预测因子。指定gydF4y2Ba“互动”gydF4y2Ba使用逻辑矩阵来包含两个交互项的名称-值参数,gydF4y2Bax1 * x2gydF4y2Ba而且gydF4y2Bax2 * x3gydF4y2Ba.gydF4y2Ba

Mdl2 = fitrgam(tbl,gydF4y2Ba“英里”gydF4y2Ba,gydF4y2Ba“互动”gydF4y2Ba,逻辑([1 1 0 0;0 1 1 0]));Mdl2。的相互作用gydF4y2Ba
ans =gydF4y2Ba2×2gydF4y2Ba2 3 1 2gydF4y2Ba

你也可以指定gydF4y2Ba“互动”gydF4y2Ba作为相互作用项的数量或gydF4y2Ba“所有”gydF4y2Ba包括所有可用的交互术语。在指定的交互条件中,gydF4y2BafitrgamgydF4y2Ba识别那些gydF4y2BapgydF4y2Ba-values不大于gydF4y2Ba“MaxPValue”gydF4y2Ba值并将它们添加到模型中。默认的gydF4y2Ba“MaxPValue”gydF4y2Ba为1,以便函数将所有指定的交互项添加到模型中。gydF4y2Ba

指定gydF4y2Ba“互动”、“所有”gydF4y2Ba并设置gydF4y2Ba“MaxPValue”gydF4y2Ba名称-值参数为0.05。gydF4y2Ba

(tbl;gydF4y2Ba“英里”gydF4y2Ba,gydF4y2Ba“互动”gydF4y2Ba,gydF4y2Ba“所有”gydF4y2Ba,gydF4y2Ba“MaxPValue”gydF4y2Ba, 0.05);gydF4y2Ba
警告:模型不包括交互项,因为所有交互项的p值都大于“MaxPValue”值,或者软件无法改善模型拟合。gydF4y2Ba
Mdl3。的相互作用gydF4y2Ba
Ans = 0x2空双矩阵gydF4y2Ba

Mdl3gydF4y2Ba不包括交互术语,这意味着以下之一:所有交互术语都有gydF4y2BapgydF4y2Ba-values大于0.05,或添加交互项并不能改善模型拟合。gydF4y2Ba

使用gydF4y2BaaddInteractionsgydF4y2Ba函数gydF4y2Ba

训练一个包含预测因子线性项的单变量GAM,然后使用gydF4y2BaaddInteractionsgydF4y2Ba函数。指定的第二个输入参数gydF4y2BaaddInteractionsgydF4y2Ba以同样的方式指定gydF4y2Ba“互动”gydF4y2Ba的名称-值参数gydF4y2BafitrgamgydF4y2Ba.您可以使用逻辑矩阵指定交互术语的列表、交互术语的数量或gydF4y2Ba“所有”gydF4y2Ba.gydF4y2Ba

指定交互项的数量为3,将三个最重要的交互项添加到训练的模型中。gydF4y2Ba

Mdl4 = fitrgam(tbl,gydF4y2Ba“英里”gydF4y2Ba);UpdatedMdl4 = addInteractions(Mdl4,3);UpdatedMdl4。的相互作用gydF4y2Ba
ans =gydF4y2Ba3×2gydF4y2Ba2 3 1 2 3 4gydF4y2Ba

Mdl4gydF4y2Ba是单变量GAM,和gydF4y2BaUpdatedMdl4gydF4y2Ba是一个更新的GAM,包含了所有的条款gydF4y2BaMdl4gydF4y2Ba还有三个额外的相互作用项。gydF4y2Ba

使用10次折叠训练交叉验证的GAM,这是默认的交叉验证选项gydF4y2BafitrgamgydF4y2Ba.然后,用gydF4y2BakfoldPredictgydF4y2Ba使用在训练折叠观测上训练的模型来预测验证折叠观测的响应。gydF4y2Ba

加载gydF4y2BacarbiggydF4y2Ba数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。gydF4y2Ba

负载gydF4y2BacarbiggydF4y2Ba

创建一个包含预测变量的表(gydF4y2Ba加速度gydF4y2Ba,gydF4y2Ba位移gydF4y2Ba,gydF4y2Ba马力gydF4y2Ba,gydF4y2Ba重量gydF4y2Ba)和响应变量(gydF4y2Ba英里/加仑gydF4y2Ba).gydF4y2Ba

tbl = table(加速度,排量,马力,重量,MPG);gydF4y2Ba

使用默认的交叉验证选项创建一个交叉验证的GAM。指定gydF4y2Ba“CrossVal”gydF4y2Ba名称-值参数为gydF4y2Ba“上”gydF4y2Ba.gydF4y2Ba

rng (gydF4y2Ba“默认”gydF4y2Ba)gydF4y2Ba%用于再现性gydF4y2BaCVMdl = fitrgam(tbl,gydF4y2Ba“英里”gydF4y2Ba,gydF4y2Ba“CrossVal”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba)gydF4y2Ba
CVMdl = RegressionPartitionedGAM CrossValidatedModel: 'GAM' PredictorNames: {1x4 cell} ResponseName: 'MPG' NumObservations: 398 KFold: 10 Partition: [1x1 cvpartition] NumTrainedPerFold: [1x1 struct] ResponseTransform: 'none' IsStandardDeviationFit: 0 Properties, MethodsgydF4y2Ba

的gydF4y2BafitrgamgydF4y2Ba函数创建gydF4y2BaRegressionPartitionedGAMgydF4y2Ba模型对象gydF4y2BaCVMdlgydF4y2Ba10次折叠。在交叉验证期间,软件完成以下步骤:gydF4y2Ba

  1. 将数据随机划分为10组。gydF4y2Ba

  2. 对于每个集合,保留该集合作为验证数据,并使用其他9个集合训练模型。gydF4y2Ba

  3. 的10个紧凑的、训练过的模型a存储在一个10 × 1的单元格向量中gydF4y2Ba训练有素的gydF4y2Ba交叉验证模型对象的属性gydF4y2BaRegressionPartitionedGAMgydF4y2Ba.gydF4y2Ba

属性可以覆盖默认的交叉验证设置gydF4y2Ba“CVPartition”gydF4y2Ba,gydF4y2Ba“坚持”gydF4y2Ba,gydF4y2Ba“KFold”gydF4y2Ba,或gydF4y2Ba“Leaveout”gydF4y2Ba名称-值参数。gydF4y2Ba

预测中观测结果的响应gydF4y2Ba资源描述gydF4y2Ba通过使用gydF4y2BakfoldPredictgydF4y2Ba.该函数使用在没有该观察的情况下训练的模型预测每个观察的响应。gydF4y2Ba

yHat = kfoldPredict(CVMdl);gydF4y2Ba

yHatgydF4y2Ba是数值向量。显示前五个预测反应。gydF4y2Ba

yHat (1:5)gydF4y2Ba
ans =gydF4y2Ba5×1gydF4y2Ba19.4848 15.7203 15.5742 15.3185 17.8223gydF4y2Ba

计算回归损失(均方误差)。gydF4y2Ba

L = kfoldLoss(cvdl)gydF4y2Ba
L = 17.7248gydF4y2Ba

kfoldLossgydF4y2Ba返回10次折叠的平均均方误差。gydF4y2Ba

方法优化与交叉验证相关的GAM的超参数gydF4y2BaOptimizeHyperparametersgydF4y2Ba名称-值参数。gydF4y2Ba

加载gydF4y2BacarbiggydF4y2Ba数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。gydF4y2Ba

负载gydF4y2BacarbiggydF4y2Ba

指定gydF4y2Ba加速度gydF4y2Ba,gydF4y2Ba位移gydF4y2Ba,gydF4y2Ba马力gydF4y2Ba,gydF4y2Ba重量gydF4y2Ba作为预测变量(gydF4y2BaXgydF4y2Ba),gydF4y2Ba英里/加仑gydF4y2Ba作为响应变量(gydF4y2BaYgydF4y2Ba).gydF4y2Ba

X =[加速度,排水量,马力,重量];Y = mpg;gydF4y2Ba

将数据划分为训练集和测试集。使用大约80%的观测数据来训练模型,20%的观测数据来测试训练模型在新数据上的性能。使用gydF4y2BacvpartitiongydF4y2Ba对数据进行分区。gydF4y2Ba

rng (gydF4y2Ba“默认”gydF4y2Ba)gydF4y2Ba%用于再现性gydF4y2Bacvp = cvpartition(长度(MPG),gydF4y2Ba“坚持”gydF4y2Ba, 0.20);XTrain = X(训练(cvp),:);YTrain = Y(训练(cvp));XTest = X(test(cvp),:);YTest = Y(test(cvp));gydF4y2Ba

通过将训练数据传递给gydF4y2BafitrgamgydF4y2Ba函数,并包括gydF4y2BaOptimizeHyperparametersgydF4y2Ba论点。指定gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba作为gydF4y2Ba“汽车”gydF4y2Ba这gydF4y2BafitrgamgydF4y2Ba找到的最优值gydF4y2BaInitialLearnRateForPredictorsgydF4y2Ba,gydF4y2BaNumTreesPerPredictorgydF4y2Ba,gydF4y2Ba的相互作用gydF4y2Ba,gydF4y2BaInitialLearnRateForInteractionsgydF4y2Ba,gydF4y2BaNumTreesPerInteractiongydF4y2Ba.为了重现性,选择gydF4y2Ba“expected-improvement-plus”gydF4y2Ba采集功能。默认的采集函数取决于运行时,因此可以给出不同的结果。gydF4y2Ba

rng (gydF4y2Ba“默认”gydF4y2Ba) Mdl = fitrgam(XTrain,YTrain,gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba,gydF4y2Ba“汽车”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba结构(gydF4y2Ba“AcquisitionFunctionName”gydF4y2Ba,gydF4y2Ba“expected-improvement-plus”gydF4y2Ba))gydF4y2Ba
|==========================================================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | InitialLearnRate - | NumTreesPerP——| |交互InitialLearnRate - | NumTreesPerI——| | | |结果日志(1 +损失)运行时| |(观察)| (estim) | ForPredictors | redictor | | ForInteractions | nteraction  | |==========================================================================================================================================================| | 最好1 | | 2.874 | 4.6069 | 2.874 | 2.874 | 0.21533 | 500 | 1 | 0.35042 | 13 | | 2 | | 2.89接受| 0.20809 | 2.874 | 2.8748 | 0.062841 | 14 | 1 | 0.014907 | 10 | | 3 |接受| 3.3298 | 1.796 | 2.874 | 2.8746 | 0.001387 | 222 | 0  | - | - | | 最好4 | | 2.8562 | 5.8182 | 2.8562 | 2.8564 | 0.08216 | 434 | 4 | 0.14875 | 283 | | 5 |接受| 2.976 | 1.8052 | 2.8562 | 2.8564 | 0.99942 | 217 | 1 | 0.0017491 | 34 | | 6 |最好| 2.8195 | 1.382 | 2.8195 | 2.8198 | 0.13778 | 152 | 6 | 0.012566 | 13 | | 7最好| | 2.7519 | 0.90985 | 2.7519 | 2.752 | 0.12531 | 42 | 4 | 0.27647 | 53 | | 8 | |最好2.7301 | 3.565 | 2.7301 | 2.7301 | 0.18671 | 0.0063418 | 3 | | 487 | | 9最好| | 2.7196 | 0.46532 | 2.7196 | 2.7196 | 0.13792 | 10 | 5 | 0.1663 | 27日| | |接受10 | 2.8281 | 2.9027 | 2.7196 | 2.7196 | 0.23324 | 0.75904 | 4 | | 314 | | | 11日接受| 2.7864 | 0.25131 | 2.7196 | 2.7196 | 0.13035 | 0.30171 | 1 | | 476 | | | 12日接受| 2.7993 | 0.61803 | 2.7196 | 2.7647 | 0.16476 | 10 | 6 | 0.015498 | 32 | | | 13日接受| 2.7847 | 4.5171 | 2.7196 | 2.7197 | 0.0090953 | 499 | 5 | 0.027878|40||14 | Accept | 3.5847 | 0.27508 | 2.7196 | 2.7592 | 0.0035123 | 11 | 3 | 0.011127 | 11 | | 15 | Accept | 2.7237 | 4.9018 | 2.7196 | 2.759 | 0.015848 | 498 | 3 | 0.14359 | 238 | | 16 | Accept | 2.779 | 1.569 | 2.7196 | 2.7588 | 0.012829 | 10 | 3 | 0.028814 | 217 | | 17 | Accept | 2.7761 | 4.7776 | 2.7196 | 2.7272 | 0.023165 | 488 | 1 | 0.32642 | 302 | | 18 | Accept | 2.8604 | 4.1417 | 2.7196 | 2.7677 | 0.013548 | 495 | 2 | 0.97963 | 141 | | 19 | Accept | 3.5466 | 0.12735 | 2.7196 | 2.7196 | 0.019794 | 10 | 0 | - | - | | 20 | Accept | 2.7513 | 7.3431 | 2.7196 | 2.7196 | 0.02408 | 62 | 6 | 0.023502 | 490 | |==========================================================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | InitialLearnRate-| NumTreesPerP-| Interactions | InitialLearnRate-| NumTreesPerI-| | | result | log(1+loss) | runtime | (observed) | (estim.) | ForPredictors | redictor | | ForInteractions | nteraction | |==========================================================================================================================================================| | 21 | Accept | 2.7243 | 0.92354 | 2.7196 | 2.7196 | 0.040761 | 11 | 3 | 0.10556 | 120 | | 22 | Best | 2.6969 | 5.0161 | 2.6969 | 2.697 | 0.0032557 | 494 | 2 | 0.039381 | 487 | | 23 | Accept | 2.8184 | 3.8034 | 2.6969 | 2.697 | 0.0072249 | 19 | 3 | 0.27653 | 494 | | 24 | Accept | 2.7788 | 4.3989 | 2.6969 | 2.697 | 0.0064015 | 482 | 1 | 0.013479 | 479 | | 25 | Accept | 2.7646 | 4.4343 | 2.6969 | 2.6971 | 0.0013222 | 473 | 2 | 0.17272 | 436 | | 26 | Accept | 2.8368 | 0.28304 | 2.6969 | 2.6971 | 0.93418 | 11 | 5 | 0.16983 | 11 | | 27 | Accept | 2.7724 | 1.7205 | 2.6969 | 2.6971 | 0.039216 | 11 | 2 | 0.037865 | 480 | | 28 | Accept | 2.8795 | 0.87918 | 2.6969 | 2.6971 | 0.73103 | 11 | 1 | 0.014567 | 480 | | 29 | Accept | 2.782 | 4.0221 | 2.6969 | 2.7267 | 0.0047632 | 493 | 1 | 0.069346 | 247 | | 30 | Accept | 2.7734 | 0.98578 | 2.6969 | 2.7297 | 0.038679 | 103 | 1 | 0.052986 | 68 |

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:88.0979秒总目标函数评估时间:78.4482最佳观测可行点:InitialLearnRateForPredictors NumTreesPerPredictor Interactions InitialLearnRateForInteractions NumTreesPerInteraction _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0032557 494 2 0.039381 487观测到的目标函数值= 2.6969估计的目标函数值= 2.7297函数评估时间= 5.0161最佳估计可行点(根据模型):InitialLearnRateForPredictors NumTreesPerPredictor交互InitialLearnRateForInteractions NumTreesPerInteraction  _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0032557 494 0.039381 487估计目标函数值= 2.7297估计时间评估函数= 5.009gydF4y2Ba
Mdl = RegressionGAM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Intercept: 23.7405 Interactions: [2×2 double] IsStandardDeviationFit: 0 NumObservations: 318 HyperparameterOptimizationResults: [1×1 BayesianOptimization] Properties, MethodsgydF4y2Ba

fitrgamgydF4y2Ba返回一个gydF4y2BaRegressionGAMgydF4y2Ba使用最佳估计可行点的模型对象。基于贝叶斯优化过程的底层高斯过程模型,最佳估计可行点是使交叉验证损失(均方误差,MSE)的置信上限最小化的超参数集。gydF4y2Ba

贝叶斯优化过程内部维持了目标函数的高斯过程模型。目标函数为gydF4y2Ba日志gydF4y2Ba(1 +交叉验证MSE)用于回归。对于每次迭代,优化过程都会更新高斯过程模型,并使用该模型找到一组新的超参数。迭代显示的每一行都显示了新的超参数集和这些列值:gydF4y2Ba

  • 客观的gydF4y2Ba-在新的超参数集上计算目标函数值。gydF4y2Ba

  • 目标运行时gydF4y2Ba-目标函数评价时间。gydF4y2Ba

  • Eval结果gydF4y2Ba—结果报告,指定为gydF4y2Ba接受gydF4y2Ba,gydF4y2Ba最好的gydF4y2Ba,或gydF4y2Ba错误gydF4y2Ba.gydF4y2Ba接受gydF4y2Ba表示目标函数返回一个有限值,和gydF4y2Ba错误gydF4y2Ba指示目标函数返回一个不是有限实标量的值。gydF4y2Ba最好的gydF4y2Ba指示目标函数返回一个有限值,该值低于先前计算的目标函数值。gydF4y2Ba

  • BestSoFar(观察)gydF4y2Ba-目前计算的最小目标函数值。此值是当前迭代的目标函数值(如果gydF4y2BaEval结果gydF4y2Ba当前迭代的值为gydF4y2Ba最好的gydF4y2Ba)或前一个的值gydF4y2Ba最好的gydF4y2Ba迭代。gydF4y2Ba

  • BestSoFar (estim)。gydF4y2Ba-在每次迭代中,软件在迄今为止尝试的所有超参数集上,使用更新的高斯过程模型估计目标函数值的置信上限。然后软件选择上置信界最小的点。的gydF4y2BaBestSoFar (estim)。gydF4y2Ba方法返回的目标函数值gydF4y2BapredictObjectivegydF4y2Ba函数在最小值处。gydF4y2Ba

迭代显示下面的图显示gydF4y2BaBestSoFar(观察)gydF4y2Ba而且gydF4y2BaBestSoFar (estim)。gydF4y2Ba分别用蓝色和绿色表示。gydF4y2Ba

返回的对象gydF4y2BaMdlgydF4y2Ba使用最佳估计可行点,即产生的超参数集gydF4y2BaBestSoFar (estim)。gydF4y2Ba在最终的高斯过程模型的基础上进行最后的迭代。gydF4y2Ba

得到的最佳估计可行点gydF4y2BaMdlgydF4y2Ba在gydF4y2BaHyperparameterOptimizationResultsgydF4y2Ba财产。gydF4y2Ba

Mdl.HyperparameterOptimizationResults.XAtMinEstimatedObjectivegydF4y2Ba
ans =gydF4y2Ba表1×5gydF4y2BaInitialLearnRateForPredictors NumTreesPerPredictor交互InitialLearnRateForInteractions NumTreesPerInteraction  _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0032557 494 0.039381 487gydF4y2Ba

或者,您可以使用gydF4y2BabestPointgydF4y2Ba函数。默认情况下,gydF4y2BabestPointgydF4y2Ba函数使用gydF4y2Ba“min-visited-upper-confidence-interval”gydF4y2Ba标准。gydF4y2Ba

[x,CriterionValue,iteration] = bestPoint(mml . hyperparameteroptimizationresults)gydF4y2Ba
x =gydF4y2Ba表1×5gydF4y2BaInitialLearnRateForPredictors NumTreesPerPredictor交互InitialLearnRateForInteractions NumTreesPerInteraction  _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0032557 494 0.039381 487gydF4y2Ba
CriterionValue = 2.7908gydF4y2Ba
迭代= 22gydF4y2Ba

您还可以提取最佳观测可行点(即最后gydF4y2Ba最好的gydF4y2Ba点在迭代显示)从gydF4y2BaHyperparameterOptimizationResultsgydF4y2Ba属性或通过指定gydF4y2Ba标准gydF4y2Ba作为gydF4y2Ba“min-observed”gydF4y2Ba.gydF4y2Ba

Mdl.HyperparameterOptimizationResults.XAtMinObjectivegydF4y2Ba
ans =gydF4y2Ba表1×5gydF4y2BaInitialLearnRateForPredictors NumTreesPerPredictor交互InitialLearnRateForInteractions NumTreesPerInteraction  _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0032557 494 0.039381 487gydF4y2Ba
[x_observed,CriterionValue_observed,iteration_observed] = bestPoint(Mdl。HyperparameterOptimizationResults,gydF4y2Ba“标准”gydF4y2Ba,gydF4y2Ba“min-observed”gydF4y2Ba)gydF4y2Ba
x_observed =gydF4y2Ba表1×5gydF4y2BaInitialLearnRateForPredictors NumTreesPerPredictor交互InitialLearnRateForInteractions NumTreesPerInteraction  _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0032557 494 0.039381 487gydF4y2Ba
CriterionValue_observed = 2.6969gydF4y2Ba
Iteration_observed = 22gydF4y2Ba

在本例中,两个标准选择相同的超参数集(第22次迭代)作为最佳点。每个的判据值是不同的,因为gydF4y2BaCriterionValuegydF4y2Ba为最终高斯过程模型计算的目标函数值的上界,gydF4y2BaCriterionValue_observedgydF4y2Ba使用所选超参数计算的实际目标函数值。有关更多信息,请参见gydF4y2Ba标准gydF4y2Ba的名称-值参数gydF4y2BabestPointgydF4y2Ba.gydF4y2Ba

通过计算均方误差(MSEs)来评估回归模型在训练集和测试集上的性能。MSE值越小,性能越好。gydF4y2Ba

LTraining = resubLoss(Mdl)gydF4y2Ba
LTraining = 6.2224gydF4y2Ba
LTest =损失(Mdl,XTest,YTest)gydF4y2Ba
LTest = 18.5724gydF4y2Ba

在交叉验证方面优化GAM的参数gydF4y2BabayesoptgydF4y2Ba函数。gydF4y2Ba

或者,您可以找到的最佳值gydF4y2BafitrgamgydF4y2Ba的名称-值参数gydF4y2BaOptimizeHyperparametersgydF4y2Ba名称-值参数。有关示例,请参见gydF4y2Ba使用OptimizeHyperparameters优化GAMgydF4y2Ba.gydF4y2Ba

加载gydF4y2BacarbiggydF4y2Ba数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。gydF4y2Ba

负载gydF4y2BacarbiggydF4y2Ba

指定gydF4y2Ba加速度gydF4y2Ba,gydF4y2Ba位移gydF4y2Ba,gydF4y2Ba马力gydF4y2Ba,gydF4y2Ba重量gydF4y2Ba作为预测变量(gydF4y2BaXgydF4y2Ba),gydF4y2Ba英里/加仑gydF4y2Ba作为响应变量(gydF4y2BaYgydF4y2Ba).gydF4y2Ba

X =[加速度,排水量,马力,重量];Y = mpg;gydF4y2Ba

您必须删除缺少响应值的观察值,以修复优化过程的交叉验证集。从响应变量中删除缺失值,并在预测变量中删除相应的观察值。gydF4y2Ba

[Y,TF] = rmmissing(Y);X = X(~ tf);gydF4y2Ba

为交叉验证设置一个分区。此步骤修复优化在每个步骤中使用的交叉验证集。gydF4y2Ba

c = cvpartition(length(Y),gydF4y2Ba“KFold”gydF4y2Ba5);gydF4y2Ba

准备gydF4y2BaoptimizableVariablegydF4y2Ba对象的名称-值参数,您希望使用贝叶斯优化。的最佳值gydF4y2BaMaxNumSplitsPerPredictorgydF4y2Ba而且gydF4y2BaNumTreesPerPredictorgydF4y2Ba参数的gydF4y2BafitrgamgydF4y2Ba.gydF4y2Ba

maxnumsplitting = optimizableVariable(gydF4y2Ba“maxNumSplits”gydF4y2Ba(1, 10),gydF4y2Ba“类型”gydF4y2Ba,gydF4y2Ba“整数”gydF4y2Ba);numTrees = optimizableVariable(gydF4y2Ba“numTrees”gydF4y2Ba[1500],gydF4y2Ba“类型”gydF4y2Ba,gydF4y2Ba“整数”gydF4y2Ba);gydF4y2Ba

创建一个接受输入的目标函数gydF4y2Baz = [maxnumsplitting,numTrees]gydF4y2Ba的交叉验证的损失值gydF4y2BazgydF4y2Ba.gydF4y2Ba

minfun = @(z)kfoldLoss(fitrgam(X,Y,gydF4y2Ba“CVPartition”gydF4y2BacgydF4y2Ba...gydF4y2Ba“MaxNumSplitsPerPredictor”gydF4y2Baz.maxNumSplits,gydF4y2Ba...gydF4y2Ba“NumTreesPerPredictor”gydF4y2Baz.numTrees));gydF4y2Ba

如果指定交叉验证选项,则gydF4y2BafitrgamgydF4y2Ba函数返回交叉验证的模型对象gydF4y2BaRegressionPartitionedGAMgydF4y2Ba.的gydF4y2BakfoldLossgydF4y2Ba函数返回交叉验证模型得到的回归损失(均方误差)。因此,函数句柄gydF4y2BaminfungydF4y2Ba中的参数处计算交叉验证损失gydF4y2BazgydF4y2Ba.gydF4y2Ba

寻找最佳参数gydF4y2Ba[maxNumSplits, numTrees]gydF4y2Ba使用gydF4y2BabayesoptgydF4y2Ba.为了重现性,选择gydF4y2Ba“expected-improvement-plus”gydF4y2Ba采集功能。默认的采集函数取决于运行时,因此可以给出不同的结果。gydF4y2Ba

rng (gydF4y2Ba“默认”gydF4y2Ba) results = bayesopt(minfun,[maxnumsplitting,numTrees],gydF4y2Ba“详细”gydF4y2Ba0,gydF4y2Ba...gydF4y2Ba“IsObjectiveDeterministic”gydF4y2Ba,真的,gydF4y2Ba...gydF4y2Ba“AcquisitionFunctionName”gydF4y2Ba,gydF4y2Ba“expected-improvement-plus”gydF4y2Ba);gydF4y2Ba

从中获得最佳点gydF4y2Ba结果gydF4y2Ba.gydF4y2Ba

zbest = bestPoint(结果)gydF4y2Ba
zb =gydF4y2Ba1×2表gydF4y2Ba8 . maxnumsplitting numTrees ____________ ________ 1gydF4y2Ba

训练一个优化的GAMgydF4y2BazbgydF4y2Ba值。gydF4y2Ba

Mdl = fitrgam(X,Y,gydF4y2Ba...gydF4y2Ba“MaxNumSplitsPerPredictor”gydF4y2Bazbest.maxNumSplits,gydF4y2Ba...gydF4y2Ba“NumTreesPerPredictor”gydF4y2Ba, zbest.numTrees);gydF4y2Ba

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

用于训练模型的示例数据,指定为表。每行gydF4y2Ba资源描述gydF4y2Ba对应一个观测值,每一列对应一个预测变量。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。gydF4y2Ba

  • 可选地,gydF4y2Ba资源描述gydF4y2Ba可以包含响应变量的一列和观测权重的一列。响应变量和权重值必须是数值向量。gydF4y2Ba

    中必须指定响应变量gydF4y2Ba资源描述gydF4y2Ba通过使用gydF4y2BaResponseVarNamegydF4y2Ba或gydF4y2Ba公式gydF4y2Ba并指定观测权重gydF4y2Ba资源描述gydF4y2Ba通过使用gydF4y2Ba“重量”gydF4y2Ba.gydF4y2Ba

    • 通过使用指定响应变量gydF4y2BaResponseVarNamegydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba使用其余变量作为预测器。中剩余变量的子集gydF4y2Ba资源描述gydF4y2Ba作为预测器,使用指定预测器变量gydF4y2Ba“PredictorNames”gydF4y2Ba.gydF4y2Ba

    • 使用定义模型规范gydF4y2Ba公式gydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba中的变量的子集gydF4y2Ba资源描述gydF4y2Ba作为预测变量和响应变量,如gydF4y2Ba公式gydF4y2Ba.gydF4y2Ba

  • 如果gydF4y2Ba资源描述gydF4y2Ba不包含响应变量,然后通过使用gydF4y2BaYgydF4y2Ba.响应变量的长度gydF4y2BaYgydF4y2Ba和进去的行数gydF4y2Ba资源描述gydF4y2Ba必须是相等的。中变量的子集gydF4y2Ba资源描述gydF4y2Ba作为预测器,使用指定预测器变量gydF4y2Ba“PredictorNames”gydF4y2Ba.gydF4y2Ba

fitrgamgydF4y2Ba认为gydF4y2Ba南gydF4y2Ba,gydF4y2Ba”gydF4y2Ba(空字符向量),gydF4y2Ba""gydF4y2Ba(空字符串),gydF4y2Ba< >失踪gydF4y2Ba,gydF4y2Ba<定义>gydF4y2Ba值gydF4y2Ba资源描述gydF4y2Ba丢失的值。gydF4y2Ba

  • fitrgamgydF4y2Ba在拟合中不使用所有缺失值的观测值。gydF4y2Ba

  • fitrgamgydF4y2Ba在拟合中不使用缺少响应值的观测值。gydF4y2Ba

  • fitrgamgydF4y2Ba使用带有一些缺失值的观测值作为预测器,以找到这些观测值具有有效值的变量上的分割。gydF4y2Ba

数据类型:gydF4y2Ba表格gydF4y2Ba

响应变量名,指定为包含响应变量名的字符向量或字符串标量gydF4y2Ba资源描述gydF4y2Ba.例如,如果响应变量gydF4y2BaYgydF4y2Ba存储在gydF4y2Ba资源描述。YgydF4y2Ba,然后指定为gydF4y2Ba“Y”gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

模型规范,在表单中指定为字符向量或字符串标量gydF4y2Ba“Y ~项”gydF4y2Ba.的gydF4y2Ba公式gydF4y2Ba参数指定响应变量和预测变量的线性和交互项。使用gydF4y2Ba公式gydF4y2Ba中指定变量的子集gydF4y2Ba资源描述gydF4y2Ba作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量gydF4y2Ba资源描述gydF4y2Ba没有出现在gydF4y2Ba公式gydF4y2Ba.gydF4y2Ba

例如,指定gydF4y2BaY ~ x1 + x2 + x3 + x1, x2”gydF4y2Ba.在这种形式下,gydF4y2BaYgydF4y2Ba表示响应变量,和gydF4y2Bax1gydF4y2Ba,gydF4y2Bax2gydF4y2Ba,gydF4y2Bax3gydF4y2Ba表示预测变量的线性项。gydF4y2Bax1, x2gydF4y2Ba表示的交互项gydF4y2Bax1gydF4y2Ba而且gydF4y2Bax2gydF4y2Ba.gydF4y2Ba

公式中的变量名必须同时为gydF4y2Ba资源描述gydF4y2Ba(gydF4y2BaTbl.Properties.VariableNamesgydF4y2Ba)和有效的MATLABgydF4y2Ba®gydF4y2Ba标识符。中的变量名可以验证gydF4y2Ba资源描述gydF4y2Ba通过使用gydF4y2BaisvarnamegydF4y2Ba函数。变量名无效,则可以使用gydF4y2Bamatlab.lang.makeValidNamegydF4y2Ba函数。gydF4y2Ba

或者,您可以为预测器指定响应变量和线性术语gydF4y2Ba公式gydF4y2Ba,并为使用的预测器指定交互术语gydF4y2Ba“互动”gydF4y2Ba.gydF4y2Ba

fitrgamgydF4y2Ba仅使用术语whose构建一组交互树gydF4y2BapgydF4y2Ba-values不大于gydF4y2Ba“MaxPValue”gydF4y2Ba价值。gydF4y2Ba

例子:gydF4y2BaY ~ x1 + x2 + x3 + x1, x2”gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

响应数据,指定为数值列向量。每一项gydF4y2BaYgydF4y2Ba的对应行中的数据是否响应gydF4y2BaXgydF4y2Ba或gydF4y2Ba资源描述gydF4y2Ba.gydF4y2Ba

软件考虑gydF4y2Ba南gydF4y2Ba值gydF4y2BaYgydF4y2Ba丢失的值。gydF4y2BafitrgamgydF4y2Ba在拟合中不使用缺少响应值的观测值。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

预测器数据,指定为数值矩阵。每行gydF4y2BaXgydF4y2Ba对应一个观测值,每一列对应一个预测变量。gydF4y2Ba

fitrgamgydF4y2Ba认为gydF4y2Ba南gydF4y2Ba值gydF4y2BaXgydF4y2Ba作为缺失值。该函数不使用符合中所有缺失值的观测值。gydF4y2BafitrgamgydF4y2Ba使用一些缺少值的观测值gydF4y2BaXgydF4y2Ba在这些观察值有效的变量上找到分裂。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

名称-值参数gydF4y2Ba

指定可选参数对为gydF4y2BaName1 = Value1,…,以=家gydF4y2Ba,在那里gydF4y2Ba的名字gydF4y2Ba参数名称和gydF4y2Ba价值gydF4y2Ba对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。gydF4y2Ba

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来gydF4y2Ba的名字gydF4y2Ba在报价。gydF4y2Ba

例子:gydF4y2Ba“互动”,“所有”、“MaxPValue”,0.05gydF4y2Ba指定包含所有可用的交互术语gydF4y2BapgydF4y2Ba-values不大于0.05。gydF4y2Ba

GAM选项gydF4y2Ba

全部折叠gydF4y2Ba

为响应变量的标准偏差拟合模型,以逻辑形式指定gydF4y2Ba0gydF4y2Ba(gydF4y2Ba假gydF4y2Ba)或gydF4y2Ba1gydF4y2Ba(gydF4y2Ba真正的gydF4y2Ba).gydF4y2Ba

如果你指定gydF4y2Ba“FitStandardDeviation”gydF4y2Ba作为gydF4y2Ba真正的gydF4y2Ba,然后gydF4y2BafitrgamgydF4y2Ba为响应变量的标准偏差训练附加模型,并设置gydF4y2BaIsStandardDeviationFitgydF4y2Ba输出GAM对象的属性gydF4y2BaMdlgydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba.gydF4y2Ba

要计算给定观测值的标准偏差值,请使用gydF4y2Ba预测gydF4y2Ba,gydF4y2BaresubPredictgydF4y2Ba,或gydF4y2BakfoldPredictgydF4y2Ba.这些函数还返回响应变量的预测区间。gydF4y2Ba

推荐的做法是在拟合标准偏差模型以获得标准偏差估计的准确性时使用最优超参数。指定gydF4y2BaOptimizeHyperparametersgydF4y2Ba作为gydF4y2Ba“all-univariate”gydF4y2Ba(对于单变量GAM)或gydF4y2Ba“所有”gydF4y2Ba(对于二元GAM)一起gydF4y2Ba“FitStandardDeviation”,真的gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“FitStandardDeviation”,真的gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

交互项的梯度提升学习率,指定为区间(0,1]中的数值标量。gydF4y2BafitrgamgydF4y2Ba在整个训练过程中对交互项使用此速率。gydF4y2Ba

使用较小的学习率训练模型需要更多的学习迭代,但通常可以获得更好的精度。gydF4y2Ba

有关梯度增强的详细信息,请参见gydF4y2Ba梯度增强算法gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“InitialLearnRateForInteractions”,0.1gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

线性项的梯度提升学习率,指定为区间(0,1]中的数值标量。gydF4y2BafitrgamgydF4y2Ba在整个训练过程中对线性项使用此速率。gydF4y2Ba

使用较小的学习率训练模型需要更多的学习迭代,但通常可以获得更好的精度。gydF4y2Ba

有关梯度增强的详细信息,请参见gydF4y2Ba梯度增强算法gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“InitialLearnRateForPredictors”,0.1gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

要包含在候选集中的交互术语的数量或列表gydF4y2Ba年代gydF4y2Ba,指定为非负整数标量、逻辑矩阵或gydF4y2Ba“所有”gydF4y2Ba.gydF4y2Ba

  • 交互项的数目,指定为非负整数-gydF4y2Ba年代gydF4y2Ba包含指定数量的重要交互项,这些项是根据gydF4y2BapgydF4y2Ba-项的值。gydF4y2Ba

  • 交互术语列表,指定为逻辑矩阵-gydF4y2Ba年代gydF4y2Ba项指定的条款gydF4y2BatgydF4y2Ba——- - - - - -gydF4y2BapgydF4y2Ba逻辑矩阵,其中gydF4y2BatgydF4y2Ba交互项的个数,和gydF4y2BapgydF4y2Ba用于训练模型的预测器的数量。例如,gydF4y2Ba逻辑([1 10 0;0 1 1])gydF4y2Ba表示两对交互项:一对第一个和第二个预测符,一对第二个和第三个预测符。gydF4y2Ba

    如果gydF4y2BafitrgamgydF4y2Ba使用输入变量的子集作为预测器,然后函数仅使用该子集对预测器进行索引。即逻辑矩阵的列索引不计算响应和观测权重变量。索引也不计算函数未使用的任何变量。gydF4y2Ba

  • “所有”gydF4y2Ba- - - - - -gydF4y2Ba年代gydF4y2Ba包括所有可能的交互项对,即gydF4y2BaP *(P - 1)/2gydF4y2Ba总项数。gydF4y2Ba

在的交互项中gydF4y2Ba年代gydF4y2Ba,gydF4y2BafitrgamgydF4y2Ba函数标识了gydF4y2BapgydF4y2Ba-values不大于gydF4y2Ba“MaxPValue”gydF4y2Ba值并使用它们来构建一组交互树。使用默认值(gydF4y2Ba“MaxPValue”gydF4y2Ba,1)利用中所有术语构建交互树gydF4y2Ba年代gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“互动”、“所有”gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

每个交互树(交互术语的增强树)的最大决策分割(或分支节点)数量,指定为正整数标量。gydF4y2Ba

例子:gydF4y2Ba“MaxNumSplitsPerInteraction”,5gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

每个预测树(线性项的增强树)的决策分割(或分支节点)的最大数量,指定为正整数标量。默认情况下,gydF4y2BafitrgamgydF4y2Ba使用树桩作为预测树。gydF4y2Ba

例子:gydF4y2Ba“MaxNumSplitsPerPredictor”,5gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

最大gydF4y2BapgydF4y2Ba-value用于检测交互项,指定为区间[0,1]中的数字标量。gydF4y2Ba

fitrgamgydF4y2Ba首先找到候选集gydF4y2Ba年代gydF4y2Ba相互作用的术语gydF4y2Ba公式gydF4y2Ba或gydF4y2Ba“互动”gydF4y2Ba.然后,该函数确定其交互项gydF4y2BapgydF4y2Ba-values不大于gydF4y2Ba“MaxPValue”gydF4y2Ba值并使用它们来构建一组交互树。gydF4y2Ba

默认值(gydF4y2Ba“MaxPValue”,1gydF4y2Ba)为候选集中的所有交互术语构建交互树gydF4y2Ba年代gydF4y2Ba.gydF4y2Ba

有关检测交互项的详细信息,请参见gydF4y2Ba交互项检测gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“MaxPValue”,0.05gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

数值预测器的箱数,指定为正整数标量或gydF4y2Ba[]gydF4y2Ba(空的)。gydF4y2Ba

  • 如果您指定gydF4y2Ba“NumBins”gydF4y2Ba值作为正整数标量(gydF4y2BanumBinsgydF4y2Ba),然后gydF4y2BafitrgamgydF4y2Ba将每个数字预测器放入最多gydF4y2BanumBinsgydF4y2Ba等概率容器,然后在容器索引上生长树,而不是原始数据。gydF4y2Ba

    • 箱子的数量可以小于gydF4y2BanumBinsgydF4y2Ba如果一个预测器的值小于gydF4y2BanumBinsgydF4y2Ba独特的价值观。gydF4y2Ba

    • fitrgamgydF4y2Ba不包含分类预测符。gydF4y2Ba

  • 如果gydF4y2Ba“NumBins”gydF4y2Ba值为空(gydF4y2Ba[]gydF4y2Ba),然后gydF4y2BafitrgamgydF4y2Ba不丢弃任何预测器。gydF4y2Ba

当您使用大型训练数据集时,此分箱选项可以加快训练速度,但可能会导致准确性下降。的默认值gydF4y2Ba“NumBins”gydF4y2Ba,然后根据精度和训练速度改变值。gydF4y2Ba

训练过的模型gydF4y2BaMdlgydF4y2Ba控件中存储料仓边gydF4y2BaBinEdgesgydF4y2Ba财产。gydF4y2Ba

例子:gydF4y2Ba“NumBins”,50岁gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

每个交互项的树数,指定为正整数标量。gydF4y2Ba

的gydF4y2Ba“NumTreesPerInteraction”gydF4y2BaValue等价于预测器交互项的梯度增强迭代次数。对于每一次迭代,gydF4y2BafitrgamgydF4y2Ba将一组交互树添加到模型中,每个交互术语对应一棵树。要了解梯度增强算法,请参见gydF4y2Ba梯度增强算法gydF4y2Ba.gydF4y2Ba

通过查看时显示的诊断信息,可以判断拟合模型是否具有指定的树数gydF4y2Ba“详细”gydF4y2Ba是1还是2,还是通过检查gydF4y2BaReasonForTerminationgydF4y2Ba模型的属性值gydF4y2BaMdlgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“NumTreesPerInteraction”,500年gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

每个线性项的树数,指定为正整数标量。gydF4y2Ba

的gydF4y2Ba“NumTreesPerPredictor”gydF4y2BaValue等价于预测器线性项的梯度增强迭代次数。对于每一次迭代,gydF4y2BafitrgamgydF4y2Ba向模型中添加一组预测树,每个预测树对应一棵。要了解梯度增强算法,请参见gydF4y2Ba梯度增强算法gydF4y2Ba.gydF4y2Ba

通过查看时显示的诊断信息,可以判断拟合模型是否具有指定的树数gydF4y2Ba“详细”gydF4y2Ba是1还是2,还是通过检查gydF4y2BaReasonForTerminationgydF4y2Ba模型的属性值gydF4y2BaMdlgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“NumTreesPerPredictor”,500年gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

其他回归选项gydF4y2Ba

全部折叠gydF4y2Ba

类别预测符列表,指定为此表中的值之一。gydF4y2Ba

价值gydF4y2Ba 描述gydF4y2Ba
正整数向量gydF4y2Ba

向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间gydF4y2BapgydF4y2Ba,在那里gydF4y2BapgydF4y2Ba用于训练模型的预测器的数量。gydF4y2Ba

如果gydF4y2BafitrgamgydF4y2Ba使用输入变量的子集作为预测器,然后函数仅使用该子集对预测器进行索引。的gydF4y2BaCategoricalPredictorsgydF4y2Ba值不计算响应变量、观察权重变量或函数不使用的任何其他变量。gydF4y2Ba

逻辑向量gydF4y2Ba

一个gydF4y2Ba真正的gydF4y2BaEntry表示对应的预测器是分类的。向量的长度是gydF4y2BapgydF4y2Ba.gydF4y2Ba

字符矩阵gydF4y2Ba 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配gydF4y2BaPredictorNamesgydF4y2Ba.用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。gydF4y2Ba
字符向量的字符串数组或单元格数组gydF4y2Ba 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配gydF4y2BaPredictorNamesgydF4y2Ba.gydF4y2Ba
“所有”gydF4y2Ba 所有预测因素都是绝对的。gydF4y2Ba

默认情况下,如果预测器数据在表(gydF4y2Ba资源描述gydF4y2Ba),gydF4y2BafitrgamgydF4y2Ba如果一个变量是逻辑向量、无序分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定它是分类的。如果预测器数据为矩阵(gydF4y2BaXgydF4y2Ba),gydF4y2BafitrgamgydF4y2Ba假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用gydF4y2BaCategoricalPredictorsgydF4y2Ba名称-值参数。gydF4y2Ba

例子:gydF4y2Ba“CategoricalPredictors”、“所有”gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

诊断消息打印输出之间的迭代次数,指定为非负整数标量。此参数仅在指定时有效gydF4y2Ba“详细”gydF4y2Ba为1。gydF4y2Ba

如果你指定gydF4y2Ba“详细”,1gydF4y2Ba而且gydF4y2BaNumPrint, NumPrintgydF4y2Ba时,软件显示诊断信息gydF4y2BanumPrintgydF4y2Ba在命令窗口中的迭代。gydF4y2Ba

例子:gydF4y2Ba“NumPrint”,500年gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能gydF4y2BaPredictorNamesgydF4y2Ba这取决于你提供训练数据的方式。gydF4y2Ba

  • 如果你提供gydF4y2BaXgydF4y2Ba而且gydF4y2BaYgydF4y2Ba,那么你就可以使用了gydF4y2BaPredictorNamesgydF4y2Ba中预测变量的名称gydF4y2BaXgydF4y2Ba.gydF4y2Ba

    • 里面名字的顺序gydF4y2BaPredictorNamesgydF4y2Ba必须对应的列顺序gydF4y2BaXgydF4y2Ba.也就是说,gydF4y2BaPredictorNames {1}gydF4y2Ba名字是gydF4y2BaX (: 1)gydF4y2Ba,gydF4y2BaPredictorNames {2}gydF4y2Ba名字是gydF4y2BaX (:, 2)gydF4y2Ba等等。同时,gydF4y2Ba大小(X, 2)gydF4y2Ba而且gydF4y2Ba元素个数(PredictorNames)gydF4y2Ba必须是相等的。gydF4y2Ba

    • 默认情况下,gydF4y2BaPredictorNamesgydF4y2Ba是gydF4y2Ba{x1, x2,…}gydF4y2Ba.gydF4y2Ba

  • 如果你提供gydF4y2Ba资源描述gydF4y2Ba,那么你就可以使用了gydF4y2BaPredictorNamesgydF4y2Ba选择在训练中使用哪些预测变量。也就是说,gydF4y2BafitrgamgydF4y2Ba中仅使用预测变量gydF4y2BaPredictorNamesgydF4y2Ba以及训练中的响应变量。gydF4y2Ba

    • PredictorNamesgydF4y2Ba的子集gydF4y2BaTbl.Properties.VariableNamesgydF4y2Ba并且不能包括响应变量的名称。gydF4y2Ba

    • 默认情况下,gydF4y2BaPredictorNamesgydF4y2Ba包含所有预测变量的名称。gydF4y2Ba

    • 一个好的实践是使用其中一种来指定训练的预测器gydF4y2BaPredictorNamesgydF4y2Ba或gydF4y2Ba公式gydF4y2Ba,但不是两者都有。gydF4y2Ba

例子:gydF4y2Ba“PredictorNames”(“SepalLength”、“SepalWidth”,“PetalLength”,“PetalWidth”)gydF4y2Ba

数据类型:gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

响应变量名,指定为字符向量或字符串标量。gydF4y2Ba

  • 如果你提供gydF4y2BaYgydF4y2Ba,那么你就可以使用了gydF4y2BaResponseNamegydF4y2Ba为响应变量指定名称。gydF4y2Ba

  • 如果你提供gydF4y2BaResponseVarNamegydF4y2Ba或gydF4y2Ba公式gydF4y2Ba,那么你就不能用了gydF4y2BaResponseNamegydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“ResponseName”、“反应”gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

响应转换,指定为任意一种gydF4y2Ba“没有”gydF4y2Ba或者一个函数句柄。默认为gydF4y2Ba“没有”gydF4y2Ba,这意味着gydF4y2Ba@ (y) ygydF4y2Ba,或者没有变换。对于MATLAB函数或您定义的函数,使用其函数句柄进行响应变换。函数句柄必须接受一个向量(原始响应值)并返回一个相同大小的向量(转换后的响应值)。gydF4y2Ba

例子:gydF4y2Ba假设您创建了一个函数句柄,通过使用将指数变换应用于输入向量gydF4y2BaMyfunction = @(y)exp(y)gydF4y2Ba.然后,您可以将响应转换指定为gydF4y2Bamyfunction ResponseTransform,gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Bafunction_handlegydF4y2Ba

详细级别,指定为gydF4y2Ba0gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,或gydF4y2Ba2gydF4y2Ba.的gydF4y2Ba详细的gydF4y2Bavalue控制软件在命令窗口中显示的信息量。gydF4y2Ba

下表总结了可用的详细级别选项。gydF4y2Ba

价值gydF4y2Ba 描述gydF4y2Ba
0gydF4y2Ba 软件没有显示任何信息。gydF4y2Ba
1gydF4y2Ba 该软件显示诊断信息每gydF4y2BanumPrintgydF4y2Ba迭代,gydF4y2BanumPrintgydF4y2Ba是gydF4y2Ba“NumPrint”gydF4y2Ba价值。gydF4y2Ba
2gydF4y2Ba 软件在每次迭代时显示诊断消息。gydF4y2Ba

诊断消息的每一行都显示了关于每个增强迭代的信息,并包括以下列:gydF4y2Ba

  • 类型gydF4y2Ba-训练树木的类型,gydF4y2Ba1 dgydF4y2Ba(预测树,或用于预测器的线性项的增强树)或gydF4y2Ba二维gydF4y2Ba(交互树,或预测器交互术语的增强树)gydF4y2Ba

  • NumTreesgydF4y2Ba-每个线性项或交互项的树数gydF4y2BafitrgamgydF4y2Ba到目前为止添加到模型中gydF4y2Ba

  • 异常gydF4y2Ba- - - - - -gydF4y2Ba异常gydF4y2Ba模型的gydF4y2Ba

  • RelTolgydF4y2Ba-模型预测的相对变化:gydF4y2Ba (gydF4y2Ba ygydF4y2Ba ^gydF4y2Ba kgydF4y2Ba −gydF4y2Ba ygydF4y2Ba ^gydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba ”gydF4y2Ba (gydF4y2Ba ygydF4y2Ba ^gydF4y2Ba kgydF4y2Ba −gydF4y2Ba ygydF4y2Ba ^gydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba /gydF4y2Ba ygydF4y2Ba ^gydF4y2Ba kgydF4y2Ba ”gydF4y2Ba ygydF4y2Ba ^gydF4y2Ba kgydF4y2Ba ,在那里gydF4y2Ba ygydF4y2Ba ^gydF4y2Ba kgydF4y2Ba 迭代时模型预测的列向量吗gydF4y2BakgydF4y2Ba

  • LearnRategydF4y2Ba-当前迭代使用的学习率gydF4y2Ba

例子:gydF4y2Ba“详细”,1gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

观察权重,指定为矢量的标量值或变量的名称gydF4y2Ba资源描述gydF4y2Ba.软件对每一行的观察结果进行加权gydF4y2BaXgydF4y2Ba或gydF4y2Ba资源描述gydF4y2Ba中对应的值gydF4y2Ba权重gydF4y2Ba.的大小gydF4y2Ba权重gydF4y2Ba必须等于行数gydF4y2BaXgydF4y2Ba或gydF4y2Ba资源描述gydF4y2Ba.gydF4y2Ba

如果将输入数据指定为表gydF4y2Ba资源描述gydF4y2Ba,然后gydF4y2Ba权重gydF4y2Ba可以是变量名中的gydF4y2Ba资源描述gydF4y2Ba它包含一个数值向量。在这种情况下,您必须指定gydF4y2Ba权重gydF4y2Ba作为字符向量或字符串标量。例如,如果权重向量gydF4y2BaWgydF4y2Ba存储为gydF4y2Ba资源描述。WgydF4y2Ba,然后指定为gydF4y2Ba' W 'gydF4y2Ba.gydF4y2Ba

fitrgamgydF4y2Ba的值规范化gydF4y2Ba权重gydF4y2Ba和为1。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

请注意gydF4y2Ba

方法时,不能使用任何交叉验证名称-值参数gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba名称-值参数。您可以修改交叉验证gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba只有使用gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba名称-值参数。gydF4y2Ba

交叉验证选择gydF4y2Ba

全部折叠gydF4y2Ba

标记来训练交叉验证的模型,指定为gydF4y2Ba“上”gydF4y2Ba或gydF4y2Ba“关闭”gydF4y2Ba.gydF4y2Ba

如果你指定gydF4y2Ba“上”gydF4y2Ba,然后该软件用10次折叠训练交叉验证的模型。gydF4y2Ba

方法重写此交叉验证设置gydF4y2Ba“CVPartition”gydF4y2Ba,gydF4y2Ba“坚持”gydF4y2Ba,gydF4y2Ba“KFold”gydF4y2Ba,或gydF4y2Ba“Leaveout”gydF4y2Ba名称-值参数。在创建交叉验证模型时,一次只能使用一个交叉验证名称-值参数。gydF4y2Ba

或者,在创建模型后通过传递交叉验证gydF4y2BaMdlgydF4y2Ba来gydF4y2BacrossvalgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“Crossval”,“上”gydF4y2Ba

交叉验证分区,指定为gydF4y2BacvpartitiongydF4y2Ba创建的分区对象gydF4y2BacvpartitiongydF4y2Ba.分区对象指定交叉验证的类型以及训练集和验证集的索引。gydF4y2Ba

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用gydF4y2Bacvp = cvpartition(500,'KFold',5)gydF4y2Ba.然后,您可以通过使用指定交叉验证的模型gydF4y2Ba“CVPartition”,本量利gydF4y2Ba.gydF4y2Ba

用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定gydF4y2Ba‘坚持’,pgydF4y2Ba,然后软件完成以下步骤:gydF4y2Ba

  1. 随机选择并保留gydF4y2Bap * 100gydF4y2Ba%的数据作为验证数据,并使用其余数据训练模型。gydF4y2Ba

  2. 将紧凑的、训练过的模型存储在gydF4y2Ba训练有素的gydF4y2Ba交叉验证模型的属性。gydF4y2Ba

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“坚持”,0.1gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定gydF4y2BaKFold, kgydF4y2Ba,然后软件完成以下步骤:gydF4y2Ba

  1. 将数据随机划分为gydF4y2BakgydF4y2Ba集。gydF4y2Ba

  2. 对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型gydF4y2BakgydF4y2Ba- 1gydF4y2Ba集。gydF4y2Ba

  3. 存储gydF4y2BakgydF4y2Ba紧凑,训练有素的模型gydF4y2BakgydF4y2Ba的-by-1单元格向量gydF4y2Ba训练有素的gydF4y2Ba交叉验证模型的属性。gydF4y2Ba

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“KFold”,5gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

省略一个交叉验证标志,指定为gydF4y2Ba“上”gydF4y2Ba或gydF4y2Ba“关闭”gydF4y2Ba.如果你指定gydF4y2Ba“Leaveout”,“上”gydF4y2Ba,然后对每个的gydF4y2BangydF4y2Ba观察(gydF4y2BangydF4y2Ba(不包括遗漏的观测数据)的观测数据数目是否已列明gydF4y2BaNumObservationsgydF4y2Ba属性的模型),软件完成这些步骤:gydF4y2Ba

  1. 保留一个观察数据作为验证数据,并使用另一个数据训练模型gydF4y2BangydF4y2Ba- 1次观察。gydF4y2Ba

  2. 存储gydF4y2BangydF4y2Ba紧凑,训练有素的模型在一个gydF4y2BangydF4y2Ba的-by-1单元格向量gydF4y2Ba训练有素的gydF4y2Ba交叉验证模型的属性。gydF4y2Ba

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“Leaveout”,“上”gydF4y2Ba

超参数优化选项gydF4y2Ba

全部折叠gydF4y2Ba

要优化的参数,指定为以下值之一:gydF4y2Ba

  • “没有”gydF4y2Ba-不要优化。gydF4y2Ba

  • “汽车”gydF4y2Ba——优化gydF4y2BaInitialLearnRateForPredictorsgydF4y2Ba,gydF4y2BaNumTreesPerPredictorgydF4y2Ba,gydF4y2Ba的相互作用gydF4y2Ba,gydF4y2BaInitialLearnRateForInteractionsgydF4y2Ba,gydF4y2BaNumTreesPerInteractiongydF4y2Ba.gydF4y2Ba

  • “auto-univariate”gydF4y2Ba——优化gydF4y2BaInitialLearnRateForPredictorsgydF4y2Ba而且gydF4y2BaNumTreesPerPredictorgydF4y2Ba.gydF4y2Ba

  • “auto-bivariate”gydF4y2Ba——优化gydF4y2Ba的相互作用gydF4y2Ba,gydF4y2BaInitialLearnRateForInteractionsgydF4y2Ba,gydF4y2BaNumTreesPerInteractiongydF4y2Ba.gydF4y2Ba

  • “所有”gydF4y2Ba-优化所有符合条件的参数。gydF4y2Ba

  • “all-univariate”gydF4y2Ba优化所有符合条件的单变量参数。gydF4y2Ba

  • “all-bivariate”gydF4y2Ba-优化所有符合条件的双变量参数。gydF4y2Ba

  • 符合条件的参数名的字符串数组或单元格数组。gydF4y2Ba

  • 向量的gydF4y2BaoptimizableVariablegydF4y2Ba对象的输出gydF4y2BahyperparametersgydF4y2Ba.gydF4y2Ba

符合条件的参数gydF4y2BafitrgamgydF4y2Ba是:gydF4y2Ba

  • 单变量hyperparametersgydF4y2Ba

    • InitialLearnRateForPredictorsgydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba在实值之间搜索,在范围内按对数缩放gydF4y2Ba(1 e - 3, 1)gydF4y2Ba.gydF4y2Ba

    • MaxNumSplitsPerPredictorgydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba搜索范围内的整数gydF4y2Ba[1, maxNumSplits]gydF4y2Ba,在那里gydF4y2BamaxNumSplitsgydF4y2Ba是gydF4y2BaNumObservations-1 30 min (max (2))gydF4y2Ba.gydF4y2BaNumObservationsgydF4y2Ba不包括缺失观测值的观测值数是否存储在gydF4y2BaNumObservationsgydF4y2Ba返回模型的属性gydF4y2BaMdlgydF4y2Ba.gydF4y2Ba

    • NumTreesPerPredictorgydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba在整数之间搜索,在范围内按对数缩放gydF4y2Ba[10500]gydF4y2Ba.gydF4y2Ba

  • 二元hyperparametersgydF4y2Ba

    • 的相互作用gydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba在整数之间搜索,在范围内按对数缩放gydF4y2Ba[0, MaxNumInteractions]gydF4y2Bat,gydF4y2BaMaxNumInteractionsgydF4y2Ba是gydF4y2BaNumPredictors*(NumPredictors - 1)/2gydF4y2Ba,gydF4y2BaNumPredictorsgydF4y2Ba用于训练模型的预测器的数量。gydF4y2Ba

    • InitialLearnRateForInteractionsgydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba在实值之间搜索,在范围内按对数缩放gydF4y2Ba(1 e - 3, 1)gydF4y2Ba.gydF4y2Ba

    • MaxNumSplitsPerInteractiongydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba搜索范围内的整数gydF4y2Ba[1, maxNumSplits]gydF4y2Ba.gydF4y2Ba

    • NumTreesPerInteractiongydF4y2Ba- - - - - -gydF4y2BafitrgamgydF4y2Ba在整数之间搜索,在范围内按对数缩放gydF4y2Ba[10500]gydF4y2Ba.gydF4y2Ba

使用gydF4y2Ba“汽车”gydF4y2Ba或gydF4y2Ba“所有”gydF4y2Ba寻找单变量和双变量参数的最优超参数值。或者,您可以使用以下方法找到单变量参数的最佳值gydF4y2Ba“auto-univariate”gydF4y2Ba或gydF4y2Ba“all-univariate”gydF4y2Ba然后利用二元参数求最优值gydF4y2Ba“auto-bivariate”gydF4y2Ba或gydF4y2Ba“all-bivariate”gydF4y2Ba.有关示例,请参见gydF4y2Ba使用OptimizeHyperparameters优化GAMgydF4y2Ba而且gydF4y2Ba训练广义加性回归模型gydF4y2Ba.gydF4y2Ba

优化尝试最小化交叉验证损失(错误)gydF4y2BafitrgamgydF4y2Ba通过改变参数。若要控制交叉验证类型和优化的其他方面,请使用gydF4y2BaHyperparameterOptimizationOptionsgydF4y2Ba名称-值参数。gydF4y2Ba

请注意gydF4y2Ba

的价值gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba重写使用其他名称-值参数指定的任何值。例如,设置gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba来gydF4y2Ba“汽车”gydF4y2Ba原因gydF4y2BafitrgamgydF4y2Ba方法所对应的超参数gydF4y2Ba“汽车”gydF4y2Ba选项并忽略超参数的任何指定值。gydF4y2Ba

通过传递的向量来设置非默认参数gydF4y2BaoptimizableVariablegydF4y2Ba具有非默认值的对象。例如:gydF4y2Ba

负载gydF4y2BacarsmallgydF4y2BaParams =超参数(gydF4y2Ba“fitrgam”gydF4y2Ba(功率、重量),MPG);参数(1)。Range = [1e-4,1e6];gydF4y2Ba

通过gydF4y2Ba参数个数gydF4y2Ba作为价值gydF4y2BaOptimizeHyperparametersgydF4y2Ba.gydF4y2Ba

默认情况下,迭代显示出现在命令行上,并根据优化中的超参数数量显示图形。对于优化和绘图,目标函数为gydF4y2BaLog(1 +交叉验证损失)gydF4y2Ba.要控制迭代显示,请设置gydF4y2Ba详细的gydF4y2Ba字段gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba名称-值参数。为了控制情节,设置gydF4y2BaShowPlotsgydF4y2Ba字段gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba名称-值参数。gydF4y2Ba

例子:gydF4y2Ba“OptimizeHyperparameters”、“汽车”gydF4y2Ba

用于优化的选项,指定为结构。的效果gydF4y2BaOptimizeHyperparametersgydF4y2Ba名称-值参数。结构中的所有字段都是可选的。gydF4y2Ba

字段名gydF4y2Ba 值gydF4y2Ba 默认的gydF4y2Ba
优化器gydF4y2Ba
  • “bayesopt”gydF4y2Ba-使用贝叶斯优化。在内部,此设置调用gydF4y2BabayesoptgydF4y2Ba.gydF4y2Ba

  • “gridsearch”gydF4y2Ba-使用网格搜索gydF4y2BaNumGridDivisionsgydF4y2Ba每个维度的值。gydF4y2Ba

  • “randomsearch”gydF4y2Ba-在其中随机搜索gydF4y2BaMaxObjectiveEvaluationsgydF4y2Ba点。gydF4y2Ba

“gridsearch”gydF4y2Ba以随机顺序进行搜索,使用统一抽样而不从网格中替换。优化后,可以使用命令获取网格顺序的表gydF4y2Basortrows (Mdl.HyperparameterOptimizationResults)gydF4y2Ba.gydF4y2Ba

“bayesopt”gydF4y2Ba
AcquisitionFunctionNamegydF4y2Ba

  • “expected-improvement-per-second-plus”gydF4y2Ba

  • “expected-improvement”gydF4y2Ba

  • “expected-improvement-plus”gydF4y2Ba

  • “expected-improvement-per-second”gydF4y2Ba

  • “lower-confidence-bound”gydF4y2Ba

  • “probability-of-improvement”gydF4y2Ba

名称包括的获取函数gydF4y2Ba每秒gydF4y2Ba不能产生可重复的结果,因为优化依赖于目标函数的运行时间。名称包括的获取函数gydF4y2Ba+gydF4y2Ba当他们过度开发一个区域时,修改他们的行为。详情请参见gydF4y2Ba采集函数类型gydF4y2Ba.gydF4y2Ba

“expected-improvement-per-second-plus”gydF4y2Ba
MaxObjectiveEvaluationsgydF4y2Ba 目标函数求值的最大个数。gydF4y2Ba 30.gydF4y2Ba为gydF4y2Ba“bayesopt”gydF4y2Ba而且gydF4y2Ba“randomsearch”gydF4y2Ba,而整个电网为gydF4y2Ba“gridsearch”gydF4y2Ba
MaxTimegydF4y2Ba

时间限制,指定为正实标量。时间限制以秒为单位,由gydF4y2Ba抽搐gydF4y2Ba而且gydF4y2BatocgydF4y2Ba.运行时间可以超过gydF4y2BaMaxTimegydF4y2Ba因为gydF4y2BaMaxTimegydF4y2Ba不中断函数求值。gydF4y2Ba

正gydF4y2Ba
NumGridDivisionsgydF4y2Ba 为gydF4y2Ba“gridsearch”gydF4y2Ba,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。gydF4y2Ba 10gydF4y2Ba
ShowPlotsgydF4y2Ba 指示是否显示图的逻辑值。如果gydF4y2Ba真正的gydF4y2Ba,该字段根据迭代次数绘制最佳观测目标函数值。如果使用贝叶斯优化(gydF4y2Ba优化器gydF4y2Ba是gydF4y2Ba“bayesopt”gydF4y2Ba),则该字段也绘制出目标函数的最佳估计值。最佳观测目标函数值和最佳估计目标函数值对应于gydF4y2BaBestSoFar(观察)gydF4y2Ba而且gydF4y2BaBestSoFar (estim)。gydF4y2Ba列的迭代分别显示。您可以在属性中找到这些值gydF4y2BaObjectiveMinimumTracegydF4y2Ba而且gydF4y2BaEstimatedObjectiveMinimumTracegydF4y2Ba的gydF4y2BaMdl。HyperparameterOptimizationResultsgydF4y2Ba.如果问题包含一个或两个用于贝叶斯优化的优化参数,则gydF4y2BaShowPlotsgydF4y2Ba还绘制了目标函数对参数的模型。gydF4y2Ba 真正的gydF4y2Ba
SaveIntermediateResultsgydF4y2Ba 时是否保存结果的逻辑值gydF4y2Ba优化器gydF4y2Ba是gydF4y2Ba“bayesopt”gydF4y2Ba.如果gydF4y2Ba真正的gydF4y2Ba,此字段将覆盖名为gydF4y2Ba“BayesoptResults”gydF4y2Ba在每次迭代中。变量是agydF4y2BaBayesianOptimizationgydF4y2Ba对象。gydF4y2Ba 假gydF4y2Ba
详细的gydF4y2Ba

在命令行显示:gydF4y2Ba

  • 0gydF4y2Ba-无迭代显示gydF4y2Ba

  • 1gydF4y2Ba-迭代显示gydF4y2Ba

  • 2gydF4y2Ba-带有额外信息的迭代显示gydF4y2Ba

详细信息请参见gydF4y2BabayesoptgydF4y2Ba详细的gydF4y2Ba名称-值参数和示例gydF4y2Ba使用贝叶斯优化优化分类器拟合gydF4y2Ba.gydF4y2Ba

1gydF4y2Ba
UseParallelgydF4y2Ba 指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见gydF4y2Ba并行贝叶斯优化gydF4y2Ba.gydF4y2Ba 假gydF4y2Ba
重新分区gydF4y2Ba

指示是否在每次迭代中重新划分交叉验证的逻辑值。如果这个字段是gydF4y2Ba假gydF4y2Ba,优化器使用单个分区进行优化。gydF4y2Ba

设置gydF4y2Ba真正的gydF4y2Ba通常会给出最健壮的结果,因为它考虑了分区噪声。然而,为了获得好的结果,gydF4y2Ba真正的gydF4y2Ba需要至少两倍的函数求值。gydF4y2Ba

假gydF4y2Ba
使用以下三个选项中的一个即可。gydF4y2Ba
CVPartitiongydF4y2Ba 一个gydF4y2BacvpartitiongydF4y2Ba对象创建的gydF4y2BacvpartitiongydF4y2Ba “Kfold”,5gydF4y2Ba如果没有指定交叉验证字段gydF4y2Ba
坚持gydF4y2Ba 范围内的标量gydF4y2Ba(0,1)gydF4y2Ba表示抵抗分数gydF4y2Ba
KfoldgydF4y2Ba 大于1的整数gydF4y2Ba

例子:gydF4y2Ba“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)gydF4y2Ba

数据类型:gydF4y2Ba结构体gydF4y2Ba

输出参数gydF4y2Ba

全部折叠gydF4y2Ba

训练过的广义加性模型,作为本表中的模型对象之一返回。gydF4y2Ba

模型对象gydF4y2Ba 训练模型对象的交叉验证选项gydF4y2Ba 使用模型对象预测响应的方法gydF4y2Ba
RegressionGAMgydF4y2Ba 没有一个gydF4y2Ba 使用gydF4y2Ba预测gydF4y2Ba预测对新观察的反应,并使用gydF4y2BaresubPredictgydF4y2Ba预测训练观察的反应。gydF4y2Ba
RegressionPartitionedGAMgydF4y2Ba 指定名称-值参数gydF4y2BaKFoldgydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaLeaveoutgydF4y2Ba,gydF4y2BaCrossValgydF4y2Ba,或gydF4y2BaCVPartitiongydF4y2Ba 使用gydF4y2BakfoldPredictgydF4y2Ba预测观察结果的反应gydF4y2BafitrgamgydF4y2Ba坚持训练。gydF4y2BakfoldPredictgydF4y2Ba通过使用在没有观察的情况下训练的模型来预测每个观察的响应。gydF4y2Ba

引用gydF4y2BaMdlgydF4y2Ba,使用点表示法。例如,输入gydF4y2BaMdl。的相互作用gydF4y2Ba在命令窗口中显示交互项gydF4y2BaMdlgydF4y2Ba.gydF4y2Ba

更多关于gydF4y2Ba

全部折叠gydF4y2Ba

回归的广义加性模型gydF4y2Ba

广义可加性模型(GAM)是一种可解释的模型,它使用预测因子的单变量和双变量形状函数的和来解释响应变量。gydF4y2Ba

fitrgamgydF4y2Ba使用增强树作为每个预测器的形状函数,并可选地,每对预测器;因此,该函数可以捕获预测器和响应变量之间的非线性关系。由于各个形状函数对预测(响应值)的贡献被很好地分离,模型易于解释。gydF4y2Ba

标准的GAM为每个预测器使用一个单变量形状函数。gydF4y2Ba

ygydF4y2Ba ~gydF4y2Ba NgydF4y2Ba (gydF4y2Ba μgydF4y2Ba ,gydF4y2Ba σgydF4y2Ba 2gydF4y2Ba )gydF4y2Ba ggydF4y2Ba (gydF4y2Ba μgydF4y2Ba )gydF4y2Ba =gydF4y2Ba μgydF4y2Ba =gydF4y2Ba cgydF4y2Ba +gydF4y2Ba fgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba )gydF4y2Ba +gydF4y2Ba fgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba )gydF4y2Ba +gydF4y2Ba ⋯gydF4y2Ba +gydF4y2Ba fgydF4y2Ba pgydF4y2Ba (gydF4y2Ba xgydF4y2Ba pgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

在哪里gydF4y2BaygydF4y2Ba响应变量是否服从均值正态分布gydF4y2BaμgydF4y2Ba还有标准差gydF4y2BaσgydF4y2Ba.gydF4y2BaggydF4y2Ba(gydF4y2BaμgydF4y2Ba)gydF4y2Ba是恒等链接函数,和gydF4y2BacgydF4y2Ba是一个截距(常数)项。gydF4y2BafgydF4y2Ba我gydF4y2Ba(gydF4y2BaxgydF4y2Ba我gydF4y2Ba的单变量形状函数gydF4y2Ba我gydF4y2Ba预测器,它是预测器线性项的增强树(预测器树)。gydF4y2Ba

通过向模型中添加重要交互项的二元形状函数,可以在模型中包含预测因子之间的交互。gydF4y2Ba

μgydF4y2Ba =gydF4y2Ba cgydF4y2Ba +gydF4y2Ba fgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba )gydF4y2Ba +gydF4y2Ba fgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba )gydF4y2Ba +gydF4y2Ba ⋯gydF4y2Ba +gydF4y2Ba fgydF4y2Ba pgydF4y2Ba (gydF4y2Ba xgydF4y2Ba pgydF4y2Ba )gydF4y2Ba +gydF4y2Ba ∑gydF4y2Ba 我gydF4y2Ba ,gydF4y2Ba jgydF4y2Ba ∈gydF4y2Ba {gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba ⋯gydF4y2Ba ,gydF4y2Ba pgydF4y2Ba }gydF4y2Ba fgydF4y2Ba 我gydF4y2Ba jgydF4y2Ba (gydF4y2Ba xgydF4y2Ba 我gydF4y2Ba xgydF4y2Ba jgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

在哪里gydF4y2BafgydF4y2BaijgydF4y2Ba(gydF4y2BaxgydF4y2Ba我gydF4y2BaxgydF4y2BajgydF4y2Ba的二元形状函数gydF4y2Ba我gydF4y2Bath和gydF4y2BajgydF4y2Ba预测器,这是预测器的交互项的增强树(交互树)。gydF4y2Ba

fitrgamgydF4y2Ba的基础上查找重要的交互项gydF4y2BapgydF4y2Ba值的gydF4y2BaFgydF4y2Ba测试。详细信息请参见gydF4y2Ba交互项检测gydF4y2Ba.gydF4y2Ba

如果你指定gydF4y2Ba“FitStandardDeviation”gydF4y2Ba的gydF4y2BafitrgamgydF4y2Ba作为gydF4y2Ba假gydF4y2Ba(默认)gydF4y2BafitrgamgydF4y2Ba训练一个均值模型gydF4y2BaμgydF4y2Ba.如果你指定gydF4y2Ba“FitStandardDeviation”gydF4y2Ba作为gydF4y2Ba真正的gydF4y2Ba,然后gydF4y2BafitrgamgydF4y2Ba为标准偏差训练一个额外的模型gydF4y2BaσgydF4y2Ba并设置gydF4y2BaIsStandardDeviationFitgydF4y2Ba属性的GAM对象gydF4y2Ba真正的gydF4y2Ba.gydF4y2Ba

异常gydF4y2Ba

偏差是残差平方和的泛化。它衡量了与饱和模型相比的拟合优度。gydF4y2Ba

拟合模型的偏差是该模型与饱和模型对数似然差值的两倍:gydF4y2Ba

2(日志gydF4y2BalgydF4y2Ba- - - - - -日志gydF4y2BalgydF4y2Ba年代gydF4y2Ba),gydF4y2Ba

在哪里gydF4y2BalgydF4y2Ba而且gydF4y2BalgydF4y2Ba年代gydF4y2Ba分别为拟合模型和饱和模型的似然。饱和模型是具有您可以估计的最大参数数量的模型。gydF4y2Ba

fitrgamgydF4y2Ba使用偏差来衡量模型拟合的优度,并在每次迭代中找到一个降低偏差的学习率。指定gydF4y2Ba“详细”gydF4y2Ba设置为1或2,在命令窗口中显示偏差和学习率。gydF4y2Ba

算法gydF4y2Ba

全部折叠gydF4y2Ba

梯度增强算法gydF4y2Ba

fitrgamgydF4y2Ba使用梯度增强算法拟合广义加性模型(gydF4y2Ba最小二乘提振gydF4y2Ba).gydF4y2Ba

fitrgamgydF4y2Ba首先构建一组预测树(用于预测器的线性项的增强树),然后构建一组交互树(用于预测器的交互项的增强树)。提升算法最多迭代一次gydF4y2Ba“NumTreesPerPredictor”gydF4y2Ba预测树的次数,然后迭代最多gydF4y2Ba“NumTreesPerInteraction”gydF4y2Ba交互树的次数。gydF4y2Ba

对于每个增强迭代,gydF4y2BafitrgamgydF4y2Ba用学习率建立一组预测树gydF4y2Ba“InitialLearnRateForPredictors”gydF4y2Ba,或根据学习率构建一组交互树gydF4y2Ba“InitialLearnRateForInteractions”gydF4y2Ba.gydF4y2Ba

  • 在构建一组树时,该函数每次训练一棵树。它将一棵树与残差相匹配,残差是响应与之前生长的所有树的聚合预测之间的差值。为了控制学习速度的提高,该函数根据学习速率收缩树,然后将树添加到模型中并更新残差。gydF4y2Ba

    • 更新后的模型=当前模型+(学习率)·(新树)gydF4y2Ba

    • 更新残差=当前残差-(学习率)·(由新树解释的响应)gydF4y2Ba

  • 如果添加树集改善了模型拟合(即将拟合的偏差降低了一个大于容差的值),则gydF4y2BafitrgamgydF4y2Ba移动到下一个迭代。gydF4y2Ba

  • 如果添加树的集合并不能提高模型的拟合时gydF4y2BafitrgamgydF4y2Ba训练线性项,然后函数停止促进线性项的迭代,并开始促进交互项的迭代。如果函数在训练交互项时模型拟合没有改善,则函数终止模型拟合。gydF4y2Ba

    项可以确定训练停止的原因gydF4y2BaReasonForTerminationgydF4y2Ba训练模型的属性。gydF4y2Ba

交互项检测gydF4y2Ba

对于每一对相互作用项gydF4y2BaxgydF4y2Ba我gydF4y2BaxgydF4y2BajgydF4y2Ba(指定的gydF4y2Ba公式gydF4y2Ba或gydF4y2Ba“互动”gydF4y2Ba),软件执行gydF4y2BaFgydF4y2Ba-test检验该术语是否具有统计学意义。gydF4y2Ba

为了加快这个过程,gydF4y2BafitrgamgydF4y2Ba将数值预测器放入最多8个等概率的箱子中。如果预测器的唯一值少于8个,则箱子的数量可以小于8个。的gydF4y2BaFgydF4y2Ba-test检查创建的bin的零假设gydF4y2BaxgydF4y2Ba我gydF4y2Ba而且gydF4y2BaxgydF4y2BajgydF4y2Ba具有相同的响应,而不是至少有一个箱子具有与其他箱子不同的响应值。一个小gydF4y2BapgydF4y2Ba-value表示差异显著,这意味着对应的交互项显著,因此加入该项可以提高模型拟合。gydF4y2Ba

fitrgamgydF4y2Ba使用术语whose构建一组交互树gydF4y2BapgydF4y2Ba-values不大于gydF4y2Ba“MaxPValue”gydF4y2Ba价值。您可以使用默认值gydF4y2Ba“MaxPValue”gydF4y2Ba价值gydF4y2Ba1gydF4y2Ba使用指定的所有术语构建交互树gydF4y2Ba公式gydF4y2Ba或gydF4y2Ba“互动”gydF4y2Ba.gydF4y2Ba

fitrgamgydF4y2Ba属性的重要性顺序将交互项添加到模型中gydF4y2BapgydF4y2Ba值。使用gydF4y2Ba的相互作用gydF4y2Ba属性,以检查添加到模型中的交互项的顺序。gydF4y2Ba

参考文献gydF4y2Ba

卢、尹、里奇·卡鲁阿纳和约翰内斯·格尔克。分类与回归的可解模型gydF4y2Ba第18届ACM SIGKDD知识发现和数据挖掘国际会议论文集(KDD ' 12)。gydF4y2Ba中国北京:ACM出版社,2012,页150-158。gydF4y2Ba

Lou, Yin, Rich Caruana, Johannes Gehrke和Giles Hooker。“精确可解模型与成对交互。”gydF4y2Ba第19届ACM SIGKDD知识发现和数据挖掘国际会议论文集gydF4y2Ba芝加哥,伊利诺伊州,美国:ACM出版社,2013,pp. 623-631。gydF4y2Ba

扩展功能gydF4y2Ba

版本历史gydF4y2Ba

R2021a中引入gydF4y2Ba