适合学习者的整体分类
返回经过训练的分类集成模型对象(Mdl
= fitcensemble (资源描述
,ResponseVarName
)Mdl
),其中包含了提升100棵分类树的结果,以及表中的预测器和响应数据资源描述
.ResponseVarName
响应变量的名称是否在资源描述
.默认情况下,fitcensemble
使用LogitBoost进行二进制分类,使用AdaBoostM2进行多类分类。
使用数据中所有可用的预测变量创建预测分类集合。然后,用较少的预测因子训练另一个集合。比较集合的样本内预测精度。
加载census1994
数据集。
负载census1994
使用整个数据集和默认选项训练分类模型的集合。
Mdl1 = fitcensemble(adultdata,“工资”)
Mdl1 = ClassificationEnsemble PredictorNames: {1x14 cell} ResponseName: 'salary' CategoricalPredictors: [2 4 6 7 8 9 10 14] ClassNames: [<=50K >50K] ScoreTransform: 'none' NumObservations: 32561 numtraining: 100 Method: 'LogitBoost' LearnerNames: {'Tree'} reasonforterminate: '完成所要求的训练周期数后正常终止。'FitInfo: [100x1 double] FitInfoDescription: {2x1 cell}属性,方法
Mdl
是一个ClassificationEnsemble
模型。的一些显著特征Mdl
是:
因为数据中表示了两个类,所以LogitBoost是集成聚合算法。
由于集成聚合方法是一种增强算法,因此允许最多10次分割的分类树组成集成。
一百棵树组成了这个乐团。
使用分类集合从数据中预测一个由五个观测值组成的随机集合的标签。将预测的标签值与真实值进行比较。
rng (1)%用于重现性[pX,pIdx] = datasample(adultdata,5);label = predict(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,“工资~年龄+学历”);
比较两者之间的替代损失Mdl1
而且Mdl2
.
rsLoss1 = resubLoss(Mdl1)
rsLoss1 = 0.1058
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 0.2037
对于使用所有预测因子的集合,样本内误分类率较低。
训练增强分类树的集合fitcensemble
.可以减少培训时间“NumBins”
名称-值对参数到bin数值预测器。这个论点只有在fitcensemble
使用树学习器。训练之后,您可以使用BinEdges
训练模型的性质和离散化
函数。
生成一个示例数据集。
rng (“默认”)%用于重现性N = 1e6;X = [mvnrnd([-1 -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
为二进制分类的默认值)。为比较目的对函数进行计时。
tic Mdl1 = fitcensemble(X,y);toc
运行时间为478.988422秒。
加速训练使用“NumBins”
名称-值对参数。如果指定“NumBins”
值作为正整数标量,那么软件将每个数字预测器分类到指定数量的等概率分类中,然后在分类索引上生长树,而不是原始数据。该软件没有分类预测器。
fitcensemble(X,y,“NumBins”, 50);toc
运行时间为165.598434秒。
当使用分组数据而不是原始数据时,该过程大约快三倍。注意,运行时间可能因操作系统而异。
用替换法比较分类误差。
rsLoss1 = resubLoss(Mdl1)
rsLoss1 = 0.0788
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 0.0788
在本例中,对预测器值进行分组可以在不损失准确性的情况下减少训练时间。一般来说,当您拥有像本例中这样的大型数据集时,使用分箱选项可以加快训练速度,但可能会降低准确性。如果您想进一步减少训练时间,请指定更少的容器数量。
方法重新生成归档的预测器数据BinEdges
训练模型的性质和离散化
函数。
X = Mdl2.X;%预测数据Xbinned = 0 (size(X));边= Mdl2.BinEdges;查找已装箱预测器的索引。idxNumeric = find(~cellfun(@isempty,edges));如果iscolumn(idxNumeric) idxNumeric = idxNumeric';结束为j = idxNumeric x = x (:,j);如果x是表,则将x转换为数组。如果稳定(x) x = table2array(x);结束使用离散化函数将x分组到箱子中。Xbinned =离散(x,[-inf;边缘{};正]);Xbinned(:,j) = Xbinned;结束
Xbinned
包含数值预测器的bin索引,范围从1到bin的数量。Xbinned
值是0
对于直言预测器。如果X
包含南
S,那么对应的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
默认情况下返回泛化错误。然而,绘制累积损失可以让您监控损失是如何随着弱学习者在集成中积累而变化的。
在累积了约50个弱学习者后,该集成达到了0.06左右的误分类率。然后,随着较弱学习者的加入,误分类率略有增加。
如果您对集合的泛化误差满意,那么,为了创建预测模型,使用除交叉验证之外的所有设置再次训练集合。但是,调优超参数是一种很好的实践,比如每棵树的最大决策分割次数和学习周期的数量。
自动优化超参数使用fitcensemble
.
加载电离层
数据集。
负载电离层
通过使用自动超参数优化,您可以找到最小化五倍交叉验证损失的超参数。
Mdl = fitcensemble(X,Y,“OptimizeHyperparameters”,“汽车”)
在本例中,为了再现性,设置随机种子并使用“expected-improvement-plus”
采集功能。此外,对于随机森林算法的再现性,指定“复制”
名称-值对参数as真正的
针对树形学习者。
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 | 2.8201 | 0.10256 | 0.10256 |RUSBoost | 11 | 0.010199 | 17 | | 2 |最好| 0.082621 | 6.3089 | 0.082621 | 0.083414 | LogitBoost | 206 | 0.96537 | 33 | | 3 |接受| 0.099715 | 4.0004 | 0.082621 | 0.082624 | AdaBoostM1 | 130 | 0.0072814 | 2 | | 4 |的| 0.068376 | 1.5887 | 0.068376 | 0.068395 | 25袋| | - | 5 | | 5 |的| 0.059829 | 1.7618 | 0.059829 | 0.062829 | LogitBoost 58 | | 0.19016 | 5 | | 6 |接受| 0.068376 | 1.6662 | 0.059829 | 0.065561 | LogitBoost 58 | | 0.10005 | 5 | | | 7日接受| 0.088319 | 13.07 |0.059829 | 0.065786 | LogitBoost | 494 | 0.014474 | 3 | | |接受8 | 0.065527 | 0.79673 | 0.059829 | 0.065894 | LogitBoost | 26 | 0.75515 | 8 | | | 9日接受| 0.15385 | 0.93354 | 0.059829 | 0.061156 | LogitBoost 59 32 | 0.0010037 | | | | | 10接受| 0.059829 | 3.8828 | 0.059829 | 0.059731 | LogitBoost | 143 | 0.44428 | 1 | | | 11日接受| 0.35897 | 2.3272 | 0.059829 | 0.059826 | 54袋| | | 175 | | 12 |接受| 0.068376 | 0.53634 | 0.059829 | 0.059825 | 10袋| | - | 1 | | | | 13日接受0.12251 | 9.5155 | 0.059829 | 0.059826 | AdaBoostM1 | 442 | 0.57897 | 102 | | 14 | Accept | 0.11966 | 4.9323 | 0.059829 | 0.059827 | RUSBoost | 95 | 0.80822 | 1 | | 15 | Accept | 0.062678 | 4.2429 | 0.059829 | 0.059826 | GentleBoost | 156 | 0.99502 | 1 | | 16 | Accept | 0.065527 | 3.0688 | 0.059829 | 0.059824 | GentleBoost | 115 | 0.99693 | 13 | | 17 | Best | 0.05698 | 1.659 | 0.05698 | 0.056997 | GentleBoost | 60 | 0.0010045 | 3 | | 18 | Accept | 0.13675 | 2.0647 | 0.05698 | 0.057002 | GentleBoost | 86 | 0.0010263 | 108 | | 19 | Accept | 0.062678 | 2.4037 | 0.05698 | 0.05703 | GentleBoost | 88 | 0.6344 | 4 | | 20 | Accept | 0.065527 | 1.029 | 0.05698 | 0.057228 | GentleBoost | 35 | 0.0010155 | 1 | |===================================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | ycles | | | |===================================================================================================================================| | 21 | Accept | 0.079772 | 0.44308 | 0.05698 | 0.057214 | LogitBoost | 11 | 0.9796 | 2 | | 22 | Accept | 0.065527 | 21.191 | 0.05698 | 0.057523 | Bag | 499 | - | 1 | | 23 | Accept | 0.068376 | 20.294 | 0.05698 | 0.057671 | Bag | 494 | - | 2 | | 24 | Accept | 0.64103 | 1.2793 | 0.05698 | 0.057468 | RUSBoost | 30 | 0.088421 | 174 | | 25 | Accept | 0.088319 | 0.53606 | 0.05698 | 0.057456 | RUSBoost | 10 | 0.010292 | 5 | | 26 | Accept | 0.074074 | 0.36802 | 0.05698 | 0.05753 | AdaBoostM1 | 11 | 0.14192 | 13 | | 27 | Accept | 0.099715 | 12.133 | 0.05698 | 0.057646 | AdaBoostM1 | 498 | 0.0010096 | 6 | | 28 | Accept | 0.079772 | 10.877 | 0.05698 | 0.057886 | AdaBoostM1 | 474 | 0.030547 | 31 | | 29 | Accept | 0.068376 | 12.326 | 0.05698 | 0.061326 | GentleBoost | 493 | 0.36142 | 2 | | 30 | Accept | 0.065527 | 0.3945 | 0.05698 | 0.061165 | LogitBoost | 11 | 0.71408 | 16 |
__________________________________________________________ 优化完成。最大目标:达到30。总函数评估:30总运行时间:165.9329秒总目标函数评估时间:148.4504最佳观测可行点:Method NumLearningCycles LearnRate MinLeafSize ___________ _________________ _________ ___________ GentleBoost 60 0.0010045 3观测目标函数值= 0.05698估计目标函数值= 0.061165函数评估时间= 1.659最佳估计可行点(根据模型):方法NumLearningCycles LearnRate MinLeafSize ___________ _________________ _________ ___________ anonymboost 60 0.0010045 3估计目标函数值= 0.061165估计函数评估时间= 1.6503
Mdl = ClassificationEnsemble ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1×1 BayesianOptimization] numtrainationresults: 60 Method: 'GentleBoost' LearnerNames: {'Tree'} reasonforterminated: '完成所请求的训练周期数后正常终止。'FitInfo: [60×1 double] FitInfoDescription: {2×1 cell}属性,方法
优化搜索了二元分类的集成聚合方法,结束NumLearningCycles
,越过LearnRate
对于适用的方法,和过树的学习者MinLeafSize
.输出是估计交叉验证损失最小的集成分类器。
创建具有令人满意预测性能的增强分类树集合的一种方法是使用交叉验证调整决策树的复杂性级别。在寻找最优的复杂度水平时,调整学习率以使学习周期的数量最小化。
此示例通过使用交叉验证选项手动查找最佳参数“KFold”
名称-值对参数)和kfoldLoss
函数。或者,您也可以使用“OptimizeHyperparameters”
名称-值对参数自动优化超参数。看到优化分类集成.
加载电离层
数据集。
负载电离层
搜索最优的树复杂度级别:
交叉验证一组集成。将后续集成从决策残桩(一次分裂)到最多的树复杂度水平指数级增加n- 1次。n是样本容量。另外,将每个集成的学习率变化在0.1到1之间。
估计每个集合的交叉验证误分类率。
对于树的复杂度级别 , ,通过绘制集合与学习周期数量的关系,比较集合的累积的交叉验证误分类率。在同一幅图上分别绘制每种学习率的曲线。
选择误分类率最小的曲线,记下相应的学习周期和学习率。
交叉验证深度分类树和树桩。这些分类树作为基准。
rng (1)%用于重现性MdlDeep = fitctree(X,Y,“CrossVal”,“上”,“MergeLeaves”,“关闭”,...“MinParentSize”1);MdlStump = fitctree(X,Y,“MaxNumSplits”,1,“CrossVal”,“上”);
使用5倍交叉验证对150个增强分类树集合进行交叉验证。使用树模板,使用序列中的值改变最大分割数 .米是这样的 并不比n- 1。对于每个变量,使用集合{0.1,0.25,0.5,1}中的每个值调整学习率;
n = size(X,1);M = floor(log(n - 1)/log(3));learnRate = [0.1 0.25 0.5 1];numLR = numel(learnRate);maxnumslices = 3.^(0:m);numMNS = numel(maxnumfragments);numTrees = 150;Mdl = cell(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(kflAll,Mdl,“统一”、假);error =重整(cell2mat(errorCell),[numTrees numel(maxnumslices) numel(learnRate)]);errorDeep = kfoldLoss(MdlDeep);errorStump = kfoldLoss(MdlStump);
绘制交叉验证的误分类率是如何随着集合中树的数量的增加而变化的。在同一地块上绘制关于学习率的曲线,并为不同的树复杂度水平绘制单独的地块。选择要绘制的树复杂度级别的子集。
mnsPlot = [1 round(numel(maxnumfragments)/2) numel(maxnumfragments)];数字为k = 1:3次要情节(2 2 k)情节(挤压(错误(:,mnsPlot (k):)),“线宽”2)轴紧持有在H = gca;情节(h。XLim,[errorDeep errorDeep],“。b”,“线宽”, 2)情节(h。XLim,[errorStump errorStump],“r”,“线宽”2)图(h.XLim min(最低(错误(:,mnsPlot (k):)))。* [1],“——k”h.YLim = [0 0.2];包含(“树的数量”) ylabel (“旨在misclass。率的)标题(sprintf (' maxnumslices = %0.3g', maxnumsplitting (mnsPlot(k)))) hold .从结束hL = legend([cellstr(num2str(learnRate',“学习率= %0.2f”));...“深树”;“树桩”;“分钟misclass。率的]);hL.Position(1) = 0.6;
每条曲线都包含一个最小的交叉验证误分类率,发生在集合中树的最优数量。
确定最大的分裂数,树的数量,以及产生最低的误分类率的学习率。
[minErr,minErrIdxLin] = min(错误(:));[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);流(“\ nMin。misclass。速率= %0.5f'minErr)
分钟misclass。速率= 0.05128
流('\ nooptimal参数值:\nNum. '树= %d', idxNumTrees);
最佳参数值:Num. Trees = 130
流('\ nmaxnumpartitions = %d\nLearning Rate = %0.2f\n',...maxNumSplits (idxMNS) learnRate (idxLR))
maxnumsegments = 9学习率= 1.00
基于最优超参数和整个训练集创建一个预测集合。
tFinal = templateTree(“MaxNumSplits”maxNumSplits (idxMNS));MdlFinal = fitcensemble(X,Y,“NumLearningCycles”idxNumTrees,...“学习者”tFinal,“LearnRate”learnRate (idxLR))
MdlFinal = ClassificationEnsemble ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 numtraining: 130 Method: 'LogitBoost' LearnerNames: {'Tree'} reasonforterminate: '完成所请求的训练周期数后正常终止。'FitInfo: [130×1 double] FitInfoDescription: {2×1 cell}属性,方法
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.094017 | 3.7194 | 0.094017 | 0.094017 | 137 | 0.001364 | 3 | | 2 | |0.12251 | 0.66511 | 0.094017 | 0.095735 | 15 | 0.013089 | 144 |
最好| 3 | | 0.065527 | 0.90035 | 0.065527 | 0.067815 | 31日| 0.47201 | 2 | | 4 |接受| 0.19943 | 8.6107 | 0.065527 | 0.070015 | 340 | 0.92167 | 7 | | 5 |接受| 0.071225 | 0.90081 | 0.065527 | 0.065583 | 32 | 0.14422 | 2 | | 6 |接受| 0.099715 | 0.688 | 0.065527 | 0.065573 | 23 | 0.0010566 | 2 | | | 7日接受| 0.11681 | 0.90799 | 0.065527 | 0.065565 | 28 | 0.0010156 | 259 | | 8 |接受| 0.17379 | 0.82143 | 0.065527 | 0.065559 | 29日| 0.0013435 | 1 | | 9最好| | 0.059829 | 0.59677 |18 | 0.059829 | 0.059844 | 0.87865 | 3 | | |接受10 | 0.11111 | 0.40132 | 0.059829 | 0.059843 | 10 | 0.0012112 | 48 | | | 11日接受| 0.08547 | 0.41121 | 0.059829 | 0.059842 | 10 | 0.62108 | 25 | | | 12日接受| 0.11681 | 0.41538 | 0.059829 | 0.059841 | 10 | 0.0012154 | 20 | | | 13日接受| 0.082621 | 0.46504 | 0.059829 | 0.059842 | 10 | 0.55351 | 35 | | | 14日接受| 0.079772 | 0.46297 | 0.059829 | 0.05984 | 11 | 0.74109 | 74 | | 15 |接受| 0.088319 | 0.69297 | 0.059829 | 0.05984 | |16 | 0.91106 | 347 | |接受| 0.062678 | 0.3637 | 0.059829 | 0.059886 | 10 | 0.97239 | 3 | | | 17日接受| 0.065527 | 1.9404 | 0.059829 | 0.059887 | 78 | 0.97069 | 3 | | | 18日接受| 0.065527 | 0.39816 | 0.059829 | 0.062228 | 11 | 0.75051 | 2 | |最好19 | | 0.054131 | 0.36381 | 0.054131 | 0.059083 | 10 | 0.69072 | 3 | | 20 |接受| 0.065527 | 0.38429 | 0.054131 | 0.060938 | 10 | 0.64403 | 3 ||====================================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | |结果| | |运行时(观察)| (estim) |永昌龙 | | | |====================================================================================================================| | 21日|接受| 0.079772 | 0.40405 | 0.054131 | 0.060161 | 10 | 0.80548 | 13 | | | | 22日接受10 | 0.05698 | 0.37983 | 0.054131 | 0.059658 | 0.56949 | 5 | | | 23日接受| 0.10826 | 0.36128 | 0.054131 | 0.059244 | 10 | 0.0055133 | 5 | | | 24日接受| 0.074074 | 0.38056 | 0.054131 | 0.05933 | 10 | 0.92056 | 6 | | | 25日接受| 0.11966 | 0.35336 | 0.054131 | 0.059132 | 10 | 0.27254 | 1 | | | 26日接受| 0.065527 | 0.77041 | 0.054131 | 0.059859 | 26 | 0.97412 | 3 | | | 27日接受| 0.068376 | 0.38116 | 0.054131 | 0.060205 | 10 | 0.82146 | 4 | | | 28日接受| 0.062678 | 0.47015 | 0.054131 |0.060713 | 14 | 0.99445 | 3 | | 29 |接受| 0.11966 | 0.41033 | 0.054131 | 0.060826 | 10 | 0.0012621 | 344 | | 30 |接受| 0.08547 | 0.45352 | 0.054131 | 0.060771 | 10 | 0.93676 | 187 |
__________________________________________________________ 优化完成。最大目标:达到30。总函数评估:30总运行时间:41.5854秒总目标函数评估时间:28.4744最佳观测可行点:NumLearningCycles LearnRate maxnum分裂_________________ _________ ____________ 10 0.69072 3观测目标函数值= 0.054131估计目标函数值= 0.061741函数评估时间= 0.36381最佳估计可行点(根据模型):NumLearningCycles LearnRate maxnumfragments _________________ _________ ____________ 14 0.99445 3估计的目标函数值= 0.060771估计的函数评估时间= 0.48009
mdl = ClassificationEnsemble ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1×1 BayesianOptimization] numtrainationresults: 14 Method: 'LogitBoost' LearnerNames: {'Tree'} reasonforterminated: '完成所请求的训练周期数后正常终止。'FitInfo: [14×1 double] FitInfoDescription: {2×1 cell}属性,方法
资源描述
- - - - - -样本数据用于训练模型的样例数据,指定为表。每一行资源描述
对应一个观察结果,每一列对应一个预测变量。资源描述
可以为响应变量包含一个附加列。不允许多列变量和字符向量的单元格数组以外的单元格数组。
如果资源描述
包含响应变量,并且希望使用所有剩余变量作为预测器,然后使用指定响应变量ResponseVarName
.
如果资源描述
包含响应变量,如果您希望仅使用剩余变量的子集作为预测器,则使用指定公式公式
.
如果资源描述
不包含响应变量,则使用Y
.响应变量的长度和的行数资源描述
必须是平等的。
请注意
为了节省内存和执行时间,提供X
而且Y
而不是资源描述
.
数据类型:表格
ResponseVarName
- - - - - -响应变量名资源描述
公式
- - - - - -响应变量和预测变量子集的解释模型响应变量和预测变量子集的解释模型,在形式中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式中,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件将不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须是资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以进行验证资源描述
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
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”
集合聚合方法,指定为逗号分隔的对,由“方法”
和以下值之一。
价值 | 方法 | 分类问题支持万博1manbetx | 相关的名称-值对参数 |
---|---|---|---|
“包” |
引导聚合(装袋,例如,随机森林)[2]) -如果“方法” 是“包” ,然后fitcensemble 默认情况下,在每次分割(随机森林)时使用随机预测器选择的装袋。要使用没有随机选择的袋装,使用树学习器“NumVariablesToSample” 值是“所有” 或者使用鉴别分析学习者。 |
二进制和多类 | N/A |
“子” |
随机子空间 | 二进制和多类 | NPredToSample |
“AdaBoostM1” |
自适应增强 | 二只 | LearnRate |
“AdaBoostM2” |
自适应增强 | 多级只 | LearnRate |
“GentleBoost” |
温和的自适应增强 | 二只 | LearnRate |
“LogitBoost” |
自适应逻辑回归 | 二只 | LearnRate |
“LPBoost” |
线性编程增强-需要优化工具箱™ | 二进制和多类 | MarginPrecision |
“RobustBoost” |
健壮的增强-需要优化工具箱 | 二只 | RobustErrorGoal ,RobustMarginSigma ,RobustMaxMargin |
“RUSBoost” |
随机欠采样增强 | 二进制和多类 | LearnRate ,RatioToSmallest |
“TotalBoost” |
完全纠正提升-需要优化工具箱 | 二进制和多类 | MarginPrecision |
您可以指定抽样选项(FResample
,取代
,重新取样
)的训练数据,当你使用bagging (“包”
)或提升(“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。训练有素的
.
有关更多细节,请参见提示.
例子:“NumLearningCycles”,500年
数据类型:单
|双
|字符
|字符串
学习者
- - - - - -较弱的学习者不能在合奏中使用“判别”
|“资讯”
|“树”
|弱学习者模板对象|弱学习器模板对象的单元向量弱学习者使用的集合,指定为逗号分隔的对组成“学习者”
和弱学习者名称,弱学习者模板对象,或弱学习者模板对象的单元向量。
弱的学习者 | Weak-Learner名字 | 创建模板对象命令功能 | 方法 设置 |
---|---|---|---|
判别分析 | “判别” |
templateDiscriminant |
推荐给“子” |
k最近的邻居 | “资讯” |
templateKNN |
为“子” 只有 |
决策树 | “树” |
templateTree |
除所有方法外“子” |
弱学习者名(“判别”
,“资讯”
,或“树”
) - - -fitcensemble
使用模板对象创建函数在默认设置下创建的弱学习者。例如,指定“学习者”,“判别”
是否与指定相同“学习者”,templateDiscriminant ()
.弱学习者的默认设置请参见模板对象创建函数页面。
弱学习者模板对象-fitcensemble
使用弱学习者创建的模板对象创建函数。使用模板对象创建函数的名值对参数指定弱学习器的设置。
细胞载体米弱学习者模板对象-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
设置为默认值“关闭”
.此提示在分类时保持不变方法
是“AdaBoostM1”
,“AdaBoostM2”
,“GentleBoost”
,或“LogitBoost”
,或回归时方法
是“LSBoost”
.
例子:“NPrint”,5
数据类型:单
|双
|字符
|字符串
NumBins
- - - - - -数值预测器的箱数[]
(空的)(默认)|正整数标量数值预测器的箱数,指定为逗号分隔的对,由“NumBins”
和一个正整数标量。这个论点只有在fitcensemble
使用树形学习器,即,“学习者”
要么是“树”
或使用创建的模板对象templateTree
.
如果“NumBins”
Value为空(默认值)fitcensemble
不丢弃任何预测器。
如果指定“NumBins”
值作为正整数标量(numBins
),然后fitcensemble
最多将每个数字预测器分类numBins
等概率箱子,然后在箱子指数上生长树,而不是原始数据。
箱子的数量可以小于numBins
如果预测因子小于numBins
独特的价值观。
fitcensemble
不丢弃绝对预测器。
当您使用大型训练数据集时,此分箱选项会加速训练,但可能会导致潜在的准确性下降。你可以试试“NumBins”,50岁
首先,然后根据准确率和训练速度改变值。
经过训练的模型将桶边存储在BinEdges
财产。
例子:“NumBins”,50岁
数据类型:单
|双
CategoricalPredictors
- - - - - -分类预测器列表“所有”
类别预测器列表,指定为此表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个索引值,指示对应的预测器是分类的。索引值在1和之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。中的条目名称必须匹配PredictorNames .用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。中的条目名称必须匹配PredictorNames . |
“所有” |
所有的预测都是绝对的。 |
规范的“CategoricalPredictors”
适合以下情况:
“学习者”
指定树学习器。
“学习者”
指定k-最接近的学习者,所有的预测器都是绝对的。
每个学习者都以与学习者对应的拟合函数相同的方式识别和处理范畴预测器。看到“CategoricalPredictors”
的fitcknn
为k-最近的学习者和“CategoricalPredictors”
的fitctree
针对树形学习者。
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
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”
(默认)|特征向量|字符串标量响应变量名,指定为字符向量或字符串标量。
如果你提供Y
,然后你可以使用ResponseName
为响应变量指定名称。
如果你提供ResponseVarName
或公式
,那么你就不能使用ResponseName
.
例子:“ResponseName”、“反应”
数据类型:字符
|字符串
选项
- - - - - -并行计算和设置随机数的选项用于并行计算和设置作为结构指定的随机数的选项。创建选项
结构statset
.
请注意
您需要并行计算工具箱™进行并行计算。
该表列出了选项字段及其值。
字段名 | 价值 | 默认的 |
---|---|---|
UseParallel |
将此值设置为 |
假 |
UseSubstreams |
将此值设置为 要重复计算,设置 |
假 |
流 |
将此值指定为RandStream 对象或此类对象的单元格数组。使用单个对象时除外UseParallel 值是真正的 和UseSubstreams 值是假 .在这种情况下,使用与并行池大小相同的单元格数组。 |
如果不指定流 ,然后fitcensemble 使用默认流或多个流。 |
有关使用可重复并行训练的示例,请参见列车分类并行集成.
对于双核及以上系统,fitcensemble
使用Intel并行化训练®线程构建块(TBB)。因此,指定UseParallel
选择真正的
可能不能在一台计算机上提供显著的加速。有关Intel TBB的详细信息,请参见https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html.
例子:“选项”,statset (UseParallel,真的)
数据类型:结构体
CVPartition
- - - - - -交叉验证分区[]
(默认)|cvpartition
分区对象交叉验证分区,指定为cvpartition
创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证cvp = cvpartition(500,'KFold',5)
.然后,您可以使用指定交叉验证的模型“CVPartition”,本量利
.
坚持
- - - - - -保留验证的部分数据用于抵制验证的数据的一部分,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p
,然后软件完成以下步骤:
随机选择和保留p * 100
%的数据作为验证数据,并使用其余的数据训练模型。
存储紧凑的,训练过的模型训练有素的
属性的交叉验证模型。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“坚持”,0.1
数据类型:双
|单
KFold
- - - - - -折叠数10
(默认)|大于1的正整数交叉验证模型中使用的折叠数,指定为大于1的正整数。如果你指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为k
集。
对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型k
- 1集。
存储k
紧凑,训练有素的模型k
中的-by-1单元格向量训练有素的
属性的交叉验证模型。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“KFold”,5
数据类型:单
|双
Leaveout
- - - - - -保留一个交叉验证标志“关闭”
(默认)|“上”
保留一个交叉验证标志,指定为“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,那么对于每一个n观察(n是否指定了观察数(不包括遗漏的观察数)NumObservations
属性),软件完成以下步骤:
保留一个观察结果作为验证数据,并使用另一个来训练模型n- 1次观察。
存储n紧凑,训练有素的模型n中的-by-1单元格向量训练有素的
属性的交叉验证模型。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
一会
- - - - - -用于培训的类的名称用于训练的类的名称,指定为类别、字符或字符串数组;逻辑向量:逻辑或数字向量;或者字符向量的单元格数组。一会
必须具有与响应变量相同的数据类型资源描述
或Y
.
如果一会
是字符数组,则每个元素必须对应于数组的一行。
使用一会
:
在培训期间指定类的顺序。
指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用一会
指定…尺寸的顺序成本
返回的分类分数的列顺序预测
.
选择培训类的一个子集。例如,假设所有不同的类名的集合Y
是(“a”、“b”、“c”)
.使用类的观察来训练模型“一个”
而且“c”
只是,指定“类名”,(“a”、“c”)
.
的默认值。一会
响应变量中所有不同的类名的集合是否在资源描述
或Y
.
例子:“类名”,(“b”,“g”)
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
成本
- - - - - -误分类代价错误分类代价,指定为逗号分隔的对组成“成本”
和一个方阵或结构。如果你指定:
默认为(
,在那里K
) -眼睛(K
)K
是不同类的数量。
请注意
fitcensemble
使用成本
调整中指定的先验类概率之前
.然后,fitcensemble
使用调整后的先验概率进行训练,并将代价矩阵重置为默认值。
例子:'Cost',[0 1 2;10 0 2;2 2 0]
数据类型:双
|单
|结构体
之前
- - - - - -先验概率“经验”
(默认)|“统一”
|数值向量|结构数组每个类的先验概率,指定为逗号分隔的对,由“之前”
和这个表中的一个值。
价值 | 描述 |
---|---|
“经验” |
类的先验概率是类的相对频率Y . |
“统一” |
所有类的先验概率都等于1/K,在那里K是类的数量。 |
数值向量 | 每个元素都是一个类先验概率。对元素进行排序Mdl。一会 方法指定顺序一会 名称-值对参数。该软件将元素规范化,使它们的和为1 . |
结构数组 | 一个结构
|
fitcensemble
的先验概率归一化之前
加起来等于1
例子:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)
数据类型:字符
|字符串
|双
|单
|结构体
ScoreTransform
- - - - - -分数转换“没有”
(默认)|“doublelogit”
|“invlogit”
|“ismax”
|“分对数”
|函数处理|……分数转换,指定为字符向量、字符串标量或函数句柄。
这个表总结了可用的字符向量和字符串标量。
价值 | 描述 |
---|---|
“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
权重
- - - - - -观察权重资源描述
FResample
- - - - - -训练集的分数重新采样1
(默认)|(0,1)中的正标量LearnRate
- - - - - -收缩学习率1
(默认)|数值标量(0,1)收缩学习率,指定为逗号分隔的对,由“LearnRate”
和区间(0,1)中的数值标量。
用收缩法训练一个整体LearnRate
值小于1
,例如,0.1
是一个受欢迎的选择。使用收缩训练集成需要更多的学习迭代,但通常可以获得更好的精度。
例子:“LearnRate”,0.1
数据类型:单
|双
LearnRate
- - - - - -收缩学习率1
(默认)|数值标量(0,1)收缩学习率,指定为逗号分隔的对,由“LearnRate”
和区间(0,1)中的数值标量。
用收缩法训练一个整体LearnRate
值小于1
,例如,0.1
是一个受欢迎的选择。使用收缩训练集成需要更多的学习迭代,但通常可以获得更好的精度。
例子:“LearnRate”,0.1
数据类型:单
|双
RatioToSmallest
- - - - - -相对于代表性最低的类的抽样比例相对于最低表示类的抽样比例,指定为逗号分隔的对,由“RatioToSmallest”
和长度等于训练数据中不同类的数量的数值标量或数值向量。
假设有K
类中的训练数据和代表性最低的类有米
训练数据中的观察。
默认值为(
,表示要采样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}
请注意
对于超参数优化,学习者
必须是单个参数,而不是字符串数组或单元格数组。
“所有”
—优化所有符合条件的参数。
合格参数名称的字符串数组或单元格数组
向量的optimizableVariable
的输出hyperparameters
优化尝试最小化交叉验证的损失(错误)fitcensemble
通过改变参数。有关交叉验证丢失的信息(尽管是在不同的上下文中),请参见分类损失.要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions
名称-值对。
请注意
的价值“OptimizeHyperparameters”
覆盖使用其他名称-值参数指定的任何值。例如,设置“OptimizeHyperparameters”
来“汽车”
原因fitcensemble
参数对应的超参数“汽车”
选项,并忽略超参数的任何指定值。
符合条件的参数fitcensemble
是:
方法
-取决于课程的数量。
两个类——符合条件的方法是“包”
,“GentleBoost”
,“LogitBoost”
,“AdaBoostM1”
,“RUSBoost”
.
三个或更多的类——合格的方法是“包”
,“AdaBoostM2”
,“RUSBoost”
.
NumLearningCycles
- - - - - -fitcensemble
在正整数之间搜索,默认情况下按范围对数扩展[10500]
.
LearnRate
- - - - - -fitcensemble
在正实数之间的搜索,默认情况下按对数缩放范围(1 e - 3, 1)
.
所选对象的合格超参数学习者
:
学习者 | 合格Hyperparameters Bold =默认使用 |
默认范围 |
---|---|---|
“判别” |
δ |
在范围内取对数(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
对象。
负载fisheriris参数=超参数(“fitcensemble”量,物种,“树”);
要查看符合条件的和默认的超参数,请检查参数个数
.
通过传递vector来设置非默认参数optimizableVariable
具有非默认值的对象。例如,
负载fisheriris参数=超参数(“fitcensemble”量,物种,“树”);参数(4)。Range = [1,30];
通过参数个数
的价值OptimizeHyperparameters
.
默认情况下,迭代显示出现在命令行中,并根据优化中的超参数的数量显示图形。对于优化和绘图,目标函数是误分类率。要控制迭代显示,请设置详细的
的字段“HyperparameterOptimizationOptions”
名称-值参数。要控制情节,设置ShowPlots
的字段“HyperparameterOptimizationOptions”
名称-值参数。
示例请参见优化分类集成.
例子:OptimizeHyperparameters,{‘法’,‘NumLearningCycles’,‘LearnRate’,‘MinLeafSize’,‘MaxNumSplits}
HyperparameterOptimizationOptions
- - - - - -优化选项优化选项,指定为结构。的效果OptimizeHyperparameters
名称-值参数。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
获取函数,其名称包括 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数评价的最大次数。 | 30. 为“bayesopt” 而且“randomsearch” ,和整个网格“gridsearch” |
MaxTime |
时间限制,指定为正实标量。时间限制以秒为单位,用 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度的值的个数。该值可以是一个给出每个维度值数量的正整数向量,也可以是一个适用于所有维度的标量。对于类别变量,该字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图形的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳观测目标函数值。如果你使用贝叶斯优化(优化器 是“bayesopt” ),则该字段也绘制出最佳估计的目标函数值。最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察) 而且BestSoFar (estim)。 列的迭代显示,分别。您可以在属性中找到这些值ObjectiveMinimumTrace 而且EstimatedObjectiveMinimumTrace 的Mdl。HyperparameterOptimizationResults .如果问题包含一个或两个优化参数的贝叶斯优化,那么ShowPlots 并根据参数绘制了目标函数模型。 |
真正的 |
SaveIntermediateResults |
指示何时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,该字段将覆盖名为“BayesoptResults” 在每次迭代中。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
在命令行显示:
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要“并行计算工具箱”。由于并行时序的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详情请参见并行贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代时重新划分交叉验证的逻辑值。如果这个字段是 设置 |
假 |
只使用以下三个选项中的一个。 | ||
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。训练有素的
在命令行。
NumLearningCycles
从几十到几千不等。通常,一个具有良好预测能力的集合需要几百到几千个弱学习者。然而,你不必一次训练一个乐团那么多周期。你可以先培养几十个学习者,检查他们的整体表现,然后,如果有必要,训练更弱的学习者使用重新开始
用于分类问题。
整体表现取决于整体环境和弱学习者的环境。也就是说,如果使用默认参数指定弱学习器,那么集成的性能就会很差。因此,与集成设置一样,使用模板调整弱学习者的参数,并选择最小化泛化误差的值是一种很好的做法。
如果集成聚合方法(方法
)是“包”
和:
错误分类的代价(成本
)是高度不平衡的,那么,对于袋装样品,软件对来自有较大惩罚的类别的独特观察结果进行了过采样。
类先验概率(之前
)是高度偏斜的,软件就会从具有较大先验概率的类别中对独特的观察结果进行过采样。
对于较小的样本量,这些组合可以导致从具有较大惩罚或先验概率的类别中获得较低的袋外观察的相对频率。因此,估计的外袋误差是高度可变的,它可能很难解释。为了避免较大的估计外袋误差方差,特别是对小样本容量,设置一个更平衡的错误分类成本矩阵使用成本
或者一个倾斜较小的先验概率向量之前
.
方法指定类的顺序是很好的做法,因为一些输入和输出参数的顺序对应于训练数据中的不同类一会
名称-值对参数。
为了快速确定类的顺序,从训练数据中删除所有未分类的观察值(即缺少标签),获取并显示所有不同类的数组,然后指定数组一会
.例如,假设响应变量(Y
)是标签的单元格数组。这段代码指定了变量中的类顺序一会
.
Ycat =绝对的(Y);classNames =类别(Ycat)
分类
分配<定义>
对未分类的观察和类别
不包括<定义>
从它的输出。因此,如果将此代码用于标签的单元格数组,或将类似的代码用于分类数组,则不必删除缺少标签的观察值来获得不同类的列表。要指定从表示最少的标签到表示最多的标签的类顺序,然后快速确定类顺序(如前一个项目符号所示),但是在将列表传递给之前,要按频率排列列表中的类一会
.根据前面的示例,此代码指定了在中表示次数从最少到最多的类顺序classNamesLH
.
Ycat =绝对的(Y);classNames =类别(Ycat);freq = countcats(Ycat);[~,idx] = sort(freq);classNamesLH = classNames(idx);
在训练一个模型之后,您可以生成预测新数据标签的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.详情请参见代码生成简介.
有关集成聚合算法的详细信息,请参见整体算法.
如果你设置方法
是一个提升算法学习者
为了成为决策树,软件默认生长浅决策树。属性可以调整树深度MaxNumSplits
,MinLeafSize
,MinParentSize
名称-值对参数使用templateTree
.
装袋(“方法”,“包”
),fitcensemble
通过过采样类产生大的误分类代价和过采样类产生小的误分类代价。因此,袋外样本的错误分类代价大的类的观察值更少,错误分类代价小的类的观察值更多。如果使用较小的数据集和高度倾斜的成本矩阵来训练分类集合,那么每个类的外袋观察数可能很低。因此,估计的外袋误差可能有很大的方差,很难解释。同样的现象也会发生在具有较大先验概率的类中。
对于RUSBoost集成聚合方法(“方法”、“RUSBoost”
),名称-值对参数RatioToSmallest
指定每个类相对于表示最少的类的抽样比例。例如,假设在训练数据中有两个类:一个而且B.一个有100次观察B有10个观察结果。再假设代表性最低的阶级米
训练数据中的观察。
如果你设置“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
使用Intel Threading Building Blocks (TBB)并行化训练。有关Intel TBB的详细信息,请参见https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html.
[1] Breiman, L.“套袋预测器。”机器学习.第26卷,第123-140页,1996年。
[2]布雷曼,L.“随机森林。”机器学习.2001年第45卷第5-32页。
[3] Freund, Y.“一个更健壮的增强算法。”v1 arXiv: 0905.2138, 2009年。
Freund, Y.和R. E. Schapire。在线学习决策理论的推广及其在提升中的应用。计算机与系统科学J. J.,第55卷,119-139页,1997。
[5] Friedman, J. <贪婪函数近似:梯度增强机>。统计年鉴2001年,《中华人民共和国学报》第29卷第5期,第1189-1232页。
[6]弗里德曼,J., T.哈斯蒂,R.蒂布希拉尼。加法逻辑回归:助推的统计观点统计年鉴,第28卷第2期,第337-407页,2000。
[7]哈斯蒂,T., R.蒂布希拉尼,J.弗里德曼。统计学习的要素部分版,施普林格,纽约,2008。
[8] Ho T. K.“构建决策森林的随机子空间方法”。模式分析与机器智能汇刊1998年,第20卷第8期,第832-844页。
Schapire, R. E. Freund, P. Bartlett和W.S. Lee。“提高优势:对投票方法有效性的新解释。”统计年鉴,第26卷第5期,第1651-1686页,1998年。
[10] Seiffert, C., T. Khoshgoftaar, J. Hulse, A. Napolitano。“RUSBoost:在训练数据倾斜的情况下提高分类性能。”第十九届模式识别国际会议,第1-4页,2008。
[11]瓦姆斯,M., J.廖,G.拉奇。“完全正确的增强算法,最大化利润。”第23国际航线。机器学习会议,ACM纽约,第1001-1008页,2006年。
fitcensemble
万博1manbetx方法支持并行训练“选项”
名称-值参数。使用以下命令创建选项statset
,例如options = statset('UseParallel',true)
.并行集成训练要求您设置“方法”
的名称-值参数“包”
.并行训练只适用于树形学习者,树形学习者的默认类型是“包”
.
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
类调用中的名称-值参数fitcensemble
函数。
有关并行超参数优化的更多信息,请参见并行贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持万博1manbetx(并行计算工具箱).
使用注意事项和限制:
fitcensemble
不支持分类预测器。万博1manbetx您可以指定名称-值参数“CategoricalPredictors”
仅作为空数组。
fitcensemble
万博1manbetx只支持决策树学习器。您可以指定名称-值参数“学习者”
只有当“树”
,创建的学习者模板对象或学习者模板对象的单元向量templateTree
.如果你使用templateTree
,您可以指定名称-值参数“代孕”
而且“PredictorSelection”
只有当“关闭”
而且“allsplits”
,分别。
您可以指定名称-值参数“方法”
只有当“AdaBoostM1”
,“AdaBoostM2”
,“GentleBoost”
,“LogitBoost”
,或“RUSBoost”
.
不能指定名称-值参数“NPredToSample”
.
fitcensemble
只在以下情况下在GPU上执行:
输入参数X
是一个gpuArray
对象。
输入参数资源描述
包含gpuArray
元素。
fitcensemble
对于更深层次的决策树,GPU上的执行速度可能不会比CPU快。可以通过指定名称-值参数来设置决策树深度“学习者”
作为templateTree (MaxNumSplits,(2 ^深度)1)
.
ClassificationEnsemble
|ClassificationBaggedEnsemble
|ClassificationPartitionedEnsemble
|templateDiscriminant
|templateKNN
|templateTree
|预测
다음matlab명령에해당하는링크를클릭했습니다。
명령을실행하려면matlab명령창에입력하십시오。웹브라우저는matlab명령을지원하지않습니다。
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。