完整教程:机器学习——决策树(DecisionTree)

🏷️ 365bet网上娱乐网址 📅 2026-07-02 12:39:38 👤 admin 👁️ 8271 ❤️ 679
完整教程:机器学习——决策树(DecisionTree)

决策树(Decision Tree)详解:原理、构建、剪枝与实践在机器学习算法中,决策树(Decision Tree)是一种经典、直观且易于解释的监督学习方式。它模拟人类的思维过程,通过“是/否”问题逐步将数据划分,最终形成一棵可以用于分类或回归的“树”。

本文将系统介绍决策树的核心原理、构建流程、剪枝技巧、优缺点以及代码实践。

决策树?就是一、什么决策树是一种树形结构模型,每个内部节点表示对一个特征的判断,每个分支代表判断结果,每个叶子节点表示一个类别或预测值。

用于分类任务:称为分类树(Classification Tree)

用于回归任务:称为回归树(Regression Tree)

二、决策树的核心思想构建决策树的核心是:选择最佳特征将样本空间划分得最“纯净”。常见的划分标准有:

划分准则用途描述信息增益(ID3)分类衡量划分后信息的不确定性减少了多少信息增益比(C4.5)分类解决ID3偏好多值特征的问题基尼指数(Gini Index,CART)分类衡量节点的不纯度均方差(MSE)回归衡量预测值与真实值之间的误差三、决策树的构建过程以分类树为例,整体流程如下:

选择最优划分特征:根据信息增益、基尼指数等指标

节点划分素材集

对每个子集递归调用决策树构建算法

设置停止条件:

达到最大深度

节点样本数量小于阈值

所有样本标签相同

四、剪枝(Pruning):防止过拟合决策树容易过拟合训练集,为了提高泛化能力,需要剪枝:

✅ 预剪枝(Pre-pruning)在构建过程中提前停止划分,例如:

最大深度限制(max_depth)

最小样本分裂数(min_samples_split)

最小叶子节点样本数(min_samples_leaf)

后剪枝(Post-pruning)先生成整棵树,再自底向上剪去一些子树。例如:

使用验证集判断剪枝效果

成本复杂度剪枝(Cost Complexity Pruning)

五、决策树的优缺点✅ 优点简便直观,容易理解

不得特征标准化

可处理离散和连续特征

对缺失值不敏感

可用于分类与回归

❌ 缺点容易过拟合

对小样本内容不稳定

对类别不平衡敏感

可解释性好但精度可能不如集成方法(如随机森林、XGBoost)

六、决策树实战代码(分类)品种 (三个品种共150条)花萼长度(cm)花萼宽度(cm)花瓣长度(cm)花瓣宽度(cm)山鸢尾(Iris-setosa)*50条5.13.51.40.2变色鸢尾(Iris-versicolor)*50条7.03.24.71.4维吉尼亚鸢尾(Iris-virginica)*50条6.33.36.02.5

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.tree import DecisionTreeClassifier

from sklearn.metrics import classification_report

from sklearn import tree

import matplotlib.pyplot as plt

# 1. 加载数据(以鸢尾花为例)

from sklearn.datasets import load_iris

iris = load_iris()

X = iris.data

y = iris.target

# 2. 拆分训练集与测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 3. 创建并训练模型

clf = DecisionTreeClassifier(criterion='gini', max_depth=3, random_state=0)

clf.fit(X_train, y_train)

# 4. 预测与评估

y_pred = clf.predict(X_test)

print(classification_report(y_test, y_pred))

# 5. 可视化树结构

plt.figure(figsize=(10,6))

tree.plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)

plt.show()

全是1.00,因为数据导致而已

七、超参数说明(分类器)参数名类型默认值说明criterionstrgini划分标准:

• 'gini':基尼不纯度(CART)

• 'entropy':信息增益(ID3)

splitterstrbest分裂策略:

• 'best':贪婪地选择最优分裂

• 'random':在特征的随机子集上选择

max_depthint or NoneNone树的最大深度,限制深度可能防止过拟合min_samples_splitint or float2内部节点再划分所需的最小样本数(整数或比例)min_samples_leafint or float1叶子节点所需的最小样本数(整数或比例)min_weight_fraction_leaffloat0.0每个叶子节点所需的最小权重比例(对样本加权时有用)max_featuresint, float, str, or NoneNone每次分裂考虑的最大特征数

• int:具体数量

• float:比例

• 'sqrt':√特征数

• 'log2':log2(特征数)

max_leaf_nodesint or NoneNone限制叶节点总数,控制模型复杂度min_impurity_decreasefloat0.0节点划分的最小信息增益,低于则不分裂参数名类型默认值说明random_stateint or NoneNone随机数种子,确保结果可复现class_weightdict, 'balanced', or NoneNone类别权重设置,常用于处理类别不平衡

• 'balanced':自动按频率反比调整

参数名类型默认值说明ccp_alphafloat0.0成本复杂度剪枝参数(Cost Complexity Pruning)

• 大于 0 时会自动剪枝,推荐配合交叉验证调参

八、应用场景客户流失预测

信贷风险评估

疾病诊断

销售策略优化

决策支持系统

九、与其它模型的对比模型可解释性性能是否易过拟合决策树⭐⭐⭐⭐⭐⭐容易随机森林⭐⭐⭐⭐⭐⭐不易支持向量机⭐⭐⭐⭐⭐⭐适中神经网络⭐⭐⭐⭐⭐⭐可能十、总结决策树是一个适合入门的机器学习模型,其直观性和解释能力在很多实际场景中都有广泛应用。虽然它存在过拟合等问题,但通过剪枝或集成方法(如随机森林、XGBoost)行有效改进。

学会决策树,不仅能加深对机器学习本质的理解,也为进一步掌握集成学习打下了坚实基础!

相关内容

饿了么外卖和美团外卖的2024年的全方面数据对比
365bet网上娱乐网址

饿了么外卖和美团外卖的2024年的全方面数据对比

📅 12-26 👁️ 7924
松岗按摩哪家口碑好?热门店铺推荐
365bet网上娱乐网址

松岗按摩哪家口碑好?热门店铺推荐

📅 07-07 👁️ 633
“虢季子白”青铜盘
365bet网上娱乐网址

“虢季子白”青铜盘

📅 09-29 👁️ 5453