当前位置: 首页 > news >正文

机器学习(3)——决策树

文章目录

  • 1. 决策树基本原理
    • 1.1. 什么是决策树?
    • 1.2. 决策树的基本构成:
    • 1.3. 核心思想
  • 2. 决策树的构建过程
    • 2.1. 特征选择
    • 2.1.1. 信息增益(ID3)
    • 2.1.2. 基尼不纯度(CART)
    • 2.1.3. 均方误差(MSE)
    • 2.2. 节点划分
    • 2.3. 停止条件:
  • 3. 决策树的剪枝(防止过拟合)
  • 4. 决策树的优缺点
  • 5. 常见决策树算法
  • 6. 样例代码:
  • 7. 归纳

1. 决策树基本原理

1.1. 什么是决策树?

决策树(Decision Tree)是一种非参数的监督学习算法,适用于分类和回归任务。其核心思想是通过一系列规则(if-then结构)对数据进行递归划分,最终形成一棵树形结构,实现预测或分类。

1.2. 决策树的基本构成:

  • 根节点(Root Node):代表整个数据集,选择第一个最优特征进行分裂。
  • 内部节点(Internal Nodes):代表对某个特征的判断,用来决定如何分裂数据。
  • 叶子节点(Leaf Nodes):存放最终的预测结果,表示分类或回归结果。

1.3. 核心思想

  • 目标:构建一棵树,使得每个分支节点代表一个特征判断,每个叶子节点代表一个预测结果。
  • 关键问题:
    • 如何选择划分特征?(特征选择准则)
    • 何时停止划分?(防止过拟合)

2. 决策树的构建过程

决策树的构建是一个递归分割(Recursive Partitioning)的过程

2.1. 特征选择

选择最佳特征:在每一步分裂中,算法会选择一个最优的特征来进行数据划分。

常用的准则

  • 信息增益(Information Gain, ID3算法)
  • 信息增益比(Gain Ratio, C4.5算法)
  • 基尼不纯度(Gini Impurity, CART算法)
  • 均方误差(MSE, 回归树)

2.1.1. 信息增益(ID3)

  • 衡量使用某特征划分后信息不确定性减少的程度。

  • 计算公式: 信息增益 = H ( D ) − H ( D ∣ A ) 信息增益=H(D)−H(D∣A) 信息增益=H(D)H(DA)

    • H(D):数据集的熵(不确定性)。
    • H(D∣A):在特征 A划分后的条件熵。

2.1.2. 基尼不纯度(CART)

  • 衡量数据集的不纯度,越小越好,表示数据集越纯。

  • 计算公式:
    Gini ( D ) = 1 − ∑ k = 1 K p k 2 \text{Gini}(D) = 1 - \sum_{k=1}^{K} p_k^2 Gini(D)=1k=1Kpk2

    • p k p_k pk :数据集中第 k k k 类样本的比例。

2.1.3. 均方误差(MSE)

  • 用于回归问题,计算预测值与真实值的差异。

  • 计算公式: M S E = 1 n ∑ ( y i − y ^ i ) 2 MSE= \frac {1}{n}\sum(y_i − \hat y_i) ^2 MSE=n1(yiy^i)2

    • y i y_i yi是实际值, y ^ i \hat y_i y^i 是预测值。

2.2. 节点划分

  • 分类任务:选择使信息增益最大(或基尼不纯度最小)的特征进行划分。
  • 回归任务:选择使均方误差(MSE)最小的特征进行划分。

2.3. 停止条件:

  • 当前节点所有样本属于同一类别(纯度100%)。
  • 所有特征已用完,或继续划分无法显著降低不纯度。
  • 达到预设的最大深度(max_depth)或最小样本数(min_samples_split)。

3. 决策树的剪枝(防止过拟合)

决策树容易过拟合(训练集表现好,测试集差)。为了防止过拟合,我们通常会使用剪枝技术。

  • 预剪枝(Pre-pruning):在训练时提前停止(如限制树深度)。

  • 后剪枝(Post-pruning):先训练完整树,再剪掉不重要的分支(如C4.5的REP方法)。

4. 决策树的优缺点

  • ✅ 优点
    • 可解释性强:规则清晰,易于可视化(if-then结构)。
    • 无需数据标准化:对数据分布无严格要求。
    • 可处理混合类型数据(数值型+类别型)。
    • 适用于小规模数据。
  • ❌ 缺点
    • 容易过拟合(需剪枝或限制树深度)。
    • 对噪声敏感(异常值可能导致树结构不稳定)。
    • 不稳定性:数据微小变化可能导致完全不同的树。
    • 不适合高维稀疏数据(如文本数据)。

5. 常见决策树算法

算法适用任务特征选择准则特点
ID3分类信息增益只能处理离散特征,容易过拟合
C4.5分类信息增益比可处理连续特征,支持剪枝
CART分类/回归基尼不纯度(分类) 均方误差(回归)二叉树结构,Scikit-learn默认实现
CHAID分类卡方检验适用于类别型数据

6. 样例代码:

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree

# 加载鸢尾花数据集
data = load_iris()
X = data.data
y = data.target

# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建决策树分类器
clf = DecisionTreeClassifier(criterion='gini', max_depth=3, random_state=42)

# 训练决策树
clf.fit(X_train, y_train)

# 预测测试集
y_pred = clf.predict(X_test)

# 输出准确率
print(f"Accuracy: {accuracy_score(y_test, y_pred):.4f}")

# 可视化决策树
plt.figure(figsize=(12, 8))
plot_tree(clf, filled=True, feature_names=data.feature_names, class_names=data.target_names)
plt.show()

7. 归纳

决策树的核心:递归划分数据,选择最优特征,构建树结构。

  • 关键问题:

    • 如何选择划分特征?(信息增益、基尼不纯度)
    • 如何防止过拟合?(剪枝、限制树深度)
  • 适用场景:

    • 需要可解释性的任务(如金融风控)。

    • 小规模、低维数据分类/回归

相关文章:

  • AI证件照生成API:快速创建证件照
  • 游戏引擎学习第220天
  • ssh 免密登录服务器(vscode +ssh 免密登录)
  • 吃透LangChain,我的理解像Java的Spring
  • 2025最新系统 Git 教程(七)(完结)
  • 零基础上手Python数据分析 (12):DataFrame 数据清洗与预处理 (下) - 类型转换、格式化、文本与日期处理
  • 从0到1构建企业级消息系统服务体系(一):产品架构视角下的高并发设计与动态响应能力建设
  • 猫咪如厕检测与分类识别系统系列【三】融合yolov11目标检测
  • cdp-(Chrome DevTools Protocol) browserscan检测原理逆向分析
  • AVUE 搜索 和 表单 标签分开对齐方式
  • Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集
  • Linux安装yum和python
  • Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组------元组
  • leetcode刷题日记——螺旋矩阵
  • 运行一次性任务与定时任务
  • Python 质数筛选:从入门到优化的 5 种方法
  • RPA VS AI Agent
  • 如何解决线程安全问题(不涉及分布式情况)
  • MTCNN 人脸识别
  • 对于GAI虚假信息对舆论观察分析
  • 长安公司网站设计/足球直播在线直播观看免费cctv5
  • 网站开发前台和后台/营销培训机构哪家最专业
  • 高阳网站建设/深圳做网站的
  • 常德网络建站/江西优化中心
  • 网站建设呼和浩特/如何进行网站的推广
  • 手机端自适应网站布局/自己有域名怎么建网站