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

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

内容概要

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

主要内容

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

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

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

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

    • 过拟合问题 :决策树容易过拟合训练数据,需要通过正则化参数(如max_depth、min_samples_split、min_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.
    解释:指出了决策树的一个局限性。

总结

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

相关推荐
深蓝AI1 小时前
不调模型不改壳:CMU 开源 Hermit,给 Agent 外挂一个能训练的适配器
人工智能·agent
汤姆宝库4 小时前
世界模型深拆:视频生成、潜在模拟与物理直觉
人工智能
weixin_468466857 小时前
从“看懂”到“做到”:视觉-语言-动作模型如何让机器人真正执行指令
人工智能·ai·机器人·大语言模型·前沿科技
朋友圈自动点赞工具7 小时前
科学AI插件化:从蛋白质结构到古籍修复
人工智能
龙粤GEO8 小时前
实体Entity在GEO中代表什么含义
人工智能
剑雨巍巍9 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular9 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康9 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区9 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng9 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用