机器学习笔记四-决策树

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

决策树的基本概念

  1. 节点:

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

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

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

决策树的构建

  1. 选择特征:

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

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

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

优缺点

优点:

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

缺点:

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

决策树的优化

  1. 剪枝:

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

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

示例代码(使用 sklearn):

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()

总结

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值