提升决策树回归模型

机器学习领域,回归问题是指预测一个连续的数值输出。提升方法是一种强大的技术,它通过组合多个弱学习器来创建一个强学习器。本文将探讨如何使用提升决策树回归模型来提高预测精度,并与单个决策树回归模型进行比较。

数据准备

首先,准备了一个包含正弦波关系的模拟数据集,并加入了少量的高斯噪声。这种类型的数据集非常适合用来展示提升方法的效果,因为正弦波关系本身具有一定的复杂性,而噪声的存在则增加了模型学习的难度。

import numpy as np rng = np.random.RandomState(1) X = np.linspace(0, 6, 100)[:, np.newaxis] y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])

在上述代码中,首先导入了必要的库,并设置了随机数生成器的种子,以确保结果的可重复性。然后,使用numpy库生成了100个介于0到6之间的数据点,并将其扩展为二维数组。接着,计算了这些数据点的正弦值,并加入了一些高斯噪声,以模拟真实世界中的观测误差。

模型训练与预测

接下来,定义了两个回归模型:一个是单个决策树回归模型,另一个是使用300个决策树作为基学习器的提升回归模型。使用相同的数据集来训练这两个模型,并在相同的数据集上进行预测,以比较它们的性能。

from sklearn.ensemble import AdaBoostRegressor from sklearn.tree import DecisionTreeRegressor regr_1 = DecisionTreeRegressor(max_depth=4) regr_2 = AdaBoostRegressor(DecisionTreeRegressor(max_depth=4), n_estimators=300, random_state=rng) regr_1.fit(X, y) regr_2.fit(X, y) y_1 = regr_1.predict(X) y_2 = regr_2.predict(X)

在这段代码中,首先导入了所需的库,并定义了两个回归模型。第一个模型是一个决策树回归模型,设置了最大深度为4,以防止过拟合。第二个模型是一个提升回归模型,使用了300个决策树作为基学习器,并设置了随机数生成器的种子。然后,使用fit方法来训练这两个模型,并使用predict方法来进行预测

结果可视化

最后,使用matplotlib库来绘制这两个模型的预测结果,以便直观地比较它们的性能。绘制了原始数据点,并用不同的颜色表示了两个模型的预测曲线。

import matplotlib.pyplot as plt import seaborn as sns colors = sns.color_palette("colorblind") plt.figure() plt.scatter(X, y, color=colors[0], label="训练样本") plt.plot(X, y_1, color=colors[1], label="n_estimators=1", linewidth=2) plt.plot(X, y_2, color=colors[2], label="n_estimators=300", linewidth=2) plt.xlabel("数据") plt.ylabel("目标") plt.title("提升决策树回归") plt.legend() plt.show()

在这段代码中,首先导入了matplotlib和seaborn库,并设置了颜色方案。然后,使用scatter方法绘制了原始数据点,并使用plot方法绘制了两个模型的预测曲线。为每个曲线设置了不同的颜色和标签,以便区分。最后,设置了图表的标题和坐标轴标签,并使用show方法显示了图表。

通过比较单个决策树回归模型和提升回归模型的预测结果,可以发现提升回归模型能够更好地捕捉数据中的复杂关系,从而提供更准确的预测。这表明提升方法是一种有效的技术,可以用来提高回归模型的性能。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485