机器学习笔记四-决策树

决策树是一种用于分类和回归任务的树形模型。它通过一系列的条件判断将数据划分到不同的分支,最终在叶子节点输出预测结果。决策树直观且易于理解,常用于解释性要求较高的应用场景。

决策树的基本概念

  1. 节点:

    • 根节点: 决策树的起点,包含整个数据集。
    • 内部节点: 包含一个条件测试,用于划分数据。
    • 叶子节点: 最终的输出节点,表示分类标签或回归值。
  2. 分裂:

    • 决策树根据特征的不同值将数据集划分为两个或多个子集。分裂的目标是使得子集中的数据尽可能"纯净"(即属于同一类或回归值相近)。
  3. 树的深度:

    • 树的深度是从根节点到叶子节点的最长路径。较深的树可能会更好地拟合训练数据,但也更容易过拟合。

决策树的构建

  1. 选择特征:

    • 在构建决策树时,每一步都需要选择一个最优特征来分割数据。常用的选择标准有 信息增益基尼系数方差减少
  2. 划分标准:

    • 信息增益(基于熵):在分类问题中,信息增益是通过衡量数据集划分前后的熵(不确定性)变化来决定最佳特征。信息增益越大,说明该特征对数据集的划分效果越好。
    • 基尼系数:用于分类问题,基尼系数反映了数据集的纯度。基尼系数越低,说明节点中的样本越倾向于属于同一类。
    • 方差减少:在回归问题中,方差减少衡量的是数据集划分前后的方差变化。
  3. 停止条件:

    • 决策树的构建通常会设置一些停止条件,如达到最大深度、最小叶子节点数量、信息增益或基尼系数不再显著减少等,以防止树过于复杂。

优缺点

优点:

  • 易于理解和解释: 决策树模型的结构直观且易于解释,可以通过路径轻松理解决策过程。
  • 无需数据预处理: 决策树对数据的尺度不敏感,不需要标准化或归一化。
  • 处理缺失值: 决策树能够处理数据集中的缺失值。
  • 适用于分类和回归: 决策树可以用于处理分类和回归任务。

缺点:

  • 容易过拟合: 如果不加限制,决策树容易生成过于复杂的树,从而过拟合训练数据。
  • 对噪声敏感: 数据中的噪声可能导致决策树生成不合理的划分,影响模型的泛化能力。
  • 决策边界不平滑: 决策树生成的决策边界是轴对齐的,通常不像其他算法(如SVM、逻辑回归)那样平滑。

决策树的优化

  1. 剪枝:

    • 预剪枝: 在构建决策树时提前停止分裂,比如设定最大深度或最小样本数量。
    • 后剪枝: 在构建完整决策树后,从叶子节点向上合并节点,删除不必要的分支以减少模型复杂度。
  2. 集成学习:

    • 随机森林: 通过构建多棵决策树并将它们的预测结果进行投票或平均来提高模型的准确性和稳定性。
    • 梯度提升树(GBDT): 通过逐步构建多个决策树,每棵树都修正前一棵树的错误,最终组合得到一个强预测模型。

示例代码(使用 sklearn):

python 复制代码
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
import matplotlib.pyplot as plt

# 加载示例数据集
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:, :-1], df['target'], test_size=0.3, random_state=42)

# 初始化并训练决策树模型
model = DecisionTreeClassifier(criterion='gini', max_depth=3)
model.fit(X_train, y_train)

# 预测和评估
y_pred = model.predict(X_test)
accuracy = (y_pred == y_test).mean()
print(f"Accuracy: {accuracy:.2f}")

# 可视化决策树
plt.figure(figsize=(10, 8))
tree.plot_tree(model, feature_names=iris.feature_names, class_names=iris.target_names, filled=True)
plt.show()

总结

决策树是一种强大且易于理解的模型,适用于各种分类和回归任务。然而,决策树也有过拟合和对噪声敏感的缺点,因此在实际应用中通常会与其他模型结合使用(如随机森林、梯度提升树),以提高模型的鲁棒性和准确性。

相关推荐
Learn Beyond Limits6 分钟前
The learning process of Decision Tree Model|决策树模型学习过程
人工智能·深度学习·神经网络·学习·决策树·机器学习·ai
数据爬坡ing10 分钟前
从挑西瓜到树回归:用生活智慧理解机器学习算法
数据结构·深度学习·算法·决策树·机器学习
岑梓铭32 分钟前
考研408《计算机组成原理》复习笔记,第六章(1)——总线概念
笔记·考研·408·计算机组成原理·计组
m0_6770343541 分钟前
机器学习-异常检测
人工智能·深度学习·机器学习
Suckerbin44 分钟前
digitalworld.local: TORMENT
笔记·安全·web安全·网络安全
凯尔萨厮1 小时前
Java学习笔记三(封装)
java·笔记·学习
RaLi和夕2 小时前
单片机学习笔记.C51存储器类型含义及用法
笔记·单片机·学习
星梦清河2 小时前
宋红康 JVM 笔记 Day15|垃圾回收相关算法
jvm·笔记·算法
岑梓铭3 小时前
计算机网络第四章(4)——网络层《ARP协议》
网络·笔记·tcp/ip·计算机网络·考研·408
lingggggaaaa3 小时前
小迪安全v2023学习笔记(八十讲)—— 中间件安全&WPS分析&Weblogic&Jenkins&Jetty&CVE
笔记·学习·安全·web安全·网络安全·中间件·wps