符合学习者的整体回归
返回训练回归整体模型对象(Mdl
= fitrensemble (资源描述
,ResponseVarName
)Mdl
),其中包含增加100回归树的结果使用LSBoost和预测和响应表中的数据资源描述
。ResponseVarName
响应变量的名称吗资源描述
。
创建一个回归,预测汽车的燃油经济性考虑到气缸数,体积而流离失所的圆柱体,马力,重量。然后,训练另一个合奏使用更少的预测因子。比较样本内预测精度的集合体。
加载carsmall
数据集。在训练中使用的变量存储在表中。
负载carsmall台=表(汽缸、排量、马力、重量、MPG);
火车一个回归合奏。
Mdl1 = fitrensemble(资源描述,“英里”);
Mdl1
是一个RegressionEnsemble
模型。一些显著的特点Mdl1
是:
整体聚合算法“LSBoost”
。
因为整体聚合方法是提高算法,回归树允许最多10分裂组成。
一百棵树组成。
因为英里/加仑
MATLAB®工作区是一个变量,您可以获得相同的结果通过输入
Mdl1 = fitrensemble(资源描述、MPG);
使用训练回归整体预测四缸车的燃油经济性与200立方英寸的位移,150马力,重达3000磅。
pMPG =预测(Mdl1 [4 200 150 3000])
pMPG = 25.6467
培训的新乐团使用所有预测资源描述
除了位移
。
公式=英里/加仑~汽缸+能力+重量的;Mdl2 = fitrensemble(资源描述、公式);
比较之间的resubstitution家中小企业Mdl1
和Mdl2
。
mse1 = resubLoss (Mdl1)
mse1 = 0.3096
mse2 = resubLoss (Mdl2)
mse2 = 0.5861
的样本内MSE,列车在所有预测较低。
通过使用火车的合奏了回归树fitrensemble
。通过指定的减少训练时间“NumBins”
名称-值对参数本数值预测。培训后,您可以通过使用复制被预测数据BinEdges
训练模型和的性质离散化
函数。
生成一个样本数据集。
rng (“默认”)%的再现性N = 1 e6;X1 =兰迪([1,5],[N, 1]);X2 =兰迪([5 10],[N, 1]);X3 =兰迪([0 5][N, 1]);X4 =兰迪([1,10],[N, 1]);X = (X1, X2) X3 X4);y = X1 + X2 + X3 + X4 + normrnd (0, 1, [N, 1]);
列车的整体使用最小二乘提高了回归树(LSBoost
默认值)。时间函数进行比较。
抽搐Mdl1 = fitrensemble (X, y);toc
运行时间是78.662954秒。
加快培训使用“NumBins”
名称-值对的论点。如果你指定“NumBins”
值作为一个正整数标量,那么软件箱子每个数值预测到指定数量的等概率的垃圾箱,然后树生长在本指数代替原始数据。软件不本分类预测。
抽搐Mdl2 = fitrensemble (X, y,“NumBins”,50);toc
运行时间是43.353208秒。
当您使用快这个过程大约两倍分箱数据,而不是原始数据。注意,运行时间取决于您的操作系统。
比较resubstitution回归错误。
rsLoss = resubLoss (Mdl1)
rsLoss = 1.0134
rsLoss2 = resubLoss (Mdl2)
rsLoss2 = 1.0133
在这个例子中,装箱没有重大损失预测的值可以减少培训时间的准确性。通常,当你有一个大的数据集在这个例子中,使用装箱选项加速训练但是会导致潜在的准确性下降。如果你想进一步减少训练时间,指定一个小数量的垃圾箱。
通过使用复制被预测数据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
值是南
年代。
估计泛化误差的合奏了回归树。
加载carsmall
数据集。选择气缸数,体积而流离失所的圆柱体,马力和重量作为燃料经济的预测。
负载carsmallX =(气缸位移马力重量);
旨在使用10倍交叉验证回归树的合奏。使用决策树模板,指定每棵树只应该是一个分裂一次。
rng (1);%的再现性t = templateTree (“MaxNumSplits”1);Mdl = fitrensemble (X,英里/加仑,“学习者”t“CrossVal”,“上”);
Mdl
是一个RegressionPartitionedEnsemble
模型。
情节的累积,旨在10倍,均方误差(MSE)。显示估计泛化误差的合奏。
kflc = kfoldLoss (Mdl,“模式”,“累积”);图;情节(kflc);ylabel (“旨在MSE 10倍”);包含(“学习周期”);
estGenError = kflc(结束)
estGenError = 24.8521
kfoldLoss
返回默认泛化误差。然而,绘制累计损失允许您监控损失变化弱学习者积累合奏。
整体达到23.5左右的MSE积累大约30弱的学习者。
如果你满意合奏的泛化误差,然后创建一个预测模型,训练合奏再次使用所有的设置除了交叉验证。然而,是一种很好的做法来优化hyperparameters等决定将每棵树的最大数量和数量的学习周期。
这个例子展示了如何优化hyperparameters自动使用fitrensemble
。这个例子使用了carsmall
数据。
加载数据。
负载carsmall
你可以找到hyperparameters减少5倍交叉验证损失通过使用自动hyperparameter优化。
Mdl = fitrensemble (MPG(功率、重量),“OptimizeHyperparameters”,“汽车”)
在这个例子中,再现性,设置随机种子和使用“expected-improvement-plus”
采集功能。同时,再现性的随机森林算法,指定“复制”
名称-值对的论点是真正的
树的学习者。
rng (“默认”)t = templateTree (“复制”,真正的);Mdl = fitrensemble (MPG(功率、重量),“OptimizeHyperparameters”,“汽车”,“学习者”t…“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”,“expected-improvement-plus”))
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | |方法NumLearningC - | LearnRate | MinLeafSize | | | |结果日志(1 +损失)运行时| |(观察)| (estim) | |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 |的| 2.9743 | 10.177 | 2.9743 | 2.9743 |袋| 413 | - | 1 |
| 2 |接受| 6.2619 | 1.4109 | 2.9743 | 3.6147 | LSBoost 57 | | 0.0016067 | 6 |
最好| 3 | | 2.9562 | 0.70324 | 2.9562 | 2.9654 | 32袋| | - | 2 |
| 4 |接受| 4.1884 | 1.0749 | 2.9562 | 2.9573 |包55 40 | - - - | | |
| 5 |接受| 4.1881 | 4.776 | 2.9562 | 2.957 | LSBoost | 258 | 0.096683 | 50 |
| 6 |接受| 3.1479 | 1.546 | 2.9562 | 2.9569 | LSBoost | 75 | 0.092525 | 6 |
| | 7日接受| 3.7831 | 0.39071 | 2.9562 | 2.9568 | LSBoost | 17 | 0.08882 | 1 |
| 8 |接受| 4.2759 | 0.3212 | 2.9562 | 2.9564 | LSBoost | 12 | 0.094908 | 1 |
| | 9日接受| 3.124 | 3.0992 | 2.9562 | 2.9564 | LSBoost | 157 | 0.083222 | 8 |
| |接受10 | 3.6349 | 10.054 | 2.9562 | 2.991 | LSBoost | 494 | 0.070612 | 2 |
| | 11日接受| 3.0526 | 0.2414 | 2.9562 | 2.9615 | 10袋| | - | 1 |
| | 12日接受| 3.1469 | 1.3287 | 2.9562 | 2.9627 | LSBoost | 62 | 0.08423 | 4 |
| | 13日接受| 4.7629 | 0.43122 | 2.9562 | 2.9629 | LSBoost 21 48 | | 0.055294 | |
| | 14日接受| 4.1881 | 3.9945 | 2.9562 | 2.9629 | LSBoost | 213 | 0.99467 | |
| | 15日接受| 3.5337 | 1.3169 | 2.9562 | 3.0164 | LSBoost | 63 | 0.73987 | 1 |
| 16 |接受| 3.2481 | 1.2691 | 2.9562 | 2.9689 | LSBoost | 59 | 0.2363 | 6 |
| | 17日接受| 2.9732 | 1.621 | 2.9562 | 3.0016 |袋| 83 | - | 1 |
最好18岁| | | 2.9361 | 9.6119 | 2.9361 | 2.9648 |袋| 498 | - | 2 |
| | 19日接受| 3.5859 | 2.5096 | 2.9361 | 2.9987 | LSBoost | 123 | 0.1522 | 2 |
| |接受20 | 2.9406 | 9.5226 | 2.9361 | 2.9559 |袋| 496 | - | 2 |
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | |方法NumLearningC - | LearnRate | MinLeafSize | | | |结果日志(1 +损失)运行时| |(观察)| (estim) | |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | 21日接受| 2.9419 | 9.4082 | 2.9361 | 2.9517 |袋| 491 | - | 2 |
| | 22日接受| 5.7918 | 0.73879 | 2.9361 | 2.9525 | LSBoost 35 | | 0.0094806 | 1 |
| | 23日接受| 5.9584 | 5.1211 | 2.9361 | 2.9533 | LSBoost | 272 | 0.0010255 | 50 |
| | 24日接受| 6.4218 | 0.24342 | 2.9361 | 2.9538 | LSBoost | 10 | 0.0010003 | 1 |
| | 25日接受| 4.7662 | 3.8496 | 2.9361 | 2.9531 | LSBoost | 202 | 0.0058776 | 50 |
| | 26日接受| 3.4231 | 4.1306 | 2.9361 | 2.9537 | LSBoost | 208 | 0.99319 | 6 |
| | 27日接受| 5.6829 | 0.33705 | 2.9361 | 2.954 | LSBoost | 13 | 0.02954 | 1 |
| | 28日接受| 4.7428 | 1.3736 | 2.9361 | 2.954 | LSBoost | 72 | 0.01677 | 50 |
| | 29日接受| 5.9554 | 1.5838 | 2.9361 | 2.9544 | LSBoost | 78 | 0.0031809 | 1 |
| | 30日接受| 4.1881 | 1.1862 | 2.9361 | 2.9547 | LSBoost | 62 | 0.35508 | 50 |
__________________________________________________________优化完成。MaxObjectiveEvaluations 30。总功能评估:30总运行时间:139.2993秒。总目标函数评价时间:93.3718最佳观察可行点:方法NumLearningCycles LearnRate MinLeafSize ______ _________________ _____ ___________袋498南2观察目标函数值= 2.9361估计目标函数值= 2.9547时间评估函数= 9.6119最佳估计可行点(根据模型):方法NumLearningCycles LearnRate MinLeafSize ______ _________________ _____ ___________袋491南2估计目标函数值= 2.9547估计时间评估函数= 9.5465
Mdl = classreg.learning.regr。RegressionBaggedEnsemble响应的名字:“Y”CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 HyperparameterOptimizationResults: [1×1 BayesianOptimization] NumTrained: 491 Method: 'Bag' LearnerNames: {'Tree'} ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.' FitInfo: [] FitInfoDescription: 'None' Regularization: [] FResample: 1 Replace: 1 UseObsForLearner: [94×491 logical] Properties, Methods
优化搜索方法回归(袋
和LSBoost
),在NumLearningCycles
,在LearnRate
为LSBoost
树,在学习者MinLeafSize
。输出是最低的合奏回归估计交叉验证的损失。
一个方法创建一个整体的提高了回归树具有令人满意的预测性能调优决策树复杂性水平使用交叉验证。而寻找一个最佳的复杂性水平,调整学习速率减少学习周期的数量。
这个例子使用交叉验证选项(手动找到最优参数“KFold”
名称-值对)和论据kfoldLoss
函数。或者,您可以使用“OptimizeHyperparameters”
名称-值对参数自动优化hyperparameters。看到优化回归合奏。
加载carsmall
数据集。选择气缸数,体积而流离失所的圆柱体,马力和重量作为燃料经济的预测。
负载carsmall台=表(汽缸、排量、马力、重量、MPG);
默认值树的深度控制器推动回归树:
10
为MaxNumSplits
。
5
为MinLeafSize
10
为MinParentSize
搜索最优tree-complexity水平:
旨在一组乐团。指数增加tree-complexity水平从树桩(1分)决定随后的集合体n- 1分裂。n是样本容量。同样,不同学习速率为每一套0.1至1。
估计旨在为每一个总体均方误差(MSE)。
tree-complexity水平 , 比较累积,旨在MSE的集合体,策划他们对学习的循环次数。情节单独为每个学习速率曲线在同一图。
选择达到最小均方误差曲线,并注意相应的学习周期和学习速率。
旨在深入回归树和一个树桩。因为含有缺失值的数据,使用代理分裂。这些回归树作为基准。
rng (1)%的再现性MdlDeep = fitrtree(资源描述,“英里”,“CrossVal”,“上”,“MergeLeaves”,“关闭”,…“MinParentSize”,1“代孕”,“上”);MdlStump = fitrtree(资源描述,“英里”,“MaxNumSplits”,1“CrossVal”,“上”,…“代孕”,“上”);
旨在150提高了回归树的整体使用5倍交叉验证。使用树模板:
不同的最大数量分割使用序列中的值 。米是这样的, 不大于n- 1。
打开代理分裂。
对于每一个变体,调整学习速率使用中的每个值集{0.1,0.25,0.5,1}。
n =大小(1台);m =地板(log2 (n - 1));learnRate = (0.1 0.25 0.5 1);numLR =元素个数(learnRate);maxNumSplits = 2。^ (0: m);numMNS =元素个数(maxNumSplits);numTrees = 150;Mdl =细胞(numMNS numLR);为k = 1: numLR为j = 1: numMNS t = templateTree (“MaxNumSplits”maxNumSplits (j),“代孕”,“上”);Mdl {j, k} = fitrensemble(资源描述,“英里”,“NumLearningCycles”numTrees,…“学习者”t“KFold”5,“LearnRate”,learnRate (k));结束结束
估计累积,旨在MSE的合奏。
kflAll = @ (x) kfoldLoss (x,“模式”,“累积”);errorCell = cellfun (Mdl kflAll,“统一”、假);错误=重塑(cell2mat (errorCell), [numTrees元素个数(maxNumSplits)元素个数(learnRate)]);errorDeep = kfoldLoss (MdlDeep);errorStump = kfoldLoss (MdlStump);
情节如何旨在MSE表现合奏的树的数量增加。情节上的曲线对学习速率相同的情节,和情节单独的情节不同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 = [10 50]; xlabel(树木的数量)ylabel (“旨在MSE”)标题(sprintf (“MaxNumSplits = % 0.3 g”maxNumSplits (mnsPlot (k))))从结束hL =传奇([cellstr num2str (learnRate ',的学习速率= % 0.2 f '));…“深树”;“树桩”;“最小MSE。”]);hL.Position (1) = 0.6;
每个曲线包含最低旨在MSE发生在树的最优数量。
确定分割的最大数量,数量的树木,和学习速率,MSE整体收益率最低的。
[minErr, minErrIdxLin] = min(错误(:));[idxNumTrees, idxMNS idxLR] = ind2sub(大小(错误),minErrIdxLin);流(“\ nMin。MSE = % 0.5 f 'minErr)
分钟。MSE = 17.00516
流(“\ nOptimal参数值:\ nNum。树= % d ',idxNumTrees);
最优参数值:Num。树木= 38
流(' \ nMaxNumSplits = % d \ nLearning率= % 0.2 f \ n ',…maxNumSplits (idxMNS) learnRate (idxLR))
MaxNumSplits = 4学习速率= 0.10
创建一个基于最优预测合奏hyperparameters和整个训练集。
tFinal = templateTree (“MaxNumSplits”maxNumSplits (idxMNS),“代孕”,“上”);MdlFinal = fitrensemble(资源描述,“英里”,“NumLearningCycles”idxNumTrees,…“学习者”tFinal,“LearnRate”learnRate (idxLR))
MdlFinal = classreg.learning.regr。RegressionEnsemblePredictorNames:{'Cylinders' 'Displacement' 'Horsepower' 'Weight'} ResponseName: 'MPG' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 NumTrained: 38 Method: 'LSBoost' LearnerNames: {'Tree'} ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.' FitInfo: [38×1 double] FitInfoDescription: {2×1 cell} Regularization: [] Properties, Methods
MdlFinal
是一个RegressionEnsemble
。预测汽车的燃油经济性鉴于其气缸数,体积而流离失所的圆柱体,马力,和重量,可以通过数据和预测指标MdlFinal
来预测
。
而不是使用交叉验证选择手动搜索最优值(“KFold”
)和kfoldLoss
功能,您可以使用“OptimizeHyperparameters”
名称-值对的论点。当你指定“OptimizeHyperparameters”
软件发现,使用贝叶斯最优参数自动优化。通过使用获得的最佳值“OptimizeHyperparameters”
可以获得不同于使用手动搜索。
t = templateTree (“代孕”,“上”);mdl = fitrensemble(资源描述,“英里”,“学习者”t…“OptimizeHyperparameters”,{“NumLearningCycles”,“LearnRate”,“MaxNumSplits”})
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | | |结果日志(1 +损失)运行时| |(观察)| (estim) |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 |的| 3.3985 | 0.67095 | 3.3985 | 3.3985 | 26 | 0.072054 | 3 |
| 2 |接受| 6.0976 | 4.1242 | 3.3985 | 3.5578 | 170 | 0.0010295 | 70 |
最好| 3 | | 3.2868 | 5.9884 | 3.2868 | 3.287 | 273 | 0.61026 | 6 |
| 4 |接受| 6.1839 | 1.6681 | 3.2868 | 3.2868 | 80 | 0.0016871 | 1 |
最好| 5 | | 3.027 | 0.35792 | 3.027 | 3.0275 | 14 | 0.21079 | 85 |
| 6 |接受| 3.0553 | 0.27277 | 3.027 | 3.0323 | 10 | 0.25194 | 19 |
| | 7日接受| 3.3577 | 0.26363 | 3.027 | 3.0486 | 10 | 0.17901 | 4 |
| | 8接受| 3.0491 | 0.27427 | 3.027 | 3.0328 | 10 | 0.28136 | 98 |
| | 9日接受| 3.0735 | 0.27294 | 3.027 | 3.0288 | 10 | 0.25459 | 99 |
| |接受10 | 3.1252 | 1.3338 | 3.027 | 3.0403 | 58 | 0.25562 | 9 |
| | 11日接受| 3.0613 | 0.28222 | 3.027 | 3.0325 | 10 | 0.26363 | 99 |
| | 12日接受| 3.3299 | 0.27812 | 3.027 | 3.0312 | | 0.96285 | 93 |
| | 13日接受| 5.2994 | 0.2922 | 3.027 | 3.0301 | 11 | 0.052366 | 93 |
| | 14日接受| 3.0946 | 0.26976 | 3.027 | 3.0313 | 10 | 0.49134 | 92 |
| | 15日接受| 3.2499 | 2.7489 | 3.027 | 3.0287 | 119 | 0.27613 | 49 |
| | 16日接受| 3.1039 | 0.26627 | 3.027 | 3.0268 | 10 | 0.90888 | 1 |
最好17 | | | 2.8971 | 0.40282 | 2.8971 | 2.8975 | 17 | 0.35714 | 1 |
| | 18日接受| 4.5501 | 0.2607 | 2.8971 | 2.897 | 10 | 0.097401 | 4 |
| | 19日接受| 2.923 | 1.2505 | 2.8971 | 2.897 | 60 | 0.088079 | 1 |
| |接受20 | 2.9257 | 0.6109 | 2.8971 | 2.897 | 0.17524 | 1 | | 28
| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | | |结果日志(1 +损失)运行时| |(观察)| (estim) |永昌龙| | | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | 21日接受| 3.0642 | 0.63736 | 2.8971 | 2.8968 | 30 | 0.95959 | 1 |
| | 22日接受| 3.0486 | 0.9568 | 2.8971 | 2.8966 | 41 | 0.11378 | 91 |
| | 23日接受| 2.9682 | 1.6611 | 2.8971 | 2.8965 | 81 | 0.041244 | 1 |
| | 24日接受| 2.934 | 0.4262 | 2.8971 | 2.8982 | 19 | 0.25643 | 1 |
| | 25日接受| 2.9839 | 0.36893 | 2.8971 | 2.8995 | 16 | 0.58473 | 1 |
最好26 | | | 2.8895 | 0.31171 | 2.8895 | 2.8892 | 13 | 0.34786 | 1 |
| | 27日接受| 2.9215 | 2.9311 | 2.8895 | 2.8893 | 145 | 0.061728 | 1 |
| | 28日接受| 3.0827 | 1.5154 | 2.8895 | 2.8894 | 74 | 0.99934 | 1 |
| | 29日接受| 2.9234 | 1.7442 | 2.8895 | 2.8893 | 85 | 0.059513 | 1 |
| | 30日接受| 2.924 | 4.437 | 2.8895 | 2.8894 | 222 | 0.031299 | 1 |
__________________________________________________________优化完成。MaxObjectiveEvaluations 30。总功能评估:30总运行时间:70.0647秒。总目标函数评价时间:36.879最佳观察可行点:NumLearningCycles LearnRate MaxNumSplits _________________ _____ _______ 13 0.34786 1观察目标函数值= 2.8895估计目标函数值= 2.8894时间评估函数= 0.31171最佳估计可行点(根据模型):NumLearningCycles LearnRate MaxNumSplits _________________ _____ _______ 13 0.34786 1估计目标函数值= 2.8894估计时间评估函数= 0.31548
mdl = classreg.learning.regr。RegressionEnsemblePredictorNames:{'Cylinders' 'Displacement' 'Horsepower' 'Weight'} ResponseName: 'MPG' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 HyperparameterOptimizationResults: [1×1 BayesianOptimization] NumTrained: 13 Method: 'LSBoost' LearnerNames: {'Tree'} ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.' FitInfo: [13×1 double] FitInfoDescription: {2×1 cell} Regularization: [] Properties, Methods
资源描述
- - - - - -样本数据样本数据用于训练模型,指定为一个表。每一行的资源描述
对应于一个观察,每一列对应一个预测变量。资源描述
响应变量可以包含一个额外的列。多列变量和细胞数组以外的细胞阵列的特征向量是不允许的。
如果资源描述
包含响应变量和您想要使用所有剩余变量预测,然后指定响应变量使用ResponseVarName
。
如果资源描述
包含响应变量,您想要使用的一个子集剩余变量的预测,然后指定一个公式使用公式
。
如果资源描述
不包含响应变量,然后指定响应数据使用吗Y
。响应变量的长度的行数资源描述
必须是相等的。
节省内存和执行时间,供应X
和Y
而不是资源描述
。
数据类型:表
ResponseVarName
- - - - - -响应变量名资源描述
响应变量名称,指定为响应变量的名称资源描述
。
您必须指定ResponseVarName
作为一个特征向量或字符串标量。例如,如果Tbl.Y
响应变量,然后指定ResponseVarName
作为“Y”
。否则,fitrensemble
将所有列的资源描述
作为预测变量。
数据类型:字符
|字符串
公式
- - - - - -说明模型的响应变量和预测变量的子集响应变量的解释模型和预测变量的一个子集,指定为一个特征向量或字符串标量形式“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,…,的家
。
“NumLearningCycles”, 500年,“方法”,“包”、“学习者”,templateTree (),“CrossVal”,“上”
旨在500袋装回归树的整体使用10倍交叉验证。
你不能使用任何交叉验证名称-值对论点的“OptimizeHyperparameters”
名称-值对的论点。您可以修改交叉验证“OptimizeHyperparameters”
只有通过使用“HyperparameterOptimizationOptions”
名称-值对的论点。
“方法”
- - - - - -整体聚合方法“LSBoost”
(默认)|“包”
整体聚合方法,指定为逗号分隔组成的“方法”
和“LSBoost”
或“包”
。
价值 | 方法 | 笔记 |
---|---|---|
“LSBoost” |
最小二乘增加(LSBoost) | 你可以通过使用指定收缩的学习速率“LearnRate” 名称-值对的论点。 |
“包” |
引导聚合(例如,装袋,随机森林[2]) | fitrensemble 使用装袋与随机预测选择默认每次分裂(随机森林)。使用装袋没有随机选择,使用树的学习者“NumVariablesToSample” 值是“所有” 。 |
整体聚合算法的细节和示例,请参阅算法,整体算法,选择一个适用的合奏聚合方法。
例子:“方法”,“包”
“学习者”
- - - - - -弱的学习者在合奏中使用“树”
(默认)|树模板对象|细胞树模板对象的向量弱的学习者使用的合奏,指定为逗号分隔组成的“学习者”
和“树”
、树模板对象或一个细胞树模板对象的向量。
“树”
(默认)fitrensemble
使用默认回归树的学习者,这是一样的templateTree ()
。的默认值templateTree ()
依赖的价值“方法”
。
袋装决策树、决策分歧(的最大数量“MaxNumSplits”
)是n - 1
,在那里n
是观测的数量。随机预测的数量来选择对于每个分裂(“NumVariablesToSample”
)是预测的数量的三分之一。因此,fitrensemble
深决策树生长。你可以长浅树上降低模型复杂度和计算时间。
提高了决策树,“MaxNumSplits”
是10,“NumVariablesToSample”
是“所有”
。因此,fitrensemble
浅决策树生长。你能更深的树木生长的准确性。
看到templateTree
默认设置的弱的学习者。
树模板对象-fitrensemble
使用模板创建的对象树templateTree
。使用的名称-值对的观点templateTree
指定设置树的学习者。
细胞的向量米树模板对象-fitrensemble
生长米回归树每学习周期(见NumLearningCycles
)。例如,对于一个由两种类型的回归树、供应{t1 t2}
,在那里t1
和t2
回归树模板对象返回的templateTree
。
学习者的数量来培训的详细信息,明白了NumLearningCycles
和提示。
例子:“学习者”,templateTree (MaxNumSplits, 5)
“NPrint”
- - - - - -打印输出频率“关闭”
(默认)|正整数打印输出频率,指定为逗号分隔组成的“NPrint”
和一个正整数“关闭”
。
跟踪的数量弱的学习者或折叠那fitrensemble
训练到目前为止,指定一个正整数。也就是说,如果您指定正整数米:
还没有指定任何交叉验证选项(例如,CrossVal
),然后fitrensemble
每次显示一条消息到命令行完成培训米弱的学习者。
和交叉验证选项fitrensemble
每次显示一条消息到命令行完成培训米折叠。
如果您指定“关闭”
,然后fitrensemble
当它完成时不显示消息训练薄弱的学习者。
当训练一个大数据集上的许多薄弱的学习者,指定一个正整数NPrint
。
例子:“NPrint”, 5
数据类型:单
|双
|字符
|字符串
“NumBins”
- - - - - -箱数数值预测[]
(空的)(默认)|正整数标量数值预测的箱子数量,指定为逗号分隔组成的“NumBins”
和一个正整数标量。
如果“NumBins”
值是空的(默认),则软件不本任何预测。
如果你指定“NumBins”
值作为一个正整数标量,那么软件箱子每个数值预测到指定数量的等概率的垃圾箱,然后树生长在本指数代替原始数据。
如果“NumBins”
价值超过数量(u)的惟一值预测fitrensemble
垃圾箱预测到u箱里。
fitrensemble
没有本分类预测。
当你使用大量的训练数据集,该面元选项加速训练但是会导致潜在的准确性下降。你可以试着“NumBins”, 50岁
首先,然后改变“NumBins”
价值取决于训练速度和准确性。
训练模型存储本的边缘BinEdges
财产。
例子:“NumBins”, 50岁
数据类型:单
|双
“CategoricalPredictors”
- - - - - -分类预测列表“所有”
分类预测列表,指定为逗号分隔组成的“CategoricalPredictors”
在这个表的一个值。
价值 | 描述 |
---|---|
向量的正整数 | 中的每个条目对应列向量索引值的预测数据(X 或资源描述 包含一个分类变量)。 |
逻辑向量 | 一个真正的 条目意味着预测数据的对应的列(X 或资源描述 )是一个分类变量。 |
字符矩阵 | 矩阵的每一行是一个预测变量的名字。名称必须匹配的条目PredictorNames 。垫的名字与额外的空格字符矩阵的每一行有相同的长度。 |
字符串数组或单元阵列的特征向量 | 数组中的每个元素是一个预测变量的名字。名称必须匹配的条目PredictorNames 。 |
“所有” |
所有预测都直言。 |
默认情况下,如果预测数据表(资源描述
),fitrensemble
假设变量是直言如果它是一个逻辑向量,无序分类向量,字符数组,字符串数组或单元阵列特征向量。如果预测数据是一个矩阵(X
),fitrensemble
假设所有的预测都是连续的。识别任何其他预测分类预测,通过使用指定它们“CategoricalPredictors”
名称-值对的论点。
例子:“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”
选择使用哪个预测变量在训练。也就是说,fitrensemble
只使用的预测变量PredictorNames
和响应变量在训练。
PredictorNames
必须是一个子集的Tbl.Properties.VariableNames
,不能包括响应变量的名称。
默认情况下,PredictorNames
包含所有预测变量的名字。
一个良好的实践是指定培训使用的预测因子“PredictorNames”
或公式
只有。
例子:PredictorNames, {‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}
数据类型:字符串
|细胞
“ResponseName”
- - - - - -响应变量名“Y”
(默认)|特征向量|字符串标量响应变量名称,指定为逗号分隔组成的“ResponseName”
和一个字符向量或字符串标量。
如果你提供Y
,那么你可以使用“ResponseName”
为响应变量指定一个名称。
如果你提供ResponseVarName
或公式
,那么你不能使用“ResponseName”
。
例子:“ResponseName”、“响应”
数据类型:字符
|字符串
“ResponseTransform”
- - - - - -响应转换“没有”
(默认)|函数处理响应变换,指定为逗号分隔组成的“ResponseTransform”
,要么“没有”
或一个函数处理。默认值是“没有”
,这意味着@ (y) y
,或者没有转换。MATLAB函数或函数定义,使用它的功能处理。函数处理必须接受一个向量(原始响应值),并返回一个向量的大小相同(转换后的响应值)。
例子:假设您创建一个函数处理一个指数变换适用于通过使用一个输入向量myfunction = @ (y) exp (y)
。然后,您可以指定响应转换myfunction ResponseTransform,
。
数据类型:字符
|字符串
|function_handle
“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”,“上”
“重量”
- - - - - -观察权重资源描述
“LearnRate”
- - - - - -学习速率的收缩1
(默认)|数字标量(0,1)学习速率的收缩,指定为逗号分隔两人组成的数字标量的间隔(0,1)。
训练一个使用收缩,集LearnRate
一个值小于1
例如,0.1
是一个受欢迎的选择。训练一个使用收缩学习需要更多的迭代,但往往达到更好的精度。
例子:“LearnRate”, 0.1
数据类型:单
|双
“OptimizeHyperparameters”
- - - - - -参数优化“没有”
(默认)|“汽车”
|“所有”
|字符串数组或单元阵列的参数名的资格|向量的optimizableVariable
对象参数优化,指定为逗号分隔组成的“OptimizeHyperparameters”
和下列之一:
“没有”
——不优化。
“汽车”
——使用{‘法’,‘NumLearningCycles’,‘LearnRate}
除了指定的默认参数学习者
:
学习者
=“树”
(默认){' MinLeafSize '}
hyperparameter优化,学习者
必须是一个参数,而不是一个字符串数组或单元阵列。
“所有”
——优化所有符合条件的参数。
字符串数组或单元阵列的参数名的资格
向量的optimizableVariable
对象,通常的输出hyperparameters
优化试图最小化交叉验证(错误)损失fitrensemble
通过改变参数。控制交叉验证类型和其他方面的优化,使用HyperparameterOptimizationOptions
名称-值对。
“OptimizeHyperparameters”
值覆盖任何值使用其他名称-值对参数设置。例如,设置“OptimizeHyperparameters”
来“汽车”
导致“汽车”
值应用。
合格的参数fitrensemble
是:
方法
——合格的方法“包”
或“LSBoost”
。
NumLearningCycles
- - - - - -fitrensemble
搜索之间的正整数,默认情况下对数与范围[10500]
。
LearnRate
- - - - - -fitrensemble
默认搜索之间的正实数,对数与范围(1 e - 3, 1)
。
MinLeafSize
- - - - - -fitrensemble
搜索范围的整数对数[1,马克斯(2楼(NumObservations / 2)))
。
MaxNumSplits
- - - - - -fitrensemble
搜索范围的整数对数NumObservations-1[1,马克斯(2))
。
NumVariablesToSample
- - - - - -fitrensemble
搜索在整数范围内NumPredictors[1,马克斯(2))
。
设置默认的参数通过一个向量的optimizableVariable
有默认值的对象。例如,
负载carsmallparams = hyperparameters (“fitrensemble”,英里/加仑(功率、重量)“树”);参数(4)。范围= (1、20);
通过参数个数
的价值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
——训练回归整体模型RegressionBaggedEnsemble
模型对象|RegressionEnsemble
模型对象|RegressionPartitionedEnsemble
旨在模型对象训练有素的整体模型,作为一个模型对象的表返回。
模型对象 | 指定任何交叉验证选择吗? | 方法 设置 |
重新取样 设置 |
---|---|---|---|
RegressionBaggedEnsemble |
没有 | “包” |
“上” |
RegressionEnsemble |
没有 | “LSBoost” |
“关闭” |
RegressionPartitionedEnsemble |
是的 | “LSBoost” 或“包” |
“关闭” 或“上” |
控制交叉验证的参数名称-值对CrossVal
,坚持
,KFold
,Leaveout
,CVPartition
。
引用的属性Mdl
,使用点符号。例如,访问或显示细胞弱学习者模型对象的向量,没有旨在,回车Mdl.Trained
在命令行中。
整体聚合算法的细节,请参阅整体算法。
如果您指定“方法”、“LSBoost”
,那么软件默认浅决策树生长。你可以调整树深度通过指定MaxNumSplits
,MinLeafSize
,MinParentSize
名称-值对参数使用templateTree
。
双核系统及以上,fitrensemble
对培训使用英特尔®线程构建块(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和r e Schapire。“决策理论推广应用程序在线学习和提高。”j .计算机和系统科学,55卷,第139 - 119页,1997年。
[4]弗里德曼,j .“贪婪的函数近似:梯度提高机器。”统计年鉴5号,卷。29日,第1232 - 1189页,2001年。
[5]Hastie, T。,R. Tibshirani, and J. Friedman.统计学习的元素部分版,施普林格,纽约,2008年。
并行运行,设置“UseParallel”
选项真正的
。
执行并行hyperparameter优化,使用“HyperparameterOptions”、结构(UseParallel,真的)
名称-值对参数在调用这个函数。
平行hyperparameter优化的更多信息,请参阅平行的贝叶斯优化。
关于并行计算的更一般的信息,请参阅MATLAB函数自动并行支持运行万博1manbetx(并行计算工具箱)。
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。