sklearn中随机森林和梯度提升树的一维回归比较

随机森林和梯度提升树都是集成评估器,它们由许多基评估器组成,而两种集成评估器的训练模式有所不同,前者是独立训练多个基评估器,基于它们结果的平均做出最终评价;后者则在每次训练中有所侧重,目的是降低集成评估器的偏差,最终将多个较弱的基评估器整合成一个强大的集成评估器

数据准备

此次演示用到的数据为一个普通的正弦函数变换,构造如下:

import numpy as np
x = np.linspace(0, 6, 100)
y = np.sin(x) + np.sin(6*x)

sklearn中随机森林和梯度提升树的一维回归比较

评估器的导入、训练与预测

这里调用sklearn库中的三个回归模型,依次为 DecisionTreeRegressor, AdaboostRegressor(以决策树回归器为基评估器), RandomForestRegressor

from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
regr_1 = DecisionTreeRegressor(max_depth=4)
regr_2 = AdaBoostRegressor(
    DecisionTreeRegressor(max_depth=4), n_estimators=300
)
regr_3 = RandomForestRegressor(max_depth = 4,n_estimators=300)

这里不对模型的参数做过多调整。

下面让模型对原数据直接进行拟合,并进行直接预测。

regr_1.fit(x.reshape(-1,1), y)
regr_2.fit(x.reshape(-1,1), y)
regr_3.fit(x.reshape(-1,1), y)

y_1 = regr_1.predict(x.reshape(-1,1))
y_2 = regr_2.predict(x.reshape(-1,1))
y_3 = regr_3.predict(x.reshape(-1,1))

注意sklearn对特征变量和标签变量的维度要求。

为了后续更好地比较,这里使用三种模型默认的评分方法获得相应评分。

scores = []
for i in [regr_1,regr_2,regr_3]:
    scores.append(i.score(x.reshape(-1,1), y))
scores = np.array(scores).round(2)

评估器拟合效果展示

为了展示评估器的拟合与预测效果,这里将其预测结果和原始真值进行一并展示,如下图所示。

sklearn中随机森林和梯度提升树的一维回归比较
每个子图的表达含义与图标题相应。先由左侧汇总图可知,三种训练好的回归器对函数值的预测均有效,但各预测效果各不相同。右侧子图1(中上方子图)展示的是真实值分布,没啥实际意义,放过来起到对比作用,让图片美观。
右侧子图2(右上方子图)展示的是decision tree的预测结果,可以发现decision tree的预测结果很不灵敏,且预测效果较为保守,其预测的最值与真实值的最值有着一定距离。
右侧子图3(中下方子图)展示的是adaboost tree的预测结果,可以发现其预测效果相对单一的decision tree好了很多,明显更加灵敏,波动性更好。但是,其关于最值的预测还是有所欠缺。
右侧子图4展示的是random forest的预测结果,可以发现其预测效果处于decision tree 和adaboost tree之间,相对adaboost tree和decision tree,random forest的预测结果显得更加保守,距离最值有相当距离,但比decision tree 进行了更多的细节拟合(表现为更加平滑)。
此外,右侧子图2,3,4分别在图例下添加了模型得分,可以看见adaboost tree 的得分最高,达到0.97(满分为1),decision tree仅有0.86。

; 总结

此次演示使用的方法较为粗糙,许多处理工作没有涉及,如:变量噪声的设置、数据集的划分、模型的验证、参数的调试、重复训练等等。其背后内容可以展开很多,但该博客均没有涉及。目的是直接比较特定情况下,两种集成评估器的应用效果。从结果来看,相同的基评估器数量(300),相同的深度(随机森林的深度和梯度提升树的深度含义可能有所差异)下,梯度提升树的效果是较优的。

关于后来:
在2022国庆期间,会更新在实际数据集上训练集成评估器,并进行相应的预测与评估

Original: https://blog.csdn.net/GuFeng1999/article/details/127095820
Author: 心事寄于秋
Title: sklearn中随机森林和梯度提升树的一维回归比较

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/635560/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球