ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【scikit-learn基础】--『监督学习』之 决策树回归 [打印本页]

作者: 莫张周刘王    时间: 2024-3-16 10:07
标题: 【scikit-learn基础】--『监督学习』之 决策树回归
决策树算法是一种既可以用于分类,也可以用于回归的算法。
决策树回归是通过对输入特征的不断划分来建立一棵决策树,每一步划分都基于当前数据集的最优划分特征。
它的目标是最小化总体误差或最大化预测精度,其构建通常采用自上而下的贪心搜索方式,通过比较不同划分标准来选择最优划分。
决策树回归广泛应用于各种回归问题,如预测房价、股票价格、客户流失等。
1. 算法概述

决策树相关的诸多算法之中,有一种CART算法,全称是 classification and regression tree(分类与回归树)。
顾名思义,这个算法既可以用来分类,也可以用来回归,本篇主要介绍其在回归问题上的应用。
决策树算法的核心在于生成一棵决策树过程中,如何划分各个特征到树的不同分支上去。
CART算法是根据基尼系数(Gini)来划分特征的,每次选择基尼系数最小的特征作为最优切分点。
其中基尼系数的计算方法:\(gini(p) = \sum_{i=1}^n p_i(1-p_i)=1-\sum_{i=1}^n p_i^2\)
2. 创建样本数据

这次的回归样本数据,我们用 scikit-learn 自带的玩具数据集中的糖尿病数据集
关于玩具数据集的内容,可以参考:TODO
  1. from sklearn.datasets import load_diabetes
  2. # 糖尿病数据集
  3. diabetes = load_diabetes()
  4. X = diabetes.data
  5. y = diabetes.target
复制代码
这个数据集中大约有400多条数据。
3. 模型训练

训练之前,为了减少算法误差,先对数据进行标准化处理。
  1. from sklearn import preprocessing as pp
  2. # 数据标准化
  3. X = pp.scale(X)
  4. y = pp.scale(y)
复制代码
接下来分割训练集测试集
  1. from sklearn.model_selection import train_test_split
  2. # 分割训练集和测试集
  3. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)
复制代码
然后用scikit-learn中的DecisionTreeRegressor模型来训练:
  1. from sklearn.tree import DecisionTreeRegressor
  2. # 定义决策树回归模型
  3. reg = DecisionTreeRegressor(max_depth=2)
  4. # 训练模型
  5. reg.fit(X_train, y_train)
  6. # 在测试集上进行预测
  7. y_pred = reg.predict(X_test)
复制代码
DecisionTreeRegressor的主要参数包括:
最后验证模型的训练效果:
  1. from sklearn import metrics
  2. # 在测试集上进行预测
  3. y_pred = reg.predict(X_test)
  4. mse, r2, m_error = 0.0, 0.0, 0.0
  5. y_pred = reg.predict(X_test)
  6. mse = metrics.mean_squared_error(y_test, y_pred)
  7. r2 = metrics.r2_score(y_test, y_pred)
  8. m_error = metrics.median_absolute_error(y_test, y_pred)
  9. print("均方误差:{}".format(mse))
  10. print("复相关系数:{}".format(r2))
  11. print("中位数绝对误差:{}".format(m_error))
  12. # 运行结果
  13. 均方误差:0.5973573097746598
  14. 复相关系数:0.5153160857515913
  15. 中位数绝对误差:0.5496418600646286
复制代码
从预测的误差来看,训练的效果还不错
这里用DecisionTreeRegressor训练模型时使用了参数max_depth=2,
我从max_depth=1逐个尝试到了max_depth=10,发现max_depth=2时误差最小。
4. 总结

决策树回归具有直观、易于理解、易于实现等优点。
生成的决策树可以直观地展示出输入特征与输出结果之间的关系,因此对于非专业人士来说也易于理解。
此外,决策树回归算法相对简单,易于实现,且对数据的预处理要求较低。
然而,决策树回归也存在一些缺点。
首先,它容易过拟合训练数据,特别是当训练数据量较小时;
其次,决策树的性能受划分标准选择的影响较大,不同的划分标准可能会导致生成的决策树性能差异较大;
此外,决策树回归在处理大规模数据时可能会比较耗时,因为需要遍历整个数据集进行训练和预测。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4