博客
关于我
西瓜书学习笔记——决策树
阅读量: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/

    你可能感兴趣的文章
    OAuth2.0_环境搭建_Spring Security OAuth2.0认证授权---springcloud工作笔记139
    查看>>
    oauth2.0协议介绍,核心概念和角色,工作流程,概念和用途
    查看>>
    OAuth2授权码模式详细流程(一)——站在OAuth2设计者的角度来理解code
    查看>>
    OAuth2:项目演示-模拟微信授权登录京东
    查看>>
    OA系统多少钱?OA办公系统中的价格选型
    查看>>
    OA系统选型:选择好的工作流引擎
    查看>>
    OA让企业业务流程管理科学有“据”
    查看>>
    OA项目之我的会议(会议排座&送审)
    查看>>
    OA项目之我的会议(查询)
    查看>>
    Object c将一个double值转换为时间格式
    查看>>
    object detection之Win10配置
    查看>>
    object detection训练自己数据
    查看>>
    object detection错误Message type "object_detection.protos.SsdFeatureExtractor" has no field named "bat
    查看>>
    object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
    查看>>
    object detection错误之no module named nets
    查看>>
    Object of type 'ndarray' is not JSON serializable
    查看>>
    Object Oriented Programming in JavaScript
    查看>>
    object references an unsaved transient instance - save the transient instance before flushing
    查看>>
    Object.keys()的详解和用法
    查看>>
    objectForKey与valueForKey在NSDictionary中的差异
    查看>>