sklearn 随机森林_sklearn之XGBoost(1)

我是谁?布鲁

590f3b8807fbfd24e0c143cc26fd9105.png

XGBoost,极限梯度提升树,致力于让提升树突破自身的计算极限,以实现运算快速,性能优秀的工程目标。

方法1:用XGBoost库的建模流程

92540d3a2033103fbec63abadb15bfee.png

方法2:用xgboost库中的sklearn的API

可以调用sklearn中惯例的实例化,fit和predict的流程来运行XGBoost,并且也可以调用属性比如coef_等等。

比较:使用xgboost中设定的建模流程来建模,和使用sklearnAPI中的类来建模,模型效果相似,但是xgboost库本身的运算速度(尤其是交叉验证)以及调参手段比sklearn要简单。

XGBoost的三大板块

b527a23d0fb64d1046b75d22a398d836.png

梯度提升树

集成算法通过在数据上构建多个弱评估器,汇总所有弱评估器的建模结果,以获取比单个模型更好的回归或分类表现。弱评估器被定义为是表现至少比随机猜测更好的模型,即预测准确率不低于50%的任意模型。多以cart树为基础。

梯度提升树,每次构建一棵树,每棵树依赖于前一棵树构建,树与树之间是相关的,最后的预测结果是每棵树预测结果的加权求和。

XGBoost和GBDT的区别:GBDT中预测值是由所有弱分类器上的预测结果的加权求和,其中每个样本上的预测结果就是样本所在的叶子节点的均值。而XGBT中的预测值是所有弱分类器上的叶子权重直接求和得到,计算叶子权重是一个复杂的过程。

参数:树的数量、是否打印

fbd753815067106edeeae195a3f89350.png

XGBoost实战

导入库、数据集

5bff410daf8f9ee242c7874bfacb8d3f.png

建模,查看接口和属性

9790d26c2dc8778317308dd4e94d6891.png

交叉验证,XGBoost与线性回归、随机森林回归对比

发现XGBoost与随机森林相差很小,但XGBoost略优,线性回归表现最差,如果数据再复杂一些XGBoost的优势将会更加明显

XGBoost

37cd507a78421446994e6c5462ff5d26.png

随机森林

f70b4e1d09c70ebdb6846a31e3407a1c.png

线性回归

a5e9d3d2afe97e1e09e239d33a7560dd.png

定义绘制以训练样本数为横坐标的学习曲线的函数,可以看到结果是过拟合的。应该把训练集和测试集的结果调的差不多

3c4f0ca12cdd296b13ade60a4429192e.png

0f3de55a0a75bcad002fb1462aebea08.png

25f159101cde6778bb8dd38bacfe3c09.png

调参,n_estimators,根据结果,660棵树得到的结果最好,但不需要用到这么多,只需要取拐点位置便可。

e964517c04c2e660b3908b796d2f6717.png

以上计算的r2只是计算了模型的偏差而已,在计算泛化误差时,既需要考虑偏差还需要同时考虑方差和随机误差

fbc568c5302be3e6cf85e361067fa2e5.png

因而需要重新定义学习曲线,以泛化误差的大小来绘制学习曲线,找到最优参数。

以往直接取学习曲线获得的分数的最高点,也就是考虑偏差最小的点,是因为模型不稳定方差很大的情况比较少见。但在数据量非常少,模型会相对不稳定,因此需要将方差也纳入考虑的范围。

通过找到最小的泛化误差,找到最优的参数n_estimators

0e40986e4e7a0a8f5dbce3f2f4435586.png

找到相对位置150后,细化继续搜索[100,300],基本代码和之前是一样的。

f46e045ad66b9ce5ec04dc069ac5308c.png

对比几次调参结果,时间和准确率

349bc3e42593f455bdc5729002ef7619.png

总结:

第一,XGBoost中树的数量决定了模型的学习能力,树越多,模型学习能力越强,并且XGBoost天生就是过拟合的模型。但数据较少时,模型会变得不稳定;第二,刚开始树增加会很快提高准确率,但到一定限度后增加树提高的准确率很少,并且浪费计算资源;第三,和随机森林不同,随机森林一般会先单调n_estimators,再调其他参数,因为树的数量和准确率是单调递增的,但XGBoost一味的增加树可能会让模型效果反而变差,可能需要与其他参数一起进行网格搜索,但第一个需要调的参数还是n_estimators,一般建议300以下为佳。

参数:有放回随机抽样:subsample,控制自助法抽取的量0-1之间,第一次随机抽样,第二次给对第一次分错的样本权重加大进行抽样,直到第k次抽样,建立第k棵树

f4015754b18d4496ba9e166d56ae2ffb.png

subsample参数通常是在样本量本身很大的时候来调整和使用,如果数据本来就比较少,还用subsample,数据更少了,就更容易过拟合了。

先全范围搜索,间隔较大

12b50692a18732356a785b46714b2a9e.png

再细化搜索,并且同时绘制偏差、方差、泛化误差3条线

55dc17f94861aa38a64f0521d1781482.png

172d969c27ded32e68235d38e51191b4.png

最终发现,最优的点在1时取到,即在默认值。

参数eta

把找到下一棵树转化为最优化问题,以迭代的方式找到所有树。

7cdd45d953843b84ef54d30916beb789.png

因此与梯度下降一样,GBDT也有学习率,也就是eta

f094ca44d05ca0674453559ebf9530c1.png

评分函数比较不同指标

4a011d5fcd872a5a568156fd3cc1b4de.png

分别比较学习率为0,0.2,0.5,1情况下,r2和负均方误差。

d878b6ee765e47e02fc53858ceeb8060.png

一般学习率不太需要调整,在[0.01,0.2]之间,默认0.1情况比较理想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值