拓端tecdat|基于贝叶斯模型的随机森林预测方法分析汽车燃油经济性 加载和预处理数据 指定调整参数 定义目标函数 使用贝叶斯优化实现目标最小化 使用优化的超参数训练模型

原文链接:http://tecdat.cn/?p=23075 

原文出处:拓端数据部落公众号

这个例子展示了如何用Matlab实现贝叶斯优化,使用分位数误差调整回归树随机森林的超参数。如果你打算使用模型来预测条件量值而不是条件平均值,那么使用分位数误差而不是平均平方误差来调整模型是合适的。

加载数据集。考虑建立一个模型,预测一辆汽车的燃油经济性中位数,给定它的加速度、汽缸数、发动机排量、马力、制造商、型号和重量。考虑将汽缸数、制造商和型号_年份作为分类变量。 

  1.  
     
  2.  
    Cylinders = categorical(Cylinders);

拓端tecdat|基于贝叶斯模型的随机森林预测方法分析汽车燃油经济性
加载和预处理数据
指定调整参数
定义目标函数
使用贝叶斯优化实现目标最小化
使用优化的超参数训练模型

指定调整参数

考虑调整:

  • 森林中的树木的复杂性(深度)。深的树倾向于过度拟合,但浅的树倾向于欠拟合。因此,规定每片叶子的最小观测值数量最多为20。

  • 生长树时,在每个节点上要采样的预测器数量。指定从1到所有预测的采样。

实现贝叶斯优化的函数,要求你将这些参数作为优化变量对象传递。 

optim('minLS',[1,maxMinLS],'Type');

超参数随机森林是一个2乘1的优化变量对象数组

贝叶斯优化倾向于选择包含很多树的随机森林,因为具有更多学习者的合集更准确。如果可用的计算资源是一个考虑因素,并且你倾向于树数较少的合集,那么可以考虑将树的数量与其他参数分开调整,或者对含有许多学习者的模型进行惩罚。

定义目标函数

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

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

  • 使用TreeBagger训练一个随机森林。在TreeBagger调用中,指定要调整的参数并指定返回袋外指数。

  • 根据中位数估计袋外分位数误差。

  • 返回袋外数据的分位数误差。

  1.  
    function Err = RF(X)
  2.  
    %训练随机森林并估计袋外的分位数误差
  3.  
    % 使用X中的预测数据和params中的参数说明,训练一个由300棵回归树组成的随机森林,然后根据中位数返回袋外误差。X是一个表,params是一个数组,对应于每个节点的最小叶子大小和预测器数量来采样。
  4.  
    randomForest = Tree(300,X);
  5.  
    Error(randomForest);
  6.  
     

使用贝叶斯优化实现目标最小化

使用贝叶斯优化法,找到在树的复杂性和每个节点的预测因子数量方面达到最小的、惩罚的、袋外分位数误差的模型。

bayes(@(params)oobErrRF,parameters,...);

拓端tecdat|基于贝叶斯模型的随机森林预测方法分析汽车燃油经济性
加载和预处理数据
指定调整参数
定义目标函数
使用贝叶斯优化实现目标最小化
使用优化的超参数训练模型

拓端tecdat|基于贝叶斯模型的随机森林预测方法分析汽车燃油经济性
加载和预处理数据
指定调整参数
定义目标函数
使用贝叶斯优化实现目标最小化
使用优化的超参数训练模型

结果是一个BayesianOptimization对象,其中包括目标函数的最小值和优化的超参数值。

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

  1.  
    MinObjective
  2.  
    bestHyperpara

拓端tecdat|基于贝叶斯模型的随机森林预测方法分析汽车燃油经济性
加载和预处理数据
指定调整参数
定义目标函数
使用贝叶斯优化实现目标最小化
使用优化的超参数训练模型

使用优化的超参数训练模型

使用整个数据集和优化的超参数值训练一个随机森林。 

Tree(300,X,'MPG','regression',...);

Mdl是为中位数预测优化的TreeBagger对象。你可以通过将Mdl和新数据传递给quantilePredict来预测给定的预测数据的燃油经济性中值。 

拓端tecdat|基于贝叶斯模型的随机森林预测方法分析汽车燃油经济性
加载和预处理数据
指定调整参数
定义目标函数
使用贝叶斯优化实现目标最小化
使用优化的超参数训练模型


最受欢迎的见解

1.从决策树模型看员工为什么离职

2.R语言基于树的方法:决策树,随机森林

3.python中使用scikit-learn和pandas决策树

4.机器学习:在SAS中运行随机森林数据分析报告

5.R语言用随机森林和文本挖掘提高航空公司客户满意度

6.机器学习助推快时尚精准销售时间序列

7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用

8.python机器学习:推荐系统实现(以矩阵分解来协同过滤)

9.python中用pytorch机器学习分类预测银行客户流失