适合学习者的整体分类
返回合奏训练分类模型对象(Mdl
= fitcensemble (资源描述
,ResponseVarName
)Mdl
),其中包含增加100分类树和预测的结果和响应表中的数据资源描述
。ResponseVarName
响应变量的名称吗资源描述
。默认情况下,fitcensemble
使用LogitBoost二进制分类和AdaBoostM2多级分类。
创建一个使用所有可用的预测变量预测分类合奏的数据。然后,训练另一个合奏使用更少的预测因子。比较样本内预测精度的集合体。
加载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损失之间Mdl1
和Mdl2
。
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水平:
旨在一组乐团。指数增加tree-complexity水平从树桩(1分)决定随后的集合体n- 1分裂。n是样本容量。同样,不同学习速率为每一套0.1至1。
估计旨在每个合奏的误分类率。
tree-complexity水平 , 比较累积,旨在误分类率乐团通过策划对学习的循环次数。情节单独为每个学习速率曲线在同一图。
选择曲线,达到最小的误分类率,并记录相应的学习周期和学习速度。
旨在深度分类树和一个树桩。这些分类树作为基准。
rng (1)%的再现性MdlDeep = fitctree (X, Y,“CrossVal”,“上”,“MergeLeaves”,“关闭”,…“MinParentSize”1);MdlStump = fitctree (X, Y,“MaxNumSplits”,1“CrossVal”,“上”);
旨在150提高了分类树的整体使用5倍交叉验证。使用树模板,不同的最大数量分割使用序列中的值 。米是这样的, 不大于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: numLR为j = 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
。响应变量的长度的行数资源描述
必须是相等的。
请注意
节省内存和执行时间,供应X
和Y
而不是资源描述
。
数据类型:表
ResponseVarName
- - - - - -响应变量名资源描述
公式
- - - - - -说明模型的响应变量和预测变量的子集响应变量的解释模型和预测变量的一个子集,指定为一个特征向量或字符串标量形式“Y ~ X1 + X2 + X3”
。在这种形式,Y
代表的响应变量,X1
,X2
,X3
代表了预测变量。
指定变量的子集资源描述
作为培训的预测模型,使用一个公式。如果你指定一个公式,那么软件中不使用任何变量资源描述
不出现在公式
。
公式中的变量名必须两变量名资源描述
(Tbl.Properties.VariableNames
MATLAB)和有效®标识符。
您可以验证变量名资源描述
通过使用isvarname
函数。以下代码返回逻辑1
(真正的
),每个变量都有一个有效的变量名。
cellfun (@isvarname Tbl.Properties.VariableNames)
资源描述
是无效的,那么把他们通过使用matlab.lang.makeValidName
函数。Tbl.Properties.VariableNames=matlab.lang.makeValidName(Tbl.Properties.VariableNames);
数据类型:字符
|字符串
X
- - - - - -预测数据预测数据,指定为数字矩阵。
每一行对应一个观察,每一列对应一个预测变量。
的长度Y
的行数X
必须是相等的。
指定的名称的顺序预测的外表X
,可以使用PredictorNames
名称-值对的论点。
数据类型:单
|双
指定可选的逗号分隔条名称,值
参数。的名字
参数名称和吗价值
相应的价值。的名字
必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家
。
“CrossVal”,“上”、“LearnRate”, 0.05
指定实现10倍交叉验证和使用0.05
学习速率。
请注意
你不能使用任何交叉验证名称-值对论点的“OptimizeHyperparameters”
名称-值对的论点。您可以修改交叉验证“OptimizeHyperparameters”
只有通过使用“HyperparameterOptimizationOptions”
名称-值对的论点。
“方法”
- - - - - -整体聚合方法“包”
|“子”
|“AdaBoostM1”
|“AdaBoostM2”
|“GentleBoost”
|“LogitBoost”
|“LPBoost”
|“RobustBoost”
|“RUSBoost”
|“TotalBoost”
整体聚合方法,指定为逗号分隔组成的“方法”
以下值之一。
价值 | 方法 | 分类问题的支持金宝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”
- - - - - -集成学习的循环次数One hundred.
(默认)|正整数|“AllPredictorCombinations”
集成学习的循环次数,指定为逗号分隔组成的“NumLearningCycles”
和一个正整数“AllPredictorCombinations”
。
如果你指定一个正整数,那么,在每一个学习周期,软件火车弱学习者为每个模板对象之一学习者
。因此,软件培训NumLearningCycles *元素个数(学习者)
学习者。
如果您指定“AllPredictorCombinations”
,然后设置方法
来“子”
只指定一个学习者学习者
。使用这些设置,软件训练学习者的所有可能的组合预测NPredToSample
在一个时间。因此,软件培训nchoosek
(NPredToSample大小(X, 2))
学习者。
软件组成整体使用所有训练学习者和商店Mdl.Trained
。
更多细节,请参阅提示。
例子:“NumLearningCycles”, 500年
数据类型:单
|双
|字符
|字符串
“学习者”
- - - - - -弱的学习者在合奏中使用“判别”
|“资讯”
|“树”
|weak-learner模板对象|细胞weak-learner模板对象的向量弱的学习者使用的合奏,指定为逗号分隔组成的“学习者”
和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}
,在那里t1
和t2
分类树模板对象返回的templateTree
。
默认的“学习者”
值是“资讯”
如果“方法”
是“子”
。
默认的“学习者”
值是“树”
如果“方法”
是“包”
或任何提高的方法。的默认值templateTree ()
依赖的价值“方法”
。
袋装决策树、决策分歧(的最大数量“MaxNumSplits”
)是n - 1
,在那里n
是观测的数量。随机预测的数量来选择对于每个分裂(“NumVariablesToSample”
)是预测的数量的平方根。因此,fitcensemble
深决策树生长。你可以长浅树上降低模型复杂度和计算时间。
提高了决策树,“MaxNumSplits”
是10,“NumVariablesToSample”
是“所有”
。因此,fitcensemble
浅决策树生长。你能更深的树木生长的准确性。
看到templateTree
默认设置的弱的学习者。获得可重复的结果,你必须指定“复制”
名称-值对的观点templateTree
作为真正的
如果“NumVariablesToSample”
不是“所有”
。
学习者的数量来培训的详细信息,明白了NumLearningCycles
和提示。
例子:“学习者”,templateTree (MaxNumSplits, 5)
“NPrint”
- - - - - -打印输出频率“关闭”
(默认)|正整数打印输出频率,指定为逗号分隔组成的“NPrint”
和一个正整数“关闭”
。
跟踪的数量弱的学习者或折叠那fitcensemble
训练到目前为止,指定一个正整数。也就是说,如果您指定正整数米:
还没有指定任何交叉验证选项(例如,CrossVal
),然后fitcensemble
每次显示一条消息到命令行完成培训米弱的学习者。
和交叉验证选项fitcensemble
每次显示一条消息到命令行完成培训米折叠。
如果您指定“关闭”
,然后fitcensemble
当它完成时不显示消息训练薄弱的学习者。
提示
当训练一个大数据集上的许多薄弱的学习者,指定一个正整数NPrint
。
例子:“NPrint”, 5
数据类型:单
|双
|字符
|字符串
“NumBins”
- - - - - -箱数数值预测[]
(空的)(默认)|正整数标量数值预测的箱子数量,指定为逗号分隔组成的“NumBins”
和一个正整数标量。这个论点是有效的只有当fitcensemble
使用一个树的学习者,“学习者”
要么是“树”
或通过使用创建的模板对象templateTree
。
如果“NumBins”
值是空的(默认),则软件不本任何预测。
如果你指定“NumBins”
值作为一个正整数标量,那么软件箱子每个数值预测到指定数量的等概率的垃圾箱,然后树生长在本指数代替原始数据。
如果“NumBins”
价值超过数量(u)的惟一值预测fitcensemble
垃圾箱预测到u箱里。
fitcensemble
没有本分类预测。
当你使用大量的训练数据集,该面元选项加速训练但是会导致潜在的准确性下降。你可以试着“NumBins”, 50岁
首先,然后改变“NumBins”
价值取决于训练速度和准确性。
训练模型存储本的边缘BinEdges
财产。
例子:“NumBins”, 50岁
数据类型:单
|双
“CategoricalPredictors”
- - - - - -分类预测列表“所有”
分类预测列表,指定为逗号分隔组成的“CategoricalPredictors”
在这个表的一个值。
价值 | 描述 |
---|---|
向量的正整数 | 中的每个条目对应列向量索引值的预测数据(X 或资源描述 包含一个分类变量)。 |
逻辑向量 | 一个真正的 条目意味着预测数据的对应的列(X 或资源描述 )是一个分类变量。 |
字符矩阵 | 矩阵的每一行是一个预测变量的名字。名称必须匹配的条目PredictorNames 。垫的名字与额外的空格字符矩阵的每一行有相同的长度。 |
字符串数组或单元阵列的特征向量 | 数组中的每个元素是一个预测变量的名字。名称必须匹配的条目PredictorNames 。 |
“所有” |
所有预测都直言。 |
规范的“CategoricalPredictors”
是合适的,如果:
“学习者”
指定树学习者。
“学习者”
指定k最近的学习者,所有的预测都直言。
每个学习者识别,以同样的方式对待分类预测拟合函数对应于学习者。看到“CategoricalPredictors”
的fitcknn
为k最近的学习者和“CategoricalPredictors”
的fitctree
树的学习者。
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
“PredictorNames”
- - - - - -预测变量的名字预测变量名称,指定为逗号分隔组成的“PredictorNames”
和一个字符串数组独特的名称或单元阵列独特的特征向量。的功能“PredictorNames”
取决于你提供的训练数据的方式。
如果你提供X
和Y
,那么你可以使用“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”
和一个字符向量或字符串标量。
如果你提供Y
,那么你可以使用“ResponseName”
为响应变量指定一个名称。
如果你提供ResponseVarName
或公式
,那么你不能使用“ResponseName”
。
例子:“ResponseName”、“响应”
数据类型:字符
|字符串
“CVPartition”
- - - - - -交叉验证分区[]
(默认)|cvpartition
分区对象交叉验证分区,指定为逗号分隔组成的“CVPartition”
和一个cvpartition
分区创建的对象cvpartition
。分区对象指定了类型的交叉验证,训练集和验证集的索引。
创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition
,坚持
,KFold
,或Leaveout
。
例子:假设您创建一个随机的分区为5倍交叉验证500观察使用本量利= cvpartition(500年,“KFold”, 5)
。然后,您可以指定模型旨在通过使用“CVPartition”,本量利
。
“坚持”
- - - - - -为抵抗验证的数据分数的数据用于抵抗验证、指定为逗号分隔组成的“坚持”
和一个标量值的范围(0,1)。如果您指定‘坚持’,p
,那么软件完成以下步骤:
随机选择和储备p * 100
%的数据作为验证数据,并使用其余的数据训练模型。
在存储紧凑,训练模型训练有素的
旨在模型的属性。
创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition
,坚持
,KFold
,或Leaveout
。
例子:“坚持”,0.1
数据类型:双
|单
“KFold”
- - - - - -数量的折叠10
(默认)|值大于1的正整数折叠使用旨在模型,指定为逗号分隔组成的“KFold”
和一个正整数价值大于1。如果您指定KFold, k
,那么软件完成以下步骤:
随机数据分割成k
集。
对于每一个集合,储备作为验证数据集,使用其他和训练模型k
- 1集。
存储k
紧凑,训练模型的细胞k
1细胞向量训练有素的
旨在模型的属性。
创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition
,坚持
,KFold
,或Leaveout
。
例子:“KFold”, 5
数据类型:单
|双
“Leaveout”
- - - - - -分析交叉验证标志“关闭”
(默认)|“上”
分析交叉验证标志,指定为逗号分隔组成的“Leaveout”
和“上”
或“关闭”
。如果您指定“Leaveout”,“上”
那么,对于每个n观察(n是观测的数量扣除缺少观察,指定的吗NumObservations
模型的属性),软件完成以下步骤:
保留观察验证数据,使用其他火车模型n- 1的观察。
存储n紧凑,训练模型的细胞n1细胞向量训练有素的
旨在模型的属性。
创建一个旨在模型,您可以使用这四个名称-值对参数只有之一:CVPartition
,坚持
,KFold
,或Leaveout
。
例子:“Leaveout”,“上”
“类名”
- - - - - -类的名字用于培训类的名字用于培训,指定为逗号分隔组成的“类名”
和分类、字符或字符串数组,一个逻辑或数值向量,或单元阵列的特征向量。一会
必须具有相同的数据类型Y
。
如果一会
每个元素是一个字符数组,那么必须对应一个数组的行。
使用“类名”
:
在训练的类。
指定的任何输入或输出参数维度对应于类订单。例如,使用“类名”
指定的尺寸成本
或返回的列的顺序分类的分数预测
。
选择一个子集类的培训。例如,假设所有不同的类名称的集合Y
是{' a ', ' b ', ' c '}
。从类使用观察训练模型“一个”
和“c”
只是,指定“类名”,{' a ', ' c '}
。
的默认值一会
所有不同的类名称的集合在吗Y
。
例子:“类名”,{' b ', ' g '}
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
“成本”
- - - - - -误分类代价误分类代价,指定为逗号分隔组成的“成本”
和一个方阵或结构。如果你指定:
默认值是(
,在那里K
)- (K
)K
不同的类的数目。
请注意
fitcensemble
使用成本
调整前类中指定的概率之前
。然后,fitcensemble
使用培训和重置成本的调整先验概率矩阵对其违约。
例子:“成本”,[0 1 2;1 0 2;2 2 0)
数据类型:双
|单
|结构体
“之前”
- - - - - -先验概率“经验”
(默认)|“统一”
|数值向量|结构数组先验概率为每个类,指定为逗号分隔组成的“之前”
在这个表和一个值。
价值 | 描述 |
---|---|
“经验” |
类先验概率类相对频率Y 。 |
“统一” |
所有类先验概率等于1 /K,在那里K类的数量。 |
数值向量 | 每个元素都是一个类的先验概率。根据元素的顺序Mdl.ClassNames 或指定的顺序使用一会 名称-值对的论点。该软件可实现元素,这样他们总和1 。 |
结构数组 | 一个结构
|
fitcensemble
规范化的先验概率之前
总和为1。
例子:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)
数据类型:字符
|字符串
|双
|单
|结构体
“ScoreTransform”
- - - - - -分数转换“没有”
(默认)|“doublelogit”
|“invlogit”
|“ismax”
|分对数的
|函数处理|……分数变换,指定为逗号分隔组成的“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
“重量”
- - - - - -观察权重资源描述
“LearnRate”
- - - - - -学习速率的收缩1
(默认)|数字标量(0,1)学习速率的收缩,指定为逗号分隔两人组成的数字标量的间隔(0,1)。
训练一个使用收缩,集LearnRate
一个值小于1
例如,0.1
是一个受欢迎的选择。训练一个使用收缩学习需要更多的迭代,但往往达到更好的精度。
例子:“LearnRate”, 0.1
数据类型:单
|双
“LearnRate”
- - - - - -学习速率的收缩1
(默认)|数字标量(0,1)学习速率的收缩,指定为逗号分隔两人组成的数字标量的间隔(0,1)。
训练一个使用收缩,集LearnRate
一个值小于1
例如,0.1
是一个受欢迎的选择。训练一个使用收缩学习需要更多的迭代,但往往达到更好的精度。
例子:“LearnRate”, 0.1
数据类型:单
|双
“RatioToSmallest”
- - - - - -抽样比例对lowest-represented类抽样比例对lowest-represented类,指定为逗号分隔组成的“RatioToSmallest”
和积极的价值观与长度的数值标量或数值向量等于在训练数据不同的类的数目。
假设有K
训练数据和lowest-represented类中的类米
在训练数据的观察。
默认值是(
,它指定样本K
,1)米
观察每个类。
例子:‘RatioToSmallest’, (2, 1)
数据类型:单
|双
“MarginPrecision”
- - - - - -边缘精度控制收敛速度0.1
(默认)|在[0,1]数字标量边缘精度控制收敛速度,指定为逗号分隔组成的“MarginPrecision”
和一个数字区间[0,1]中的标量。MarginPrecision
影响提高迭代收敛所需的数量。
提示
训练一个使用许多学习者,指定一个小值MarginPrecision
。使用一些学习者培训,指定一个较大的值。
例子:“MarginPrecision”, 0.5
数据类型:单
|双
“RobustErrorGoal”
- - - - - -目标分类错误0.1
(默认)|非负数字标量目标分类错误,指定为逗号分隔组成的“RobustErrorGoal”
和一个非负数字标量。的上限可能值取决于的值RobustMarginSigma
和RobustMaxMargin
。然而,上限不能超过1
。
提示
对于一个特定的训练集,通常有一个最佳的范围RobustErrorGoal
。如果你设置过低或过高,那么软件可以生成一个模型分类精度较差。交叉验证图谱尝试寻找适当的值。
例子:“RobustErrorGoal”, 0.05
数据类型:单
|双
“RobustMarginSigma”
- - - - - -分类边缘分布扩散0.1
(默认)|积极的数字标量训练数据分类边缘分布扩散,指定为逗号分隔组成的“RobustMarginSigma”
和积极的数字标量。在指定RobustMarginSigma
,查阅文献RobustBoost
例如,[19]。
例子:“RobustMarginSigma”, 0.5
数据类型:单
|双
“RobustMaxMargin”
- - - - - -最大分类保证金0
(默认)|非负数字标量最大分类保证金在训练数据,指定为逗号分隔组成的“RobustMaxMargin”
和一个非负数字标量。软件的数量降至最低,观察在训练数据分类下面的利润率RobustMaxMargin
。
例子:“RobustMaxMargin”, 1
数据类型:单
|双
“NPredToSample”
- - - - - -样本数量的预测1
(默认)|正整数样本的预测数量为每个随机子空间学习者,指定为逗号分隔组成的“NPredToSample”
和一个正整数区间1,…,p,在那里p预测变量的数量(大小(X, 2)
或大小(台,2)
)。
数据类型:单
|双
“OptimizeHyperparameters”
- - - - - -参数优化“没有”
(默认)|“汽车”
|“所有”
|字符串数组或单元阵列的参数名的资格|向量的optimizableVariable
对象参数优化,指定为逗号分隔组成的“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”
- - - - - -选择优化为优化选项,指定为逗号分隔组成的“HyperparameterOptimizationOptions”
和结构。这个参数修改的影响OptimizeHyperparameters
名称-值对的论点。所有字段的结构是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
他们的名字包括采集功能 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
最大数量的目标函数的评价。 | 30. 为“bayesopt” 或“randomsearch” ,整个电网“gridsearch” |
MaxTime |
时间限制,指定为一个积极的现实。时间限制在几秒钟内,作为衡量 |
正 |
NumGridDivisions |
为“gridsearch” 在每个维度的数量值。正整数的值可以是一个向量给每个尺寸的数量值,或一个标量,适用于所有尺寸。这个领域被忽略为分类变量。 |
10 |
ShowPlots |
逻辑值指示是否显示情节。如果真正的 ,这个领域最好的目标函数值与迭代数。如果有一个或两个优化参数,如果优化器 是“bayesopt” ,然后ShowPlots 还阴谋的模型目标函数的参数。 |
真正的 |
SaveIntermediateResults |
逻辑值指示是否保存结果优化器 是“bayesopt” 。如果真正的 ,这个领域覆盖一个工作区变量命名“BayesoptResults” 在每一个迭代。变量是一个BayesianOptimization 对象。 |
假 |
详细的 |
显示命令行。
详情,请参阅 |
1 |
UseParallel |
逻辑值,指出是否贝叶斯优化并行运行,这就需要并行计算工具箱™。由于nonreproducibility平行的时机,平行贝叶斯优化不一定产生可重复的结果。有关详细信息,请参见平行的贝叶斯优化。 | 假 |
重新分区 |
逻辑值指示是否重新分配在每个迭代交叉验证。如果
|
假 |
使用不超过以下三个字段名称之一。 | ||
CVPartition |
一个cvpartition 创建的对象cvpartition 。 |
“Kfold”, 5 如果你不指定任何交叉验证字段 |
坚持 |
一个标量范围(0,1) 代表抵抗分数。 |
|
Kfold |
一个大于1的整数。 |
例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)
数据类型:结构体
Mdl
——合奏训练分类模型ClassificationBaggedEnsemble
模型对象|ClassificationEnsemble
模型对象|ClassificationPartitionedEnsemble
旨在模型对象训练有素的整体模型,作为一个模型对象的表返回。
模型对象 | 指定任何交叉验证选择吗? | 方法 设置 |
重新取样 设置 |
---|---|---|---|
ClassificationBaggedEnsemble |
没有 | “包” |
“上” |
ClassificationEnsemble |
没有 | 任何合奏聚合方法分类 | “关闭” |
ClassificationPartitionedEnsemble |
是的 | 任何合奏聚合方法分类 | “关闭” 或“上” |
控制交叉验证的参数名称-值对CrossVal
,坚持
,KFold
,Leaveout
,CVPartition
。
引用的属性Mdl
,使用点符号。例如,访问或显示细胞弱学习者模型对象的向量,没有旨在,回车Mdl.Trained
在命令行中。
NumLearningCycles
可以从几十到几千不等。通常,一个具有良好的预测能力需要从几百到几千弱的学习者。然而,你不需要训练一次为一个周期。您可以首先增长几十个学生,检查整体性能,然后,如果必要的话,火车更弱的学习者使用的简历
分类问题。
整体性能取决于合奏和薄弱的学习者的设置。也就是说,如果你指定弱学习者使用默认参数,那么整体表现不佳。因此,像合奏的设置,是一种很好的做法,薄弱的学习者使用模板的参数调整,并选择最小化泛化误差的值。
如果整体聚合方法(方法
)是“包”
和:
误分类代价(成本
)是高度不平衡,然后,在袋子样品,软件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页。
执行并行hyperparameter优化,使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
名称-值对参数在调用这个函数。
平行hyperparameter优化的更多信息,请参阅平行的贝叶斯优化。
关于并行计算的更一般的信息,请参阅MATLAB函数自动并行支持运行金宝app(并行计算工具箱)。
ClassificationBaggedEnsemble
|ClassificationEnsemble
|ClassificationPartitionedEnsemble
|预测
|templateDiscriminant
|templateKNN
|templateTree
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。