主要内容

使用分位数错误和贝叶斯优化调整随机森林

这个例子展示了如何实现贝叶斯优化调整的hyperparameters随机森林回归树使用分位数错误。调优模型使用分位数错误,而不是均方误差,是合适的如果您计划使用模型来预测条件分位数,而不是条件。

加载和数据预处理

加载carsmall数据集。考虑一个模型,预测的平均燃油经济性汽车由于其加速度,缸数,发动机排量,马力,制造商,模型,和体重。考虑气缸,制造行业,Model_Year作为分类变量。

负载carsmall气缸=分类(缸);及时通知=分类(cellstr (Mfg));Model_Year =分类(Model_Year);X =表(加速、气缸、排量、马力、制造行业,Model_Year、重量、MPG);rng (“默认”);%的再现性

指定的调优参数

考虑调优:

  • 复杂性(深度)的树在森林里。深树往往over-fit,但是往往underfit浅树。因此,指定最小数量的观察每叶最多20。

  • 当越来越多的树木,预测样本在每个节点的数量。指定抽样从1到所有的预测因子。

bayesopt,实现了贝叶斯优化的功能,需要你通过这些规范optimizableVariable对象。

maxMinLS = 20;minLS = optimizableVariable (“minLS”(1,maxMinLS),“类型”,“整数”);numPTS = optimizableVariable (“numPTS”,(1,尺寸(X, 2) 1),“类型”,“整数”);hyperparametersRF = [minLS;numPTS];

hyperparametersRF是一个2×1组OptimizableVariable对象。

您还应该考虑调整合奏的树的数量。bayesopt倾向于选择随机森林包含许多树木因为乐团与更多的学习者更准确。如果考虑可用的计算资源,和你喜欢乐团与更少的树,然后再考虑调整树的数量与其他参数分开或惩罚模型包含许多学习者。

定义目标函数

定义一个贝叶斯优化算法优化目标函数。这个函数应该:

  • 接受调整的参数作为输入。

  • 训练随机森林使用TreeBagger。在TreeBagger电话,指定参数优化和指定返回out-of-bag指数。

  • 基于中值估计out-of-bag分位数错误。

  • 返回out-of-bag分位数错误。

函数oobErr = oobErrRF (params, X)% oobErrRF训练随机森林和out-of-bag分位数估计错误% oobErr火车300年随机森林回归树使用%在X和预测数据参数的参数规格,然后%返回out-of-bag基于中值分位数的错误。X是一个表%和params OptimizableVariable对象数组对应%的最小叶大小和数量预测样本在每个节点。randomForest = TreeBagger (300 X,“英里”,“方法”,“回归”,“OOBPrediction”,“上”,“MinLeafSize”params.minLS,“NumPredictorstoSample”,params.numPTS);oobErr = oobQuantileError (randomForest);结束

减少使用贝叶斯优化目标

找到模型实现最小、处罚、out-of-bag分位数错误对树的复杂性和数量的预测样本在每个节点使用贝叶斯优化。指定预期的改进+函数作为采集功能和抑制印刷优化信息。

结果= bayesopt (@ (params) oobErrRF (params, X), hyperparametersRF,“AcquisitionFunctionName”,“expected-improvement-plus”,“详细”,0);

结果是一个BayesianOptimization对象包含,除此之外,最小的目标函数和优化hyperparameter值。

显示观察到的最小的目标函数和优化hyperparameter值。

bestOOBErr =结果。MinObjective bestHyperparameters = results.XAtMinObjective
bestOOBErr = 1.0890 bestHyperparameters = 1×2表minLS numPTS专攻7 7

使用优化Hyperparameters火车模型

使用整个数据集训练随机森林和优化hyperparameter值。

Mdl = TreeBagger (300 X,“英里”,“方法”,“回归”,“MinLeafSize”bestHyperparameters.minLS,“NumPredictorstoSample”,bestHyperparameters.numPTS);

MdlTreeBagger对象优化值的预测。你可以预测平均燃油经济性通过给定的预测数据Mdl和新数据quantilePredict

另请参阅

|||

相关的话题