概述
随机森林和GBDT部分对比
一:随机森林(bagging思想)
- 通过构建决策树然后进行分类,最后选择种类比较多的类别
- 随机:随机选取固定的样本和固定的特征
- 集成学习:投票选举(民主集中制)
二:GBDT(boosting思想)
- GBDT是回归树不是分类树
- 核心在于累加所有树的结果最为最终结果
- 利用损失函数的负梯度去模拟残差,使用残差构建决策树
- 为什么使用梯度决策树而不是回归算法
1 | > 回归算法寻找参数和目标值之间存在的某种曲线关系,但是当某些特征与目标值之间无线性关系可使用梯度决策树。 |
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或空值设置为均值)
因为数据波动较大,设置为历史均值是否存在较大的参考价值。其次数据量教少直接删除也不太可取。尝试设置为近一年的均值进行测试。