博客
关于我
西瓜书学习笔记——决策树
阅读量:569 次
发布时间:2019-03-09

本文共 1006 字,大约阅读时间需要 3 分钟。

决策树学习基础

决策树结构

决策树是一种用于分类和回归分析的机器学习模型,其结构由三个主要组成部分定义:

  • 根节点:代表样本全集。
  • 内部节点:通过特征(属性)测试将样本分成子集。
  • 叶节点:表示分类或预测结果。
  • 决策树学习目标

    决策树的核心目标是生成一棵具有强泛化能力的树木,即能够有效预测未见过的新样本。为实现这一目标,需要遵循以下步骤。

    划分节点

    在决策树算法中,有三种情况会触发返回:

  • 样本全属于同一类别,无需划分。
  • 当前属性集为空,或所有样本在所有属性上取值相同,无法划分。
  • 当前结点包含的样本集合为空,不能划分。
  • 在第二种情况下,叶结点可设为样本中最多类别的类别;在第三种情况下,叶结点设为父结点中样本最多的类别。

    信息熵

    信息熵是衡量数据纯度的重要指标,定义如下:

    [ E_n(D) = -\sum_{k=1}^{|y|} p_k \log_2 p_k ]

    其中,( p_k ) 是数据集中第k类样本所占比例。

    信息增益

    信息增益衡量特征划分带来的纯度提升,公式为:

    [ G_lain(D, a) = E_n(D) - \sum_{v=1}^V \frac{|D^v|}{|D|} E_n(D_v) ]

    其中,( V ) 是特征的可能取值数。

    增益率

    为了减少对可取值数较多属性的偏好,使用增益率:

    [ G_lain-ratio(D, a) = \frac{G_lain(D, a)}{I_V(a)} ]

    [ I_V(a) = -\sum_{v=1}^V \frac{|D^v|}{|D|} \log_2 \frac{|D^v|}{|D|} ]

    属性的增益率越高,划分越有意义。

    基尼指数

    CART算法使用基尼指数作为化分标准,公式为:

    [ G_i(D) = \sum_{k=1}^{|y|} \sum_{k' \ne k} p_k p_{k'} ]

    [ = 1 - \sum_{k=1}^{|y|} p_k^2 ]

    基尼指数越小,节点纯度越高。

    剪枝处理

    剪枝是减少决策树过拟合的关键手段。

    预剪枝

    在每次划分前,评估节点是否划分能提升泛化能力,不能的停止划分。

    后剪枝

    生成完整树后,从叶子开始评估每个非叶子节点是否能替换为叶节点,提升精度。

    优点

  • 减少过拟合风险。
  • 降低训练和测试时间开销。
  • 缺点

  • 可能导致欠拟合。
  • 训练时间耗长。
  • 通过预剪枝和后剪枝,平衡过拟合与欠拟合,为决策树优化提供有效方法。

    转载地址:http://zwxpz.baihongyu.com/

    你可能感兴趣的文章
    NOIp2005 过河
    查看>>
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NoNodeAvailableException None of the configured nodes are available异常
    查看>>
    Vue.js 学习总结(16)—— 为什么 :deep、/deep/、>>> 样式能穿透到子组件
    查看>>
    nopcommerce商城系统--文档整理
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    NoSQL数据库概述
    查看>>
    Notadd —— 基于 nest.js 的微服务开发框架
    查看>>