优化提升的回归集成

此示例示出了如何优化升压回归集成的超参数。优化最小化模型的交叉验证的损失。

问题是每一个汽车的加仑英里数的效率,是根据它的加速,发动机排量,马力和重量的模型。加载carsmall数据,其中包含这些和其它预测因子。

加载carsmallX = [加速位移马力重量];Y = MPG;

拟合回归集成到使用所述数据LSBoost算法,并使用替代拆分。通过改变学习的周期数,代理拆分的最大数量优化得到的模型和学习速度。此外,允许优化重新分区每次迭代之间的交叉验证。

对于重复性,设置随机种子,并使用“预计-改善,加上”采集功能。

RNG默认MDL = fitrensemble(X,Y,...'方法''LSBoost'...'学习者',templateTree(“代孕”'上'...'OptimizeHyperparameters'{'NumLearningCycles''MaxNumSplits''LearnRate'},...'HyperparameterOptimizationOptions',结构(“重新分割”,真正,...'AcquisitionFunctionName'“预计-改善,加上”))
| ==================================================================================================================== ||ITER |EVAL |目的:|目的|BestSoFar |BestSoFar |NumLearningC- |LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 1 | Best | 3.5457 | 8.2128 | 3.5457 | 3.5457 | 383 | 0.51519 | 4 |
|2 |最佳|3.4903 |0.41109 |3.4903 |3.4933 |16 |0.66503 |7 |
|3 |最佳|3.1763 |0.78207 |3.1763 |3.1764 |33 |0.2556 |92 |
|4 |接受|6.3076 |0.34868 |3.1763 |3.1768 |13 |0.0053227 |5 |
|5 |接受|3.4071 |1.7753 |3.1763 |3.1768 |78 |0.47249 |99 |
|6 |接受|3.7443 |0.26439 |3.1763 |3.1774 |10 |0.14669 |86 |
|7 |接受|3.1772 |0.28254 |3.1763 |3.1756 |10 |0.29922 |20 |
|8 |最佳|3.1503 |9.8543 |3.1503 |3.1677 |495 |0.26141 |1 |
|9 |接受|3.4226 |0.91397 |3.1503 |3.168 |37 |0.99969 |24 |
|10 |接受|3.2646 |0.72349 |3.1503 |3.193 |31 |0.27693 |10 |
|11 |接受|3.3428 |7.0584 |3.1503 |3.2275 |314 |0.27312 |47 |
|12 |接受|5.9344 |5.6579 |3.1503 |3.2289 |259 |0.0010001 |21 |
|13 |最佳|3.0379 |2.7762 |3.0379 |3.0497 |139 |0.024969 |1 |
|14 |接受|3.2336 |2.1551 |3.0379 |3.0571 |97 |0.037926 |24 |
|15 |接受|3.1774 |9.9179 |3.0379 |3.1059 |439 |0.027258 |20 |
|16 |接受|4.8699 |0.66609 |3.0379 |3.0764 |31 |0.026817 |2 |
|17 |接受|3.2566 |5.4116 |3.0379 |3.0579 |244 |0.058858 |8 |
|18 |最佳|3.0314 |4.8355 |3.0314 |3.0191 |214 |0.025201 |44 |
|19 |接受|3.2227 |11.275 |3.0314 |3.0179 |500 |0.12391 |52 |
|20 |接受|3.0635 |3.6356 |3.0314 |3.0321 |180 |0.02991 |2 |
| ==================================================================================================================== ||ITER |EVAL |目的:|目的|BestSoFar |BestSoFar |NumLearningC- |LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 21 | Accept | 3.2057 | 5.2988 | 3.0314 | 3.0363 | 237 | 0.01568 | 97 |
|22 |接受|3.1692 |1.7442 |3.0314 |3.0381 |76 |0.14203 |53 |
|23 |接受|3.1204 |4.0391 |3.0314 |3.0561 |178 |0.025816 |63 |
|24 |最佳|2.9564 |3.6824 |2.9564 |3.003 |185 |0.028069 |1 |
|25 |最佳|2.8344 |4.448 |2.8344 |2.9067 |224 |0.023927 |1 |
|26 |接受|2.9268 |5.2045 |2.8344 |2.9136 |262 |0.021782 |1 |
|27 |接受|3.0143 |4.8904 |2.8344 |2.9443 |249 |0.022608 |1 |
|28 |接受|6.4222 |0.26882 |2.8344 |2.9451 |10 |0.0010031 |25 |
|29 |接受|3.513 |9.9166 |2.8344 |2.9458 |499 |0.0038235 |1 |
|30 |接受|3.01 |9.915 |2.8344 |2.9461 |499 |0.011582 |1 |

__________________________________________________________优化完成。30 MaxObjectiveEvaluations达到。总功能评价:30总运行时间:159.6818秒。总目标函数评估时间:126.3662最佳观察到的可行点:NumLearningCycles LearnRate MaxNumSplits _________________ _________ ____________ 224 0.023927 1个中观察到的目标函数值= 2.8344估计目标函数值= 2.9461函数求时间= 4.448的最佳估计的可行(根据型号)点:NumLearningCycles LearnRateMaxNumSplits _________________ _________ ____________ 224 0.023927 1个估计目标函数值= 2.9461估计函数评估时间= 4.4346
MDL = classreg.learning.regr.RegressionEnsemble ResponseName: 'Y' CategoricalPredictors:[] ResponseTransform: '无' NumObservations:94个HyperparameterOptimizationResults:[1×1 BayesianOptimization] NumTrained:224方法: 'LSBoost' LearnerNames:{ '树'} ReasonForTermination:“完成训练周期的请求的数目后正常结束”。FitInfo:[224×1双] FitInfoDescription:{2×1细胞}正则化:[]的属性,方法

对比损失一个提振,未优化模型,并默认合奏。

损耗= kfoldLoss(crossval(MDL,'kfold',10))
损耗= 19.7084
MDL2 = fitrensemble(X,Y,...'方法''LSBoost'...'学习者',templateTree(“代孕”'上'));loss2 = kfoldLoss(crossval(MDL2,'kfold',10))
loss2 = 30.9569
Mdl3 = fitrensemble(X,Y);loss3 = kfoldLoss(crossval(Mdl3,'kfold',10))
loss3 = 38.0049

为了优化该乐团以不同的方式,请参阅优化回归集成使用交叉验证