决策树分支也那么多?!放弃!!emmm...算了,坚持一下吧。。。


大家好,我是kk,今儿来聊聊关于决策树回归的一些理论和案例 !
决策树回归是一种基于树结构的回归方法,通过构建一棵决策树,来对连续型变量进行预测。决策树回归的目标是通过对输入数据进行划分,使得每个叶节点上的数据的输出值的方差最小。
在构建决策树的过程中,决策树回归算法通过选择最优划分特征和划分点,使得每个叶节点上的数据的方差最小,从而实现回归预测。
案例
假设我们有一组关于房屋价格的数据,其中包括房屋的面积和售价。我们希望通过决策树回归模型来预测给定房屋的价格。
首先,我们需要导入必要的库和模块,并生成一组示例数据。
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.tree import DecisionTreeRegressor# 生成示例数据np.random.seed(0)X = np.sort(5 * np.random.rand(80, 1), axis=0)y = np.sin(X).ravel()y[::5] += 3 * (0.5 - np.random.rand(16))
接下来,我们将数据集划分为训练集和测试集,并创建一个决策树回归模型。
# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)# 创建决策树回归模型regressor = DecisionTreeRegressor(max_depth=2, random_state=0)
然后,我们使用训练集训练模型,并使用测试集进行预测。
# 训练模型regressor.fit(X_train, y_train)# 预测y_pred = regressor.predict(X_test)
最后,我们可以将预测结果与真实值进行可视化比较。
# 可视化比较plt.scatter(X, y, c="k", label="data")plt.plot(X_test, y_pred, c="g", label="prediction")plt.xlabel("data")plt.ylabel("target")plt.title("Decision Tree Regression")plt.legend()plt.show()

代码解释
首先,我们导入所需的库和模块,包括NumPy用于数值计算,Pandas用于数据处理,Matplotlib用于作图,train_test_split用于划分训练集和测试集,DecisionTreeRegressor用于创建决策树回归模型。
然后,我们生成示例数据,其中包括一个特征X和相应的目标变量y。
接下来,我们将数据集划分为训练集和测试集,其中训练集占比为75%。
创建一个决策树回归模型,并指定最大深度为2。
使用训练集训练模型。
使用测试集进行预测,得到预测结果y_pred。
最后,我们将原始数据集和预测结果可视化比较,其中原始数据用黑色点表示,预测结果用绿色线表示。
公式推导
决策树回归的目标是通过对输入数据进行划分,使得每个叶节点上的数据的输出值的方差最小。我们可以使用平方误差作为衡量标准。
假设数据集D包含n个样本,每个样本的特征向量为
,对应的输出值为
,我们的目标是构建一棵决策树
,使得每个叶节点上的样本的输出值的平方误差最小。
设某个叶节点的样本集合为
,其中包含的样本的输出值为
,我们可以计算该叶节点的输出值的平均值
。平方误差可以定义为:
在决策树回归过程中,我们通过选择最优的划分特征和划分点来最小化平方误差。
划分特征的选择可以使用基尼指数(Gini Index)或信息增益(Information Gain)等准则,划分点的选择可以使用最小平方误差(MSE)等准则。在具体的实现中,常用的是基于最小平方误差的CART算法。
以上就是决策树回归的完整实际案例。
感觉有用的同学,记得点个赞就好~ 
       
到顶部