此示例显示如何使用量程误差来实现贝叶斯优化以调整回归树随机森林的超级参数。使用定量位错误调整模型,而不是均值平方错误,如果您计划使用该模型以预测条件量数而不是条件手段,则是合适的。
加载Carsmall.
数据集。考虑到预测给予其加速度,汽缸,发动机排量,马力,制造商,车型年份和重量数的汽车的平均燃油经济性的典范。考虑气瓶
那MFG.
,和model_year.
作为分类变量。
加载Carsmall.气缸=分类(缸);MFG =分类(cellstr(MFG));Model_Year =分类(Model_Year);X =表(加速度,缸,排气量,马力,厂家批号,......model_year,重量,mpg);RNG('默认');重复性的%
考虑调整:
在森林中的树木的复杂性(深度)。深树倾向于过度拟合,而浅的树木往往underfit。因此,指定每个叶观测的最小数量为至多20。
当生长的树木,预测器的数目在每个节点处采样。通过指定所有预测的从1个采样。
bayesopt
,该功能实现贝叶斯优化,需要你通过这些规范作为优化的不变性
对象。
maxminls = 20;MINLS =优化不变('迷你',[1,maxMinLS]“型”那'整数');numpts =优化不变('numpts',[1,尺寸(X,2)-1],“型”那'整数');hyperparametersRF = [minLS;量numPts];
hyperparametersRF
是一个2×1阵列的优化的不变性
对象。
你也应该考虑调整在合奏的树木数量。bayesopt
倾向于选择含有多种树,因为有更多的学生合唱团更准确的随机森林。如果可用的计算资源是一个考虑因素,和你喜欢用更少的树,然后再考虑与其他参数单独调整树木的数量或惩罚含有许多学习者模型合奏。
定义贝叶斯优化算法来优化目标函数。该函数应该:
接受的参数来调整作为输入。
利用训练随机森林TreeBagger
。当TreeBagger
调用,指定参数来调整,指定返回了球袋的指标。
基于中位数估计袋袋的量子误差。
返回了球袋中位数错误。
功能oobErr = oobErrRF(PARAMS,X)%oobErrRF列车随机森林,并估计出球袋位数错误%Ooberr使用300个回归树的随机森林培训在X%预测值数据和在PARAMS参数规范,然后%返回基于中位数从球袋位数错误。X是表%,而params是OptimizableVariable对象数组对应于%在每个节点处的最小叶片大小和预测到样品的数目。随机森林= TreeBagger(300,X,'MPG'那'方法'那'回归'那......'OOBPrediction'那'开'那'MinLeafSize',params.minLS,......'NumPredictorstoSample',params.numPTS);oobErr = oobQuantileError(随机森林);结束
找到模型与利用贝叶斯优化每个节点对于树的复杂性和预测到样品的数量达到最小,处罚,乱袋位数错误。指定的期望改善加功能的采集功能,抑制打印优化信息。
结果= Bayesopt(@(params)Ooberrrf(params,x),hyperparametersrf,......'获取功能名称'那'预期改善加'那'verbose',0);
结果
是A.贝叶斯偏见
其中包含目标函数的最小值和优化的超参数值的对象。
显示观察到的目标函数和优化的超参数值。
bestOOBErr = results.MinObjective bestHyperparameters = results.XAtMinObjective
bestOOBErr = 1.0890 bestHyperparameters = 1×2表minLS _____量numPts ______ 7 7
使用整个数据集和优化的超参数值培训随机林。
mdl = treebagger(300,x,'MPG'那'方法'那'回归'那......'MinLeafSize',besthyperparameters.minls,......'NumPredictorstoSample',bestHyperparameters.numPTS);
MDL.
是TreeBagger
对象值预测优化。可以预测平均燃油经济性将通过特定的预测数据MDL.
和新数据到quantilePredict
。
bayesopt
|oobQuantileError
|优化的不变性
|TreeBagger
|TreeBagger