主要内容

fitcensemble

适合学习者的整体分类

描述

例子

Mdl= fitcensemble (资源描述,ResponseVarName)返回合奏训练分类模型对象(Mdl),其中包含增加100分类树和预测的结果和响应表中的数据资源描述ResponseVarName响应变量的名称吗资源描述。默认情况下,fitcensemble使用LogitBoost二进制分类和AdaBoostM2多级分类。

例子

Mdl= fitcensemble (资源描述,公式)适用于公式适合的模型预测和响应表中的数据资源描述公式是一个解释性模型反应和预测变量的子集资源描述适合使用Mdl。例如,“Y ~ X1 + X2 + X3”适合的响应变量Tbl.Y作为预测变量的函数Tbl.X1,Tbl.X2,Tbl.X3

例子

Mdl= fitcensemble (资源描述,Y)对表中所有变量资源描述作为预测变量。Y数组的类标签,不是吗资源描述

例子

Mdl= fitcensemble (X,Y)使用预测数据矩阵X和数组的类标签Y

例子

Mdl= fitcensemble (___,名称,值)使用指定的一个或多个额外的选项名称,值对输入参数的参数和任何以前的语法。例如,您可以指定数量的学习周期,合奏聚合方法,或实现10倍交叉验证。

例子

全部折叠

创建一个使用所有可用的预测变量预测分类合奏的数据。然后,训练另一个合奏使用更少的预测因子。比较样本内预测精度的集合体。

加载census1994数据集。

负载census1994

训练一个分类模型使用整个数据集和缺省选项。

Mdl1 = fitcensemble (adultdata,“工资”)
Mdl1 = ClassificationEnsemble PredictorNames: {1 x14细胞}ResponseName:“工资”CategoricalPredictors:[2 4 6 7 8 9 10 14]一会:(< = 50 k > 50 k) ScoreTransform:“没有一个”NumObservations: 32561 NumTrained: 100方法:“LogitBoost”LearnerNames:{‘树’}ReasonForTermination:“终止通常在完成请求的数量的训练周期。“FitInfo: x1双[100]FitInfoDescription: {2 x1细胞}属性,方法

Mdl是一个ClassificationEnsemble模型。一些显著的特点Mdl是:

  • 因为两个类中表示数据,LogitBoost合奏聚合算法。

  • 因为整体聚合方法是提高算法,分类树,允许最多10分裂组成。

  • 一百棵树组成。

使用标签的系综分类预测一组随机的五个观测数据。比较预测标签和他们真正的价值。

rng (1)%的再现性[pX, pIdx] = datasample (adultdata 5);标签=预测(Mdl1, pX);表(标签,adultdata.salary (pIdx),“VariableNames”,{“预测”,“真相”})
ans =5×2表预测真理_____ _____ < = 50 k < = 50 k < = 50 k < = 50 k < = 50 k < = 50 k < = 50 k < = 50 k < = 50 k < = 50 k

培训新的搭配使用年龄教育只有。

Mdl2 = fitcensemble (adultdata,的工资~年龄+教育”);

比较resubstitution损失之间Mdl1Mdl2

rsLoss1 = resubLoss (Mdl1)
rsLoss1 = 0.1058
rsLoss2 = resubLoss (Mdl2)
rsLoss2 = 0.2037

样本的误分类率,使用所有预测较低。

训练提高了分类树使用的合奏fitcensemble。通过指定的减少训练时间“NumBins”名称-值对参数本数值预测。这个论点是有效的只有当fitcensemble使用一个树的学习者。培训后,您可以通过使用复制被预测数据BinEdges训练模型和的性质离散化函数。

生成一个样本数据集。

rng (“默认”)%的再现性N = 1 e6;X = [mvnrnd([1],眼(2),N);mvnrnd([1],眼(2),N)];y = [0 (N, 1);的(N, 1)];

可视化数据集。

图散射(X (1: N, 1), X (1: N, 2),“标记”,“。”,“MarkerEdgeAlpha”,0.01)散射(X (N + 1:2 * N, 1), X (N + 1:2 * N, 2),“标记”,“。”,“MarkerEdgeAlpha”,0.01)

火车的合奏了使用自适应逻辑回归分类树(LogitBoost,默认为二进制分类)。时间函数进行比较。

抽搐Mdl1 = fitcensemble (X, y);toc
运行时间是478.988422秒。

加快培训使用“NumBins”名称-值对的论点。如果你指定“NumBins”值作为一个正整数标量,那么软件箱子每个数值预测到指定数量的等概率的垃圾箱,然后树生长在本指数代替原始数据。软件不本分类预测。

抽搐Mdl2 = fitcensemble (X, y,“NumBins”,50);toc
运行时间是165.598434秒。

这个过程是当您使用快三倍分箱数据,而不是原始数据。注意,运行时间取决于您的操作系统。

由resubstitution比较分类错误。

rsLoss1 = resubLoss (Mdl1)
rsLoss1 = 0.0788
rsLoss2 = resubLoss (Mdl2)
rsLoss2 = 0.0788

在这个例子中,装箱不精确度损失预测的值可以减少培训时间。通常,当你有一个大的数据集在这个例子中,使用装箱选项加速训练但是会导致潜在的准确性下降。如果你想进一步减少训练时间,指定一个小数量的垃圾箱。

通过使用复制被预测数据BinEdges训练模型和的性质离散化函数。

X = Mdl2.X;%的预测数据Xbinned = 0(大小(X));边缘= Mdl2.BinEdges;%找到被预测的指标。idxNumeric =找到(~ cellfun (@isempty边缘));如果iscolumn (idxNumeric) idxNumeric = idxNumeric ';结束j = idxNumeric x = x (:, j);% x转换为数组如果x是一个表。如果istable (x) x = table2array (x);结束%组x到垃圾箱用离散化的功能。xbinned =离散化(x,[无穷;边缘{};正]);Xbinned (:, j) = Xbinned;结束

Xbinned包含本指标,从1到垃圾箱的数量,数值预测。Xbinned值是0分类预测。如果X包含年代,那么相应的Xbinned值是年代。

估计泛化误差提高了分类树的合奏。

加载电离层数据集。

负载电离层

旨在一个分类树的使用AdaBoostM1和10倍交叉验证。指定应该分裂,每棵树最多五次使用决策树模板。

rng (5);%的再现性t = templateTree (“MaxNumSplits”5);Mdl = fitcensemble (X, Y,“方法”,“AdaBoostM1”,“学习者”t“CrossVal”,“上”);

Mdl是一个ClassificationPartitionedEnsemble模型。

情节的累积,旨在10倍,误分类率。显示估计泛化误差的合奏。

kflc = kfoldLoss (Mdl,“模式”,“累积”);图;情节(kflc);ylabel (“误分类率10倍”);包含(“学习周期”);

estGenError = kflc(结束)
estGenError = 0.0769

kfoldLoss返回默认泛化误差。然而,绘制累计损失允许您监控损失变化弱学习者积累合奏。

整体达到约0.06的错误积累后约50弱的学习者。然后,误分类率略有增加,随着越来越多的弱学习者进入合奏。

如果你满意合奏的泛化误差,然后创建一个预测模型,训练合奏再次使用所有的设置除了交叉验证。然而,曲调hyperparameters是好的做法,如决定将每棵树的最大数量和数量的学习周期。

优化hyperparameters自动使用fitcensemble

加载电离层数据集。

负载电离层

你可以找到hyperparameters减少5倍交叉验证损失通过使用自动hyperparameter优化。

Mdl = fitcensemble (X, Y,“OptimizeHyperparameters”,“汽车”)

在这个例子中,再现性,设置随机种子和使用“expected-improvement-plus”采集功能。同时,再现性的随机森林算法,指定“复制”名称-值对的论点是真正的树的学习者。

rng (“默认”)t = templateTree (“复制”,真正的);Mdl = fitcensemble (X, Y,“OptimizeHyperparameters”,“汽车”,“学习者”t“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”,“expected-improvement-plus”))
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval客观客观| | | BestSoFar | BestSoFar | |方法NumLearningC - | LearnRate | MinLeafSize | | |结果| | |运行时(观察)| (estim) | |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 |的| 0.10256 | 1.6978 | 0.10256 | 0.10256 | RUSBoost | 11 | 0.010199 | 17 |
最好| 2 | | 0.062678 | 9.4354 | 0.062678 | 0.064264 | LogitBoost | 206 | 0.96537 | 33 |
| 3 |接受| 0.099715 | 7.614 | 0.062678 | 0.062688 | AdaBoostM1 | 130 | 0.0072814 | 2 |
| 4 |接受| 0.068376 | 1.6045 | 0.062678 | 0.062681 | 25袋| | - - - | 5 |
| 5 |接受| 0.065527 | 20.359 | 0.062678 | 0.062699 | LogitBoost | 447 | 0.5405 | 13 |
| 6 |接受| 0.074074 | 7.1054 | 0.062678 | 0.0627 | GentleBoost | 157 | 0.60495 | 108 |
| | 7日接受| 0.082621 | 0.9688 | 0.062678 | 0.064102 | GentleBoost 19 42 | 0.0010515 | | |
| 8 |接受| 0.17379 | 0.49564 | 0.062678 | 0.06268 | LogitBoost | | 0.001079 | 149 |
| | 9日接受| 0.076923 | 21.003 | 0.062678 | 0.062676 | GentleBoost | 468 | 0.035181 | 2 |
| |接受10 | 0.068376 | 13.575 | 0.062678 | 0.062676 | AdaBoostM1 | 221 | 0.99976 | 7 |
| | 11日接受| 0.10541 | 3.6394 | 0.062678 | 0.062676 | RUSBoost | 59 | 0.99629 | | 31日
| | 12日接受| 0.068376 | 3.3423 | 0.062678 | 0.062674 | AdaBoostM1 53 | | 0.20568 | 26 |
| | 13日接受| 0.096866 | 1.6005 | 0.062678 | 0.062672 | RUSBoost | 22 | 0.0010042 | 2 |
| | 14日接受| 0.071225 | 1.201 | 0.062678 | 0.062688 | LogitBoost | 23 | 0.99624 | 1 |
| | 15日接受| 0.082621 | 0.87944 | 0.062678 | 0.062687 | AdaBoostM1 | 11 | 0.95241 | 2 |
| | 16日接受| 0.079772 | 29.788 | 0.062678 | 0.062679 | AdaBoostM1 | 486 | 0.23903 | |
| | 17日接受| 0.35897 | 23.651 | 0.062678 | 0.06267 |袋| 499 | - | 169 |
| | 18日接受| 0.074074 | 0.653 | 0.062678 | 0.062674 | 10袋| | - | 1 |
| | 19日接受| 0.088319 | 32.811 | 0.062678 | 0.062674 | RUSBoost | 498 | 0.0010437 | 3 |
| |接受20 | 0.068376 | 6.1279 | 0.062678 | 0.062673 | GentleBoost | 130 | 0.0010021 | 3 |
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval客观客观| | | BestSoFar | BestSoFar | |方法NumLearningC - | LearnRate | MinLeafSize | | |结果| | |运行时(观察)| (estim) | |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | 21日接受| 0.17379 | 22.601 | 0.062678 | 0.06271 | LogitBoost | 496 | 0.0010096 | 146 |
| | 22日接受| 0.071225 | 2.9727 | 0.062678 | 0.062713 | GentleBoost | 71 | 0.91141 | 9 |
| | 23日接受| 0.64103 | 1.1288 | 0.062678 | 0.062706 | RUSBoost 20 | | 0.0012846 | 173 |
| | 24日接受| 0.11111 | 1.537 | 0.062678 | 0.062697 | RUSBoost | 24 | 0.96694 | 6 |
| | 25日接受| 0.17379 | 5.5632 | 0.062678 | 0.062686 | LogitBoost | 136 | 0.001 | 3 |
| | 26日接受| 0.35897 | 8.0556 | 0.062678 | 0.062686 | AdaBoostM1 | 156 | 0.003243 | 174 |
| | 27日接受| 0.065527 | 1.0791 | 0.062678 | 0.062686 | 21袋| | - | 2 |
| | 28日接受| 0.17379 | 1.7562 | 0.062678 | 0.062689 | LogitBoost 42 | | 0.0010283 | | 21日
| | 29日接受| 0.074074 | 4.3825 | 0.062678 | 0.062689 | GentleBoost | 108 | 0.0010055 | 173 |
| | 30日接受| 0.065527 | 1.4893 | 0.062678 | 0.062689 | LogitBoost | 32 | 0.97832 | 4 |

__________________________________________________________优化完成。MaxObjectiveEvaluations 30。总功能评估:30总运行时间:278.5509秒。总目标函数评价时间:238.1176最佳观察可行点:方法NumLearningCycles LearnRate MinLeafSize __________ _________________ _____ ___________ LogitBoost 206 0.96537 33观察目标函数值= 0.062678估计目标函数值= 0.062689时间评估函数= 9.4354最佳估计可行点(根据模型):方法NumLearningCycles LearnRate MinLeafSize __________ _________________ _____ ___________ LogitBoost 206 0.96537 33估计目标函数值= 0.062689估计时间评估函数= 9.4324
Mdl = ClassificationEnsemble ResponseName:‘Y’CategoricalPredictors:[]类名:{b ' g '} ScoreTransform:“没有一个”NumObservations: 351 HyperparameterOptimizationResults: [1×1 BayesianOptimization] NumTrained: 206方法:“LogitBoost”LearnerNames:{‘树’}ReasonForTermination:“终止通常在完成请求的数量的训练周期。“FitInfo(206×1双):FitInfoDescription:{2×1细胞}属性,方法

整体上的优化搜索二进制分类、聚合方法NumLearningCycles,在LearnRate适用的方法,在树的学习者MinLeafSize。输出最小的系综分类器估计交叉验证的损失。

一种提高分类树的创建一个令人满意的预测性能是通过调优决策树复杂性水平使用交叉验证。而寻找一个最佳的复杂性水平,调整学习速率,减少学习的循环次数。

这个例子使用交叉验证选项(手动找到最优参数“KFold”名称-值对)和论据kfoldLoss函数。或者,您可以使用“OptimizeHyperparameters”名称-值对参数自动优化hyperparameters。看到优化分类合奏

加载电离层数据集。

负载电离层

搜索最优tree-complexity水平:

  1. 旨在一组乐团。指数增加tree-complexity水平从树桩(1分)决定随后的集合体n- 1分裂。n是样本容量。同样,不同学习速率为每一套0.1至1。

  2. 估计旨在每个合奏的误分类率。

  3. tree-complexity水平 j , j = 1 J 比较累积,旨在误分类率乐团通过策划对学习的循环次数。情节单独为每个学习速率曲线在同一图。

  4. 选择曲线,达到最小的误分类率,并记录相应的学习周期和学习速度。

旨在深度分类树和一个树桩。这些分类树作为基准。

rng (1)%的再现性MdlDeep = fitctree (X, Y,“CrossVal”,“上”,“MergeLeaves”,“关闭”,“MinParentSize”1);MdlStump = fitctree (X, Y,“MaxNumSplits”,1“CrossVal”,“上”);

旨在150提高了分类树的整体使用5倍交叉验证。使用树模板,不同的最大数量分割使用序列中的值 { 3 0 , 3 1 , , 3 } 是这样的, 3 不大于n- 1。对于每一个变体,调整学习速率使用中的每个值集{0.1,0.25,0.5,1};

n =大小(X, 1);m =地板(log (n - 1) / log (3));learnRate = (0.1 0.25 0.5 1);numLR =元素个数(learnRate);maxNumSplits = 3。^ (0: m);numMNS =元素个数(maxNumSplits);numTrees = 150;Mdl =细胞(numMNS numLR);k = 1: numLRj = 1: numMNS t = templateTree (“MaxNumSplits”maxNumSplits (j));Mdl {j, k} = fitcensemble (X, Y,“NumLearningCycles”numTrees,“学习者”t“KFold”5,“LearnRate”,learnRate (k));结束结束

估计累积,旨在误分类率为每一个整体和分类树作为基准。

kflAll = @ (x) kfoldLoss (x,“模式”,“累积”);errorCell = cellfun (Mdl kflAll,“统一”、假);错误=重塑(cell2mat (errorCell), [numTrees元素个数(maxNumSplits)元素个数(learnRate)]);errorDeep = kfoldLoss (MdlDeep);errorStump = kfoldLoss (MdlStump);

情节如何旨在误分类率表现合奏的树的数量增加。情节上的曲线对学习速率相同的情节,和情节单独的情节不同tree-complexity水平。选择一个子集树复杂性水平的阴谋。

mnsPlot =[1轮(元素个数(maxNumSplits) / 2)元素个数(maxNumSplits)];图k = 1:3次要情节(2 2 k)情节(挤压(错误(:,mnsPlot (k):)),“线宽”2)轴持有甘氨胆酸h =;情节(h。XLim,[errorDeep errorDeep],“。b”,“线宽”,2)情节(h。XLim,[errorStump errorStump],“r”,“线宽”2)图(h.XLim min(最低(错误(:,mnsPlot (k):)))。* [1],“——k”)h。YLim = [0 0.2]; xlabel(树木的数量)ylabel (“旨在misclass。率的)标题(sprintf (“MaxNumSplits = % 0.3 g”maxNumSplits (mnsPlot (k))))结束hL =传奇([cellstr num2str (learnRate ',的学习速率= % 0.2 f '));“深树”;“树桩”;“分钟misclass。率的]);hL.Position (1) = 0.6;

每个曲线包含最低旨在误分类率发生在树的最优数量。

确定分割的最大数量,数量的树木,和学习速率总体收益率最低的误分类率。

[minErr, minErrIdxLin] = min(错误(:));[idxNumTrees, idxMNS idxLR] = ind2sub(大小(错误),minErrIdxLin);流(“\ nMin。misclass。率= % 0.5 f 'minErr)
分钟misclass。率= 0.05413
流(“\ nOptimal参数值:\ nNum。树= % d ',idxNumTrees);
最优参数值:Num。树木= 47
流(' \ nMaxNumSplits = % d \ nLearning率= % 0.2 f \ n ',maxNumSplits (idxMNS) learnRate (idxLR))
MaxNumSplits = 3学习速率= 0.25

创建一个基于最优预测合奏hyperparameters和整个训练集。

tFinal = templateTree (“MaxNumSplits”maxNumSplits (idxMNS));MdlFinal = fitcensemble (X, Y,“NumLearningCycles”idxNumTrees,“学习者”tFinal,“LearnRate”learnRate (idxLR))
MdlFinal = ClassificationEnsemble ResponseName:‘Y’CategoricalPredictors:[]类名:{b ' g '} ScoreTransform:“没有一个”NumObservations: 351 NumTrained: 47个方法:“LogitBoost”LearnerNames:{‘树’}ReasonForTermination:“终止通常在完成请求的数量的训练周期。“FitInfo(47×1双):FitInfoDescription:{2×1细胞}属性,方法

MdlFinal是一个ClassificationEnsemble。预测是否良好的雷达回波得到预测数据,可以通过数据和预测指标MdlFinal预测

而不是使用交叉验证选择手动搜索最优值(“KFold”)和kfoldLoss功能,您可以使用“OptimizeHyperparameters”名称-值对的论点。当你指定“OptimizeHyperparameters”软件发现,使用贝叶斯最优参数自动优化。通过使用获得的最佳值“OptimizeHyperparameters”可以获得不同于使用手动搜索。

mdl = fitcensemble (X, Y,“OptimizeHyperparameters”,{“NumLearningCycles”,“LearnRate”,“MaxNumSplits”})
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval客观客观| | | BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | |结果| | |运行时(观察)| (estim) |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 |的| 0.17379 | 6.2592 | 0.17379 | 0.17379 | 137 | 0.001364 | 3 |
| 2 |接受| 0.17379 | 0.79961 | 0.17379 | 0.17379 | 15 | 0.013089 | 144 |
最好| 3 | | 0.065527 | 1.4585 | 0.065527 | 0.065538 | 31日| 0.47201 | 2 |
| 4 |接受| 0.074074 | 13.988 | 0.065527 | 0.065549 | 340 | 0.92167 | 7 |
| 5 |接受| 0.088319 | 0.92718 | 0.065527 | 0.072102 | 0.2432 | 1 | | 22日
| 6 |接受| 0.074074 | 0.44748 | 0.065527 | 0.071237 | 10 | 0.7177 | 48 |
| | 7日接受| 0.08547 | 0.52207 | 0.065527 | 0.074847 | 10 | 0.57238 | 2 |
| 8 |接受| 0.074074 | 0.59154 | 0.065527 | 0.065556 | 11 | 0.97207 | 3 |
最好9 | | | 0.059829 | 1.6809 | 0.059829 | 0.059648 | 42 | 0.92135 | 343 |
最好10 | | | 0.054131 | 2.2481 | 0.054131 | 0.054148 | 49 | 0.97807 | 37 |
| | 11日接受| 0.065527 | 2.1686 | 0.054131 | 0.059479 | 48 | 0.9996 | 2 |
| | 12日接受| 0.068376 | 2.5909 | 0.054131 | 0.061923 | 58 | 0.91401 | 323 |
| | 13日接受| 0.17379 | 0.48621 | 0.054131 | 0.062113 | 10 | 0.0010045 | 4 |
| | 14日接受| 0.17379 | 0.55949 | 0.054131 | 0.059231 | 10 | 0.059072 | 148 |
| | 15日接受| 0.065527 | 1.9568 | 0.054131 | 0.062559 | 46 19 | | 0.76657 |
| | 16日接受| 0.065527 | 2.5692 | 0.054131 | 0.062807 | 57 | 0.64443 | 311 |
| | 17日接受| 0.17379 | 0.55723 | 0.054131 | 0.062748 | 10 | 0.0035012 | 2 |
| | 18日接受| 0.12821 | 1.9669 | 0.054131 | 0.062043 | 47 | 0.055757 | 197 |
| | 19日接受| 0.05698 | 1.2814 | 0.054131 | 0.060837 | 0.98997 | 12 | | 27岁
| |接受20 | 0.059829 | 1.1975 | 0.054131 | 0.060881 | 26 | 0.99112 | 13 |
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval客观客观| | | BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | |结果| | |运行时(观察)| (estim) |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | 21日接受| 0.065527 | 1.2255 | 0.054131 | 0.061441 | 25 | 0.99183 | 9 |
| | 22日接受| 0.17379 | 1.3748 | 0.054131 | 0.061461 | 29日| 0.0032434 | 344 |
| | 23日接受| 0.068376 | 3.055 | 0.054131 | 0.061768 | 67 | 0.18672 | 11 |
| | 24日接受| 0.059829 | 5.0035 | 0.054131 | 0.061785 | 119 | 0.3125 | 1 |
| | 25日接受| 0.059829 | 7.6141 | 0.054131 | 0.061793 | 176 | 0.25401 | 304 |
| | 26日接受| 0.059829 | 5.1133 | 0.054131 | 0.05988 | 115 | 0.34331 | 343 |
| | 27日接受| 0.059829 | 7.4027 | 0.054131 | 0.059895 | 178 | 0.26684 | 13 |
| | 28日接受| 0.059829 | 5.2506 | 0.054131 | 0.059872 | 118 | 0.32365 | 3 |
| | 29日接受| 0.062678 | 10.523 | 0.054131 | 0.059871 | 238 | 0.22465 | 1 |
| | 30日接受| 0.14815 | 0.57384 | 0.054131 | 0.059705 | 10 | 0.15205 | 2 |

__________________________________________________________优化完成。MaxObjectiveEvaluations 30。总功能评估:30总运行时间:122.7983秒。总目标函数评价时间:91.3933最佳观察可行点:NumLearningCycles LearnRate MaxNumSplits _________________ _____ _______ 49 0.97807 37观察目标函数值= 0.054131估计目标函数值= 0.062545时间评估函数= 2.2481最佳估计可行点(根据模型):NumLearningCycles LearnRate MaxNumSplits _________________ _____ _______ 119 0.3125 1估计目标函数值= 0.059705估计时间评估函数= 5.1842
mdl = ClassificationEnsemble ResponseName:‘Y’CategoricalPredictors:[]类名:{b ' g '} ScoreTransform:“没有一个”NumObservations: 351 HyperparameterOptimizationResults: [1×1 BayesianOptimization] NumTrained: 119方法:“LogitBoost”LearnerNames:{‘树’}ReasonForTermination:“终止通常在完成请求的数量的训练周期。“FitInfo(119×1双):FitInfoDescription:{2×1细胞}属性,方法

输入参数

全部折叠

样本数据用于训练模型,指定为一个表。每一行的资源描述对应于一个观察,每一列对应一个预测变量。资源描述响应变量可以包含一个额外的列。多列变量和细胞数组以外的细胞阵列的特征向量是不允许的。

  • 如果资源描述包含响应变量和您想要使用所有剩余变量预测,然后指定响应变量使用ResponseVarName

  • 如果资源描述包含响应变量,您想要使用的一个子集剩余变量的预测,然后指定一个公式使用公式

  • 如果资源描述不包含响应变量,然后指定响应数据使用吗Y。响应变量的长度的行数资源描述必须是相等的。

请注意

节省内存和执行时间,供应XY而不是资源描述

数据类型:

响应变量名称,指定为响应变量的名称资源描述

您必须指定ResponseVarName作为一个特征向量或字符串标量。例如,如果Tbl.Y响应变量,然后指定ResponseVarName作为“Y”。否则,fitcensemble将所有列的资源描述作为预测变量。

响应变量必须分类,字符,或字符串数组,逻辑或数值向量,或单元阵列的特征向量。如果响应变量是一个字符数组,数组的每个元素都必须对应一行。

对于分类,您可以指定类的顺序使用一会名称-值对的论点。否则,fitcensemble决定了课堂秩序,并将其存储在Mdl.ClassNames

数据类型:字符|字符串

响应变量的解释模型和预测变量的一个子集,指定为一个特征向量或字符串标量形式“Y ~ X1 + X2 + X3”。在这种形式,Y代表的响应变量,X1,X2,X3代表了预测变量。

指定变量的子集资源描述作为培训的预测模型,使用一个公式。如果你指定一个公式,那么软件中不使用任何变量资源描述不出现在公式

公式中的变量名必须两变量名资源描述(Tbl.Properties.VariableNamesMATLAB)和有效®标识符。

您可以验证变量名资源描述通过使用isvarname函数。以下代码返回逻辑1(真正的),每个变量都有一个有效的变量名。

cellfun (@isvarname Tbl.Properties.VariableNames)
如果变量名资源描述是无效的,那么把他们通过使用matlab.lang.makeValidName函数。
Tbl.Properties.VariableNames=matlab.lang.makeValidName(Tbl.Properties.VariableNames);

数据类型:字符|字符串

预测数据,指定为数字矩阵。

每一行对应一个观察,每一列对应一个预测变量。

的长度Y的行数X必须是相等的。

指定的名称的顺序预测的外表X,可以使用PredictorNames名称-值对的论点。

数据类型:|

响应数据,分类,指定字符,或字符串数组,逻辑或数值向量,或单元阵列的特征向量。中的每个条目Y的反应或标签是观察在相应的行吗X资源描述。的长度Y的行数X资源描述必须是相等的。如果响应变量是一个字符数组,数组的每个元素都必须对应一行。

您可以指定类的顺序使用一会名称-值对的论点。否则,fitcensemble决定了课堂秩序,并将其存储在Mdl.ClassNames

数据类型:分类|字符|字符串|逻辑|||细胞

名称-值对的观点

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:“CrossVal”,“上”、“LearnRate”, 0.05指定实现10倍交叉验证和使用0.05学习速率。

请注意

你不能使用任何交叉验证名称-值对论点的“OptimizeHyperparameters”名称-值对的论点。您可以修改交叉验证“OptimizeHyperparameters”只有通过使用“HyperparameterOptimizationOptions”名称-值对的论点。

一般系综选择

全部折叠

整体聚合方法,指定为逗号分隔组成的“方法”以下值之一。

价值 方法 分类问题的支持金宝app 名称-值对相关参数
“包” 引导聚合(例如,装袋,随机森林[2])- - -如果“方法”“包”,然后fitcensemble使用装袋与随机预测选择默认每次分裂(随机森林)。使用装袋没有随机选择,使用树的学习者“NumVariablesToSample”值是“所有”或者使用判别分析学习者。 二进制和多级 N /一个
“子” 随机子空间 二进制和多级 NPredToSample
“AdaBoostM1” 自适应增强 二只 LearnRate
“AdaBoostM2” 自适应增强 多级只 LearnRate
“GentleBoost” 温柔的适应性增强 二只 LearnRate
“LogitBoost” 自适应逻辑回归 二只 LearnRate
“LPBoost” 线性规划增加,需要优化工具箱™ 二进制和多级 MarginPrecision
“RobustBoost” 强劲的推动,需要优化工具箱 二只 RobustErrorGoal,RobustMarginSigma,RobustMaxMargin
“RUSBoost” 随机采样提高 二进制和多级 LearnRate,RatioToSmallest
“TotalBoost” 完全纠正提高——需要优化工具箱 二进制和多级 MarginPrecision

您可以指定取样选项(FResample,取代,重新取样)培训数据使用装袋时(“包”)或提高(“TotalBoost”,“RUSBoost”,“AdaBoostM1”,“AdaBoostM2”,“GentleBoost”,“LogitBoost”,“RobustBoost”,或“LPBoost”)。

默认值是:

  • “LogitBoost”二元问题,“AdaBoostM2”多类问题如果“学习者”树只包含学习者

  • “AdaBoostM1”二元问题,“AdaBoostM2”多类问题如果“学习者”包括树和判别分析学习者

  • “子”如果“学习者”学习者不包括树

整体聚合算法的细节和示例,请参阅算法,提示,整体算法,选择一个适用的合奏聚合方法

例子:“方法”,“包”

集成学习的循环次数,指定为逗号分隔组成的“NumLearningCycles”和一个正整数“AllPredictorCombinations”

  • 如果你指定一个正整数,那么,在每一个学习周期,软件火车弱学习者为每个模板对象之一学习者。因此,软件培训NumLearningCycles *元素个数(学习者)学习者。

  • 如果您指定“AllPredictorCombinations”,然后设置方法“子”只指定一个学习者学习者。使用这些设置,软件训练学习者的所有可能的组合预测NPredToSample在一个时间。因此,软件培训nchoosek(NPredToSample大小(X, 2))学习者。

软件组成整体使用所有训练学习者和商店Mdl.Trained

更多细节,请参阅提示

例子:“NumLearningCycles”, 500年

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

弱的学习者使用的合奏,指定为逗号分隔组成的“学习者”和weak-learner名称,weak-learner模板对象,或细胞weak-learner模板对象的向量。

弱的学习者 Weak-Learner名字 模板对象创建函数 方法设置
判别分析 “判别” templateDiscriminant 推荐给“子”
k最近的邻居 “资讯” templateKNN “子”只有
决策树 “树” templateTree 除了所有方法“子”

  • Weak-learner名称(“判别”,“资讯”,或“树”)- - -fitcensemble使用弱学习者创建的模板对象创建函数使用默认设置。例如,指定“学习者”,“判别”指定是一样的吗“学习者”,templateDiscriminant ()。看到模板对象创建功能页面的默认设置弱的学习者。

  • Weak-learner模板对象-fitcensemble使用弱学习者创建的模板对象创建函数。使用模板的名称-值对参数对象创建函数指定的设置弱的学习者。

  • 细胞的向量weak-learner模板对象-fitcensemble生长学习者学习每周期(见NumLearningCycles)。例如,对于一个由两种类型的分类树,供应{t1 t2},在那里t1t2分类树模板对象返回的templateTree

默认的“学习者”值是“资讯”如果“方法”“子”

默认的“学习者”值是“树”如果“方法”“包”或任何提高的方法。的默认值templateTree ()依赖的价值“方法”

  • 袋装决策树、决策分歧(的最大数量“MaxNumSplits”)是n - 1,在那里n是观测的数量。随机预测的数量来选择对于每个分裂(“NumVariablesToSample”)是预测的数量的平方根。因此,fitcensemble深决策树生长。你可以长浅树上降低模型复杂度和计算时间。

  • 提高了决策树,“MaxNumSplits”是10,“NumVariablesToSample”“所有”。因此,fitcensemble浅决策树生长。你能更深的树木生长的准确性。

看到templateTree默认设置的弱的学习者。获得可重复的结果,你必须指定“复制”名称-值对的观点templateTree作为真正的如果“NumVariablesToSample”不是“所有”

学习者的数量来培训的详细信息,明白了NumLearningCycles提示

例子:“学习者”,templateTree (MaxNumSplits, 5)

打印输出频率,指定为逗号分隔组成的“NPrint”和一个正整数“关闭”

跟踪的数量弱的学习者折叠fitcensemble训练到目前为止,指定一个正整数。也就是说,如果您指定正整数:

  • 还没有指定任何交叉验证选项(例如,CrossVal),然后fitcensemble每次显示一条消息到命令行完成培训弱的学习者。

  • 和交叉验证选项fitcensemble每次显示一条消息到命令行完成培训折叠。

如果您指定“关闭”,然后fitcensemble当它完成时不显示消息训练薄弱的学习者。

提示

当训练一个大数据集上的许多薄弱的学习者,指定一个正整数NPrint

例子:“NPrint”, 5

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

数值预测的箱子数量,指定为逗号分隔组成的“NumBins”和一个正整数标量。这个论点是有效的只有当fitcensemble使用一个树的学习者,“学习者”要么是“树”或通过使用创建的模板对象templateTree

  • 如果“NumBins”值是空的(默认),则软件不本任何预测。

  • 如果你指定“NumBins”值作为一个正整数标量,那么软件箱子每个数值预测到指定数量的等概率的垃圾箱,然后树生长在本指数代替原始数据。

    • 如果“NumBins”价值超过数量(u)的惟一值预测fitcensemble垃圾箱预测到u箱里。

    • fitcensemble没有本分类预测。

当你使用大量的训练数据集,该面元选项加速训练但是会导致潜在的准确性下降。你可以试着“NumBins”, 50岁首先,然后改变“NumBins”价值取决于训练速度和准确性。

训练模型存储本的边缘BinEdges财产。

例子:“NumBins”, 50岁

数据类型:|

分类预测列表,指定为逗号分隔组成的“CategoricalPredictors”在这个表的一个值。

价值 描述
向量的正整数 中的每个条目对应列向量索引值的预测数据(X资源描述包含一个分类变量)。
逻辑向量 一个真正的条目意味着预测数据的对应的列(X资源描述)是一个分类变量。
字符矩阵 矩阵的每一行是一个预测变量的名字。名称必须匹配的条目PredictorNames。垫的名字与额外的空格字符矩阵的每一行有相同的长度。
字符串数组或单元阵列的特征向量 数组中的每个元素是一个预测变量的名字。名称必须匹配的条目PredictorNames
“所有” 所有预测都直言。

规范的“CategoricalPredictors”是合适的,如果:

  • “学习者”指定树学习者。

  • “学习者”指定k最近的学习者,所有的预测都直言。

每个学习者识别,以同样的方式对待分类预测拟合函数对应于学习者。看到“CategoricalPredictors”fitcknnk最近的学习者和“CategoricalPredictors”fitctree树的学习者。

例子:“CategoricalPredictors”、“所有”

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

预测变量名称,指定为逗号分隔组成的“PredictorNames”和一个字符串数组独特的名称或单元阵列独特的特征向量。的功能“PredictorNames”取决于你提供的训练数据的方式。

  • 如果你提供XY,那么你可以使用“PredictorNames”指定名称的预测变量X

    • 名字的顺序PredictorNames必须对应的列顺序X。也就是说,PredictorNames {1}的名字是X (: 1),PredictorNames {2}的名字是X (:, 2),等等。同时,大小(X, 2)元素个数(PredictorNames)必须是相等的。

    • 默认情况下,PredictorNames{x1, x2,…}

  • 如果你提供资源描述,那么你可以使用“PredictorNames”选择使用哪个预测变量在训练。也就是说,fitcensemble只使用的预测变量PredictorNames和响应变量在训练。

    • PredictorNames必须是一个子集的Tbl.Properties.VariableNames,不能包括响应变量的名称。

    • 默认情况下,PredictorNames包含所有预测变量的名字。

    • 一个良好的实践是指定培训使用的预测因子“PredictorNames”公式,但不能两者兼得。

例子:PredictorNames, {‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}

数据类型:字符串|细胞

响应变量名称,指定为逗号分隔组成的“ResponseName”和一个字符向量或字符串标量。

  • 如果你提供Y,那么你可以使用“ResponseName”为响应变量指定一个名称。

  • 如果你提供ResponseVarName公式,那么你不能使用“ResponseName”

例子:“ResponseName”、“响应”

数据类型:字符|字符串

交叉验证选择

全部折叠

交叉验证标志,指定为逗号分隔组成的“Crossval”“上”“关闭”

如果您指定“上”交叉验证,软件实现了10倍。

覆盖这个交叉验证设置,使用其中一个名称-值对参数:CVPartition,坚持,KFold,或Leaveout。创建一个旨在模型,您可以使用一个交叉验证一次名称-值对的论点。

另外,旨在通过Mdlcrossvalcrossval

例子:“Crossval”,“上”

交叉验证分区,指定为逗号分隔组成的“CVPartition”和一个cvpartition分区创建的对象cvpartition。分区对象指定了类型的交叉验证,训练集和验证集的索引。

创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition,坚持,KFold,或Leaveout

例子:假设您创建一个随机的分区为5倍交叉验证500观察使用本量利= cvpartition(500年,“KFold”, 5)。然后,您可以指定模型旨在通过使用“CVPartition”,本量利

分数的数据用于抵抗验证、指定为逗号分隔组成的“坚持”和一个标量值的范围(0,1)。如果您指定‘坚持’,p,那么软件完成以下步骤:

  1. 随机选择和储备p * 100%的数据作为验证数据,并使用其余的数据训练模型。

  2. 在存储紧凑,训练模型训练有素的旨在模型的属性。

创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition,坚持,KFold,或Leaveout

例子:“坚持”,0.1

数据类型:|

折叠使用旨在模型,指定为逗号分隔组成的“KFold”和一个正整数价值大于1。如果您指定KFold, k,那么软件完成以下步骤:

  1. 随机数据分割成k集。

  2. 对于每一个集合,储备作为验证数据集,使用其他和训练模型k- 1集。

  3. 存储k紧凑,训练模型的细胞k1细胞向量训练有素的旨在模型的属性。

创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition,坚持,KFold,或Leaveout

例子:“KFold”, 5

数据类型:|

分析交叉验证标志,指定为逗号分隔组成的“Leaveout”“上”“关闭”。如果您指定“Leaveout”,“上”那么,对于每个n观察(n是观测的数量扣除缺少观察,指定的吗NumObservations模型的属性),软件完成以下步骤:

  1. 保留观察验证数据,使用其他火车模型n- 1的观察。

  2. 存储n紧凑,训练模型的细胞n1细胞向量训练有素的旨在模型的属性。

创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition,坚持,KFold,或Leaveout

例子:“Leaveout”,“上”

其他分类选项

全部折叠

类的名字用于培训,指定为逗号分隔组成的“类名”和分类、字符或字符串数组,一个逻辑或数值向量,或单元阵列的特征向量。一会必须具有相同的数据类型Y

如果一会每个元素是一个字符数组,那么必须对应一个数组的行。

使用“类名”:

  • 在训练的类。

  • 指定的任何输入或输出参数维度对应于类订单。例如,使用“类名”指定的尺寸成本或返回的列的顺序分类的分数预测

  • 选择一个子集类的培训。例如,假设所有不同的类名称的集合Y{' a ', ' b ', ' c '}。从类使用观察训练模型“一个”“c”只是,指定“类名”,{' a ', ' c '}

的默认值一会所有不同的类名称的集合在吗Y

例子:“类名”,{' b ', ' g '}

数据类型:分类|字符|字符串|逻辑|||细胞

误分类代价,指定为逗号分隔组成的“成本”和一个方阵或结构。如果你指定:

  • 的方阵成本,然后成本(i, j)是一个指向类分类的成本j如果它真正的类。即行对应于真正的阶级和列对应于预测类。指定的类订单相应的行和列成本,还指定一会名称-值对的论点。

  • 结构年代,那么它必须有两个字段:

    • S.ClassNames,其中包含类名相同的数据类型的一个变量Y

    • S.ClassificationCosts,其中包含成本矩阵行和列命令一样S.ClassNames

默认值是(K)- (K),在那里K不同的类的数目。

请注意

fitcensemble使用成本调整前类中指定的概率之前。然后,fitcensemble使用培训和重置成本的调整先验概率矩阵对其违约。

例子:“成本”,[0 1 2;1 0 2;2 2 0)

数据类型:||结构体

先验概率为每个类,指定为逗号分隔组成的“之前”在这个表和一个值。

价值 描述
“经验” 类先验概率类相对频率Y
“统一” 所有类先验概率等于1 /K,在那里K类的数量。
数值向量 每个元素都是一个类的先验概率。根据元素的顺序Mdl.ClassNames或指定的顺序使用一会名称-值对的论点。该软件可实现元素,这样他们总和1
结构数组

一个结构年代两个字段:

  • S.ClassNames包含类名作为相同类型的变量Y

  • S.ClassProbs包含一个向量对应的先验概率。该软件可实现元素,这样他们总和1

fitcensemble规范化的先验概率之前总和为1。

例子:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)

数据类型:字符|字符串|||结构体

分数变换,指定为逗号分隔组成的“ScoreTransform”和一个特征向量,字符串标量,或函数句柄。

这个表总结了可用的特征矢量和标量字符串。

价值 描述
“doublelogit” 1 / (1 +e2x)
“invlogit” 日志(x/ (1 -x))
“ismax” 集类的分数最大的分数为1,并设置所有其他类的分数为0
分对数的 1 / (1 +e- - - - - -x)
“没有”“身份” x(转换)
“标志” 1x< 0
为0x= 0
1x> 0
“对称” 2x- 1
“symmetricismax” 集合类的分数最大的分数为1,和所有其他类的分数设置为1
“symmetriclogit” 2 / (1 +e- - - - - -x)- 1

MATLAB函数或函数定义,使用它的功能处理的分数变换。函数处理必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。

例子:“ScoreTransform”、“分对数的

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

观察体重、指定为逗号分隔组成的“重量”和一个数字向量积极的值或变量的名称资源描述。软件重每一行的观察X资源描述与相应的价值权重。的大小权重的行数必须等于X资源描述

如果您指定输入数据表资源描述,然后权重可以是一个变量的名字资源描述包含一个数字向量。在这种情况下,您必须指定权重作为一个特征向量或字符串标量。例如,如果权重向量W存储为Tbl.W,然后指定它' W '。否则,软件将所有列资源描述,包括W训练时,预测或响应模型。

该软件可实现权重总结先验概率的值在相应的类中。

默认情况下,权重(n,1),在那里n观察的数量吗X资源描述

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

为提高方法和抽样选择装袋

全部折叠

训练集的分数为每个弱学习者重新取样,指定为逗号分隔组成的“FResample”和积极的标量(0,1)。

使用“FResample”,指定“包”方法或一组重新取样“上”

例子:“FResample”, 0.75

数据类型:|

国旗指示放回抽样,指定为逗号分隔组成的“替换”“关闭”“上”

  • “上”,软件样本训练观察和替换。

  • “关闭”,软件样本训练不重复观测。如果你设置重新取样“上”,那么软件样本训练观察假设统一的重量。如果你还指定一个促进方法,那么软件增加权重观察。

除非你设置方法“包”或一组重新取样“上”,取代没有效果。

例子:“替换”、“关闭”

标志指示重新取样,指定为逗号分隔组成的重新取样的“关闭”“上”

  • 如果方法是一个提高的方法,那么:

    • 重新取样,“指定样本训练观察使用更新后的重量作为多项抽样概率。

    • “重新取样”,“关闭”(默认)指定给观察学习在每一个迭代。

  • 如果方法“包”,然后重新取样的必须“上”。软件重新取样观察(见一小部分的训练FResample)有或没有替代(见取代)。

如果你指定重新取样使用重新取样,那是一种很好的做法重新取样到整个数据集,也就是说,使用默认设置为1FResample

AdaBoostM1、AdaBoostM2 LogitBoost, GentleBoost方法的选择

全部折叠

学习速率的收缩,指定为逗号分隔两人组成的数字标量的间隔(0,1)。

训练一个使用收缩,集LearnRate一个值小于1例如,0.1是一个受欢迎的选择。训练一个使用收缩学习需要更多的迭代,但往往达到更好的精度。

例子:“LearnRate”, 0.1

数据类型:|

RUSBoost方法选择

全部折叠

学习速率的收缩,指定为逗号分隔两人组成的数字标量的间隔(0,1)。

训练一个使用收缩,集LearnRate一个值小于1例如,0.1是一个受欢迎的选择。训练一个使用收缩学习需要更多的迭代,但往往达到更好的精度。

例子:“LearnRate”, 0.1

数据类型:|

抽样比例对lowest-represented类,指定为逗号分隔组成的“RatioToSmallest”和积极的价值观与长度的数值标量或数值向量等于在训练数据不同的类的数目。

假设有K训练数据和lowest-represented类中的类在训练数据的观察。

  • 如果指定的数字标量年代,然后fitcensemble样品年代*观察每个类,也就是说,它使用相同的抽样比例为每一个类。更多细节,请参阅算法

  • 如果您指定数值向量(s1,s2、……sK],然后fitcensemble样品如果*观察从类,= 1,…,K。的元素RatioToSmallest对应的顺序使用指定的类名一会(见提示)。

默认值是(K,1),它指定样本观察每个类。

例子:‘RatioToSmallest’, (2, 1)

数据类型:|

LPBoost TotalBoost方法的选择

全部折叠

边缘精度控制收敛速度,指定为逗号分隔组成的“MarginPrecision”和一个数字区间[0,1]中的标量。MarginPrecision影响提高迭代收敛所需的数量。

提示

训练一个使用许多学习者,指定一个小值MarginPrecision。使用一些学习者培训,指定一个较大的值。

例子:“MarginPrecision”, 0.5

数据类型:|

RobustBoost方法选择

全部折叠

目标分类错误,指定为逗号分隔组成的“RobustErrorGoal”和一个非负数字标量。的上限可能值取决于的值RobustMarginSigmaRobustMaxMargin。然而,上限不能超过1

提示

对于一个特定的训练集,通常有一个最佳的范围RobustErrorGoal。如果你设置过低或过高,那么软件可以生成一个模型分类精度较差。交叉验证图谱尝试寻找适当的值。

例子:“RobustErrorGoal”, 0.05

数据类型:|

训练数据分类边缘分布扩散,指定为逗号分隔组成的“RobustMarginSigma”和积极的数字标量。在指定RobustMarginSigma,查阅文献RobustBoost例如,[19]

例子:“RobustMarginSigma”, 0.5

数据类型:|

最大分类保证金在训练数据,指定为逗号分隔组成的“RobustMaxMargin”和一个非负数字标量。软件的数量降至最低,观察在训练数据分类下面的利润率RobustMaxMargin

例子:“RobustMaxMargin”, 1

数据类型:|

随机子空间方法的选择

全部折叠

样本的预测数量为每个随机子空间学习者,指定为逗号分隔组成的“NPredToSample”和一个正整数区间1,…,p,在那里p预测变量的数量(大小(X, 2)大小(台,2))。

数据类型:|

Hyperparameter优化选项

全部折叠

参数优化,指定为逗号分隔组成的“OptimizeHyperparameters”和下列之一:

  • “没有”——不优化。

  • “汽车”——使用{‘法’,‘NumLearningCycles’,‘LearnRate}除了指定的默认参数学习者:

    • 学习者=“树”(默认){' MinLeafSize '}

    • 学习者=“判别”- - - - - -{“三角洲”,“伽马”}

    • 学习者=“资讯”- - - - - -{‘距离’,‘NumNeighbors}

    请注意

    hyperparameter优化,学习者必须是一个参数,而不是一个字符串数组或单元阵列。

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

  • 字符串数组或单元阵列的参数名的资格

  • 向量的optimizableVariable对象,通常的输出hyperparameters

优化试图最小化交叉验证(错误)损失fitcensemble通过改变参数。交叉验证的信息损失(尽管在不同的上下文中),看到的分类损失。控制交叉验证类型和其他方面的优化,使用HyperparameterOptimizationOptions名称-值对。

请注意

“OptimizeHyperparameters”值覆盖任何值使用其他名称-值对参数设置。例如,设置“OptimizeHyperparameters”“汽车”导致“汽车”值应用。

合格的参数fitcensemble是:

  • 方法——取决于类的数量。

    • 两个类,符合条件的方法“包”,“GentleBoost”,“LogitBoost”,“AdaBoostM1”,“RUSBoost”

    • 三个或更多的类,符合条件的方法“包”,“AdaBoostM2”,“RUSBoost”

  • NumLearningCycles- - - - - -fitcensemble搜索之间的正整数,默认情况下对数与范围[10500]

  • LearnRate- - - - - -fitcensemble默认搜索之间的正实数,对数与范围(1 e - 3, 1)

  • 选择合格的hyperparameters学习者:

    学习者 合格Hyperparameters
    大胆=默认情况下使用
    默认范围
    “判别” δ 对数的范围(1 e-6, 1 e3)
    DiscrimType “线性”,“二次”,“diagLinear”,“diagQuadratic”,“pseudoLinear”,“pseudoQuadratic”
    γ 真正的价值[0,1]
    “资讯” 距离 “cityblock”,“chebychev”,“相关”,的余弦,“欧几里得”,“汉明”,“jaccard”,“mahalanobis”,闵可夫斯基的,“seuclidean”,“枪兵”
    DistanceWeight “平等”,“逆”,“squaredinverse”
    指数 积极的价值观(0.5,3)
    NumNeighbors 正整数的值范围的对数[1,马克斯(2轮(NumObservations / 2)))
    标准化 “真正的”“假”
    “树” MaxNumSplits 整数对数的范围NumObservations-1[1,马克斯(2))
    MinLeafSize 整数对数的范围[1,马克斯(2楼(NumObservations / 2)))
    NumVariablesToSample 整数的范围NumPredictors[1,马克斯(2))
    SplitCriterion gdi的,“异常”,“两个”

    另外,使用hyperparameters和你的选择学习者。请注意,您必须指定在创建一个预测数据和响应optimizableVariable对象。

    负载fisheririsparams = hyperparameters (“fitcensemble”量,物种,“树”);

    看到有资格和默认hyperparameters,检查参数个数

设置默认的参数通过一个向量的optimizableVariable有默认值的对象。例如,

负载fisheririsparams = hyperparameters (“fitcensemble”量,物种,“树”);参数(4)。范围= (1、30);

通过参数个数的价值OptimizeHyperparameters

默认情况下,迭代显示出现在命令行,和情节出现的数量根据hyperparameters优化。优化和阴谋的目标函数日志(1 +交叉验证损失)回归和分类的误分类率。控制迭代显示设置详细的场的“HyperparameterOptimizationOptions”名称-值对的论点。控制块,设置ShowPlots场的“HyperparameterOptimizationOptions”名称-值对的论点。

例如,看到的优化分类合奏

例子:OptimizeHyperparameters,{‘法’,‘NumLearningCycles’,‘LearnRate’,‘MinLeafSize’,‘MaxNumSplits}

为优化选项,指定为逗号分隔组成的“HyperparameterOptimizationOptions”和结构。这个参数修改的影响OptimizeHyperparameters名称-值对的论点。所有字段的结构是可选的。

字段名 默认的
优化器
  • “bayesopt”——使用贝叶斯优化。在内部,该设置调用bayesopt

  • “gridsearch”——使用网格搜索NumGridDivisions每个维度值。

  • “randomsearch”——随机搜索中MaxObjectiveEvaluations点。

“gridsearch”在随机顺序搜索,使用统一的网格不重复抽样。优化后,可以得到一个网格顺序表使用的命令sortrows (Mdl.HyperparameterOptimizationResults)

“bayesopt”
AcquisitionFunctionName

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

  • “expected-improvement”

  • “expected-improvement-plus”

  • “expected-improvement-per-second”

  • “lower-confidence-bound”

  • “probability-of-improvement”

他们的名字包括采集功能每秒不产生可重复的结果,因为优化取决于目标函数的运行时。他们的名字包括采集功能+修改他们的行为当他们overexploiting面积。更多细节,请参阅获取函数类型

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 最大数量的目标函数的评价。 30.“bayesopt”“randomsearch”,整个电网“gridsearch”
MaxTime

时间限制,指定为一个积极的现实。时间限制在几秒钟内,作为衡量抽搐toc。运行时可超过MaxTime因为MaxTime不中断功能评估。

NumGridDivisions “gridsearch”在每个维度的数量值。正整数的值可以是一个向量给每个尺寸的数量值,或一个标量,适用于所有尺寸。这个领域被忽略为分类变量。 10
ShowPlots 逻辑值指示是否显示情节。如果真正的,这个领域最好的目标函数值与迭代数。如果有一个或两个优化参数,如果优化器“bayesopt”,然后ShowPlots还阴谋的模型目标函数的参数。 真正的
SaveIntermediateResults 逻辑值指示是否保存结果优化器“bayesopt”。如果真正的,这个领域覆盖一个工作区变量命名“BayesoptResults”在每一个迭代。变量是一个BayesianOptimization对象。
详细的

显示命令行。

  • 0——没有迭代显示

  • 1——迭代显示

  • 2——迭代显示额外信息

详情,请参阅bayesopt详细的名称-值对的论点。

1
UseParallel 逻辑值,指出是否贝叶斯优化并行运行,这就需要并行计算工具箱™。由于nonreproducibility平行的时机,平行贝叶斯优化不一定产生可重复的结果。有关详细信息,请参见平行的贝叶斯优化
重新分区

逻辑值指示是否重新分配在每个迭代交叉验证。如果优化器使用单个分区,优化。

真正的通常给最健壮的结果,因为这个设置需要考虑分区噪音。然而,对于好的结果,真正的至少需要两倍的功能评估。

使用不超过以下三个字段名称之一。
CVPartition 一个cvpartition创建的对象cvpartition “Kfold”, 5如果你不指定任何交叉验证字段
坚持 一个标量范围(0,1)代表抵抗分数。
Kfold 一个大于1的整数。

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

数据类型:结构体

输出参数

全部折叠

训练有素的整体模型,作为一个模型对象的表返回。

模型对象 指定任何交叉验证选择吗? 方法设置 重新取样设置
ClassificationBaggedEnsemble 没有 “包” “上”
ClassificationEnsemble 没有 任何合奏聚合方法分类 “关闭”
ClassificationPartitionedEnsemble 是的 任何合奏聚合方法分类 “关闭”“上”

控制交叉验证的参数名称-值对CrossVal,坚持,KFold,Leaveout,CVPartition

引用的属性Mdl,使用点符号。例如,访问或显示细胞弱学习者模型对象的向量,没有旨在,回车Mdl.Trained在命令行中。

提示

  • NumLearningCycles可以从几十到几千不等。通常,一个具有良好的预测能力需要从几百到几千弱的学习者。然而,你不需要训练一次为一个周期。您可以首先增长几十个学生,检查整体性能,然后,如果必要的话,火车更弱的学习者使用的简历分类问题。

  • 整体性能取决于合奏和薄弱的学习者的设置。也就是说,如果你指定弱学习者使用默认参数,那么整体表现不佳。因此,像合奏的设置,是一种很好的做法,薄弱的学习者使用模板的参数调整,并选择最小化泛化误差的值。

  • 如果你指定重新取样使用重新取样,那是一种很好的做法重新取样到整个数据集,也就是说,使用默认设置1FResample

  • 如果整体聚合方法(方法)是“包”和:

    • 误分类代价(成本)是高度不平衡,然后,在袋子样品,软件oversamples独特的观察从类,它有一个很大的处罚。

    • 类先验概率(之前)高度倾斜,软件oversamples独特的观察从类,有一个很大的先验概率。

    对于小样本大小,这些组合会导致较低的相对频率的out-of-bag观察类,有一个很大的罚款或先验概率。因此,估计out-of-bag错误是高度可变的,很难解释。为了避免out-of-bag估计误差方差大,特别是对于小样本大小,设定一个更加平衡的误分类代价矩阵使用成本或少倾斜使用先验概率向量之前

  • 因为一些输入和输出参数的顺序在训练数据对应不同的类,是一种很好的做法来指定类的顺序使用一会名称-值对的论点。

    • 迅速确定类的顺序,从训练数据中删除所有的观察,是保密的(即有一个失踪的标签),获取和显示数组的所有不同的类,然后指定数组一会。例如,假设响应变量(Y)是一个单元阵列的标签。这个代码指定了类顺序变量一会

      Ycat =分类(Y);一会=类别(Ycat)
      分类分配<定义>未分类的观察和类别不包括<定义>从它的输出。因此,如果使用这段代码单元阵列的标签分类数组或类似的代码,那么你不需要删除的观察与失踪的标签来获取不同的类的列表。

    • 指定类订单lowest-represented标签项目最多,然后迅速确定类的顺序(如在前面的子弹),但安排前将由频率列表中的类列表一会。从之前的例子后,这段代码指定了类-项目最多的最低订单classNamesLH

      Ycat =分类(Y);一会=类别(Ycat);频率= countcats (Ycat);[~,idx] =(频率)进行排序;classNamesLH =一会(idx);

  • 训练模型后,可以生成C / c++代码,预测新数据标签。需要生成C / c++代码MATLAB编码器™。有关详细信息,请参见介绍代码生成

算法

  • 整体聚合算法的细节,请参阅整体算法

  • 如果你设置方法提高算法和学习者决策树,那么软件默认浅决策树生长。你可以调整树深度通过指定MaxNumSplits,MinLeafSize,MinParentSize名称-值对参数使用templateTree

  • 装袋(“方法”,“包”),fitcensemble生成在袋子样品采样过密类大误分类代价采样类小误分类代价。因此,out-of-bag样本较少的观察从类大误分类代价和更多的观察类小误分类代价。如果你训练一个分类合奏使用一个小的数据集和一个高度倾斜成本矩阵,然后out-of-bag观察每个类的数量可以很低。因此,估计out-of-bag错误可以有很大的差异,很难解释。同样的现象也发生类先验概率大。

  • RUSBoost合奏的聚合方法(“方法”、“RUSBoost”),名称-值对的论点RatioToSmallest指定抽样比例为每一个类对lowest-represented类。例如,假设有两类训练数据:一个B一个有100个观察和B有10个观察。假设lowest-represented类也在训练数据的观察。

    • 如果你设置“RatioToSmallest”, 2,然后年代*=2 * 10=20.。因此,fitcensemble火车每一个学习者使用20观察类一个从类和20的观察B。如果你设置‘RatioToSmallest’, (2 - 2),那么你获得相同的结果。

    • 如果你设置‘RatioToSmallest’, (2, 1),然后s1*=2 * 10=20.s2*=1 * 10=10。因此,fitcensemble火车每一个学习者使用20观察类一个从类和10的观察B

  • 双核系统及以上,fitcensemble对培训使用英特尔®线程构建块(TBB)。在英特尔TBB的详细信息,请参见https://software.intel.com/en-us/intel-tbb

引用

[1]Breiman l .“装袋预测。”机器学习。26卷,第140 - 123页,1996年。

[2]Breiman, l .“随机森林。”机器学习。45卷,5-32,2001页。

[3]Freund, y“一个更健壮的增强算法。”v1 arXiv: 0905.2138,2009年。

[4]Freund, y和r e Schapire。“决策理论推广应用程序在线学习和提高。”j .计算机和系统科学,55卷,第139 - 119页,1997年。

[5]弗里德曼,j .“贪婪的函数近似:梯度提高机器。”统计年鉴5号,卷。29日,第1232 - 1189页,2001年。

[6]弗里德曼,J。,T. Hastie, and R. Tibshirani. “Additive logistic regression: A statistical view of boosting.”统计年鉴2号,卷。28日,第407 - 337页,2000年。

[7]Hastie, T。,R. Tibshirani, and J. Friedman.统计学习的元素部分版,施普林格,纽约,2008年。

[8],t . k .“构造决定的随机子空间法的森林。”IEEE模式分析与机器智能8号,卷。20日,第844 - 832页,1998年。

[9]Schapire r E。,Y。Freund, P. Bartlett, and W.S. Lee. “Boosting the margin: A new explanation for the effectiveness of voting methods.”统计年鉴5号,卷。26日,第1686 - 1651页,1998年。

[10]塞弗特,C。,T. Khoshgoftaar, J. Hulse, and A. Napolitano. “RUSBoost: Improving classification performance when training data is skewed.”19国际会议模式识别,2008年,页1 - 4。

[11]Warmuth, M。,J。Liao, and G. Ratsch. “Totally corrective boosting algorithms that maximize the margin.”Proc, 23日国际。ACM Conf.在机器学习,纽约,1001 - 1008年,2006页。

扩展功能

介绍了R2016b