机器学习实操 第一部分 机器学习基础 第6章 决策树

机器学习实操 第一部分 机器学习基础 第6章 决策树

内容概要

第6章深入介绍了决策树,这是一种功能强大的机器学习算法,能够处理分类、回归以及多输出任务。决策树通过递归地分割数据集来构建模型,具有易于解释和可视化的特点。本章详细讲解了决策树的训练算法、正则化方法以及在不同任务中的应用。通过理论和实践相结合的方式,读者将掌握如何使用决策树解决实际问题。

主要内容

  1. 决策树的训练与可视化

    • 构建决策树:使用CART算法训练决策树,通过递归分割数据集来构建树结构。
    • 可视化决策树 :使用export_graphviz函数输出树结构,并通过Graphviz工具进行可视化。
  2. 决策树的预测过程

    • 分类任务:从根节点开始,根据特征值递归地向下遍历树,直到到达叶节点,输出叶节点中样本最多的类别。
    • 回归任务:类似地,输出叶节点中样本的平均值作为预测值。
  3. CART算法

    • 分类任务:通过最小化基尼不纯度来选择最优的特征和阈值进行分割。
    • 回归任务:通过最小化均方误差(MSE)来选择最优的特征和阈值进行分割。
  4. 正则化技术

    • 过拟合问题 :决策树容易过拟合训练数据,需要通过正则化参数(如max_depthmin_samples_splitmin_samples_leaf等)来限制树的复杂度。
    • 剪枝技术:通过统计检验(如卡方检验)来剪枝不必要的节点,减少过拟合。
  5. 决策树的优缺点

    • 优点:易于解释、可视化,对数据预处理要求低。
    • 缺点:对数据的旋转敏感,容易过拟合,方差较高。
  6. 多输出任务

    • 多输出分类:决策树可以扩展到多输出任务,通过同时预测多个目标变量。

关键代码和算法

6.1 决策树分类

python 复制代码
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from graphviz import Source

# 加载数据
iris = load_iris(as_frame=True)
X_iris = iris.data[["petal length (cm)", "petal width (cm)"]].values
y_iris = iris.target

# 训练决策树分类器
tree_clf = DecisionTreeClassifier(max_depth=2, random_state=42)
tree_clf.fit(X_iris, y_iris)

# 可视化决策树
export_graphviz(tree_clf, out_file="iris_tree.dot",
                feature_names=["petal length (cm)", "petal width (cm)"],
                class_names=iris.target_names, rounded=True, filled=True)
Source.from_file("iris_tree.dot")

6.2 决策树回归

python 复制代码
import numpy as np
from sklearn.tree import DecisionTreeRegressor

# 生成非线性数据
np.random.seed(42)
X_quad = np.random.rand(200, 1) - 0.5
y_quad = X_quad ** 2 + 0.025 * np.random.randn(200, 1)

# 训练决策树回归器
tree_reg = DecisionTreeRegressor(max_depth=2, random_state=42)
tree_reg.fit(X_quad, y_quad)

6.3 正则化决策树

python 复制代码
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split

# 生成非线性数据
X_moons, y_moons = make_moons(n_samples=150, noise=0.2, random_state=42)

# 训练决策树分类器
tree_clf1 = DecisionTreeClassifier(random_state=42)
tree_clf2 = DecisionTreeClassifier(min_samples_leaf=5, random_state=42)
tree_clf1.fit(X_moons, y_moons)
tree_clf2.fit(X_moons, y_moons)

# 评估模型
X_moons_test, y_moons_test = make_moons(n_samples=1000, noise=0.2, random_state=43)
print("Unregularized tree accuracy:", tree_clf1.score(X_moons_test, y_moons_test))
print("Regularized tree accuracy:", tree_clf2.score(X_moons_test, y_moons_test))

精彩语录

  1. 中文 :决策树是一种强大的机器学习算法,能够处理分类和回归任务。
    英文原文 :Decision trees are versatile machine learning algorithms that can perform both classification and regression tasks.
    解释:强调了决策树的多功能性。

  2. 中文 :决策树的一个重要特点是它们的预测过程易于解释。
    英文原文 :One of the many qualities of decision trees is that they require very little data preparation.
    解释:指出了决策树的一个优势,即对数据预处理要求低。

  3. 中文 :CART算法通过最小化基尼不纯度或均方误差来选择最优的分割特征和阈值。
    英文原文 :The CART algorithm works by first splitting the training set into two subsets using a single feature k and a threshold t.
    解释:介绍了CART算法的基本原理。

  4. 中文 :决策树的过拟合问题可以通过调整正则化参数来缓解。
    英文原文 :To avoid overfitting the training data, you need to restrict the decision tree's freedom during training.
    解释:强调了正则化在决策树训练中的重要性。

  5. 中文 :决策树对数据的旋转敏感,因此在某些情况下可能需要进行特征工程。
    英文原文 :Decision trees love orthogonal decision boundaries (all splits are perpendicular to an axis), which makes them sensitive to the data's orientation.
    解释:指出了决策树的一个局限性。

总结

通过本章的学习,读者将掌握决策树的核心概念和应用方法。这些内容包括决策树的训练、可视化、预测过程,以及如何通过正则化技术来避免过拟合。此外,本章还介绍了决策树在分类和回归任务中的应用,以及其优缺点。决策树的透明性和灵活性使其成为许多实际应用中的首选算法。

相关推荐
nju_spy5 分钟前
机器学习 - Kaggle项目实践(4)Toxic Comment Classification Challenge 垃圾评论分类问题
人工智能·深度学习·自然语言处理·tf-idf·南京大学·glove词嵌入·双头gru
计算机sci论文精选10 分钟前
CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了
人工智能·深度学习·机器学习·计算机视觉·机器人·cvpr·具身智能
ezl1fe31 分钟前
RAG 每日一技(十八):手写SQL-RAG太累?LangChain的SQL智能体(Agent)前来救驾!
数据库·人工智能·后端
我星期八休息35 分钟前
大模型 + 垂直场景:搜索/推荐/营销/客服领域开发新范式与技术实践
大数据·人工智能·python
飞哥数智坊40 分钟前
等了这么久,企业微信的AI终于来了!
人工智能
Christo341 分钟前
SIGKDD-2023《Complementary Classifier Induced Partial Label Learning》
人工智能·深度学习·机器学习
AIGC安琪1 小时前
Transformer中的编码器和解码器是什么?
人工智能·深度学习·ai·语言模型·大模型·transformer·ai大模型
算家计算1 小时前
3秒搞定产品换装换背景!【ComfyUI-万物迁移工作流】本地部署教程:基于FLUX.1 Kontext上下文感知图像编辑
人工智能
山烛1 小时前
OpenCV 图像处理基础操作指南(二)
人工智能·python·opencv·计算机视觉
聚客AI1 小时前
🧩万亿级Token训练!解密大模型预训练算力黑洞与RLHF对齐革命
人工智能·llm·强化学习