0%

随机森林和梯度决策树(GBDT)

概述

随机森林和GBDT部分对比

一:随机森林(bagging思想)

  • 通过构建决策树然后进行分类,最后选择种类比较多的类别
  • 随机:随机选取固定的样本和固定的特征
  • 集成学习:投票选举(民主集中制)

二:GBDT(boosting思想)

  • GBDT是回归树不是分类树
  • 核心在于累加所有树的结果最为最终结果
  • 利用损失函数的负梯度去模拟残差,使用残差构建决策树
  • 为什么使用梯度决策树而不是回归算法
1
2
> 回归算法寻找参数和目标值之间存在的某种曲线关系,但是当某些特征与目标值之间无线性关系可使用梯度决策树。
> 梯度决策树是讲特征拟化成数值分类回归最佳结果。

2.1 参数说明

class sklearn.ensemble.GradientBoostingRegressor(loss='ls', learning_rate=0.1, n_estimators=100, subsample=1.0, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, init=None, random_state=None, max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, presort='auto')

  • n_estimators:指GBR使用的学习算法的数量。通常,如果你的设备性能更好,可以把n_estimators设置的更大,效果也会更好。

  • max_depth:应该在优化其他参数之前先调整max_depth参数。因为每个学习算法都是一颗决策树,max_depth决定了树生成的节点数。选择合适的节点数量可以更好的拟合数据,而更多的节点数可能造成拟合过度。

  • loss:loss参数决定损失函数,也直接影响误差。默认值为ls,表示最小二乘法(least squares)。还有最小绝对值差值,Huber损失和分位数损失(quantiles)等等。

  • learning_rate:学习率

2.1.1 参数调整

Grid Search来选择性能表现最好的超参数

https://zhuanlan.zhihu.com/p/55524425

在Gradient Boosting Regressor 模型中,有一些独立的参数最好是手动调整。

超参数主要使用了:

  • n_estimators=2000,
  • learning_rate=0.01,
  • max_depth=15,
  • max_features=’sqrt’,
  • min_samples_leaf=10,
  • min_samples_split=10,
  • loss=’ls’,
  • random_state =42)

2.2 负荷预测程序说明记录

1. 误差偏大的处理方法

误差偏大的原因:缺失值处理不当(0或空值设置为均值)

因为数据波动较大,设置为历史均值是否存在较大的参考价值。其次数据量教少直接删除也不太可取。尝试设置为近一年的均值进行测试。