决策树回归模型

决策树回归是一种监督学习算法,它能够预测连续的数值型数据。在本文中,将探讨如何使用决策树回归模型来预测一个带有噪声的圆圈数据集。通过调整决策树的最大深度参数,可以观察到模型对数据的拟合程度以及是否出现过拟合现象。

决策树通过递归地分割数据集来构建模型,每个分割点都是基于特征值的决策规则。这个过程会一直进行,直到达到预设的最大深度或者数据集不能再被进一步分割。最大深度参数(max_depth)是控制决策树复杂度的关键因素,它决定了树的层数,从而影响模型的泛化能力。

在实际应用中,如果最大深度设置得过高,决策树可能会捕捉到训练数据中的噪声,导致模型过拟合。过拟合的模型在训练集上表现良好,但在新的、未见过的数据上表现较差。因此,合理选择最大深度是构建有效决策树回归模型的关键。

为了展示决策树回归模型的效果,使用Python编程语言和scikit-learn库来实现。首先,生成一个随机数据集,模拟带有噪声的圆圈数据。然后,创建三个不同的决策树回归模型,分别设置不同的最大深度参数,并训练这些模型。最后,使用这些模型来预测数据,并绘制出预测结果的图形。

import matplotlib.pyplot as plt import numpy as np from sklearn.tree import DecisionTreeRegressor # 创建一个随机数据集 rng = np.random.RandomState(1) X = np.sort(200 * rng.rand(100, 1) - 100, axis=0) y = np.array([np.pi * np.sin(X).ravel(), np.pi * np.cos(X).ravel()]).T y[::5, :] += 0.5 - rng.rand(20, 2) # 拟合回归模型 regr_1 = DecisionTreeRegressor(max_depth=2) regr_2 = DecisionTreeRegressor(max_depth=5) regr_3 = DecisionTreeRegressor(max_depth=8) regr_1.fit(X, y) regr_2.fit(X, y) regr_3.fit(X, y) # 预测 X_test = np.arange(-100.0, 100.0, 0.01)[:, np.newaxis] y_1 = regr_1.predict(X_test) y_2 = regr_2.predict(X_test) y_3 = regr_3.predict(X_test) # 绘制结果 plt.figure() s = 25 plt.scatter(y[:, 0], y[:, 1], c="navy", s=s, edgecolor="black", label="数据") plt.scatter(y_1[:, 0], y_1[:, 1], c="cornflowerblue", s=s, edgecolor="black", label="max_depth=2") plt.scatter(y_2[:, 0], y_2[:, 1], c="red", s=s, edgecolor="black", label="max_depth=5") plt.scatter(y_3[:, 0], y_3[:, 1], c="orange", s=s, edgecolor="black", label="max_depth=8") plt.xlim([-6, 6]) plt.ylim([-6, 6]) plt.xlabel("目标1") plt.ylabel("目标2") plt.title("多输出决策树回归") plt.legend(loc="best") plt.show()

通过上述代码,可以看到不同最大深度参数下的决策树回归模型对数据的预测效果。在图形中,原始数据点用蓝色表示,而不同深度的决策树预测结果分别用不同颜色表示。通过比较这些图形,可以直观地观察到模型的过拟合现象,并据此调整模型参数以达到更好的预测效果。

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