当前位置: 首页 > news >正文

第4章 决策树

文章目录

  • 4.1 基本流程
  • 4.2 划分选择
    • 4.2.1 信息增益
    • 4.2.2 增益率
    • 4.2.3 基尼指数
  • 4.3 剪枝处理
    • 4.3.1 预剪枝
    • 4.3.2 后剪枝
  • 4.4 连续与缺失值
    • 4.4.1 连续值处理
    • 4.4.2 缺失值处理
  • 4.5 多变量决策树
  • 4.6 阅读材料

4.1 基本流程

  • 决策树也称判定树,是一类常见的机器学习方法。
  • 决策树是基于树结构来进行决策的,这恰是人类在面临决策问题时一种很自然的处理机制。
  • 决策的最终结论对应了我们所希望的判定结果,决策过程中提出的每个判定问题都是对某个属性的测试,每个测试结果考虑范围是在上次决策结果限定范围内。
  • 叶结点对应于决策结果,其他每个结点对应于一个属性测试。
  • 决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循分而治之的策略。
  • 在这里插入图片描述

4.2 划分选择

4.2.1 信息增益

“信息熵”是度量样本集合纯度常用的一种指标。
在这里插入图片描述

信息增益
在这里插入图片描述
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。因此,可用信息增益来进行决策树的划分属性选择。
在这里插入图片描述

4.2.2 增益率

  • 信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用增益率来选择最优划分属性。
  • 增益率定义为:在这里插入图片描述

增益率准则对可取数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

4.2.3 基尼指数

CART决策树使用“基尼指数”来选择划分属性。数据集D的纯度可用基尼值来度量:
在这里插入图片描述
Gini(D)越小,数据集的纯度越高。
属性a的基尼指数定义为:
在这里插入图片描述
在候选属性集合A中,选择那个使得划分后基尼指数最小的属性作为最优划分属性,即:
在这里插入图片描述

4.3 剪枝处理

剪枝是决策树学习算法对付过拟合的手段。

留出法:预留一部分数据用作验证集以进行性能评估。

4.3.1 预剪枝

预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。

4.3.2 后剪枝

后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若该结点对应得子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

4.4 连续与缺失值

4.4.1 连续值处理

由于连续属性的可取数目不再有限,因此不能直接根据连续属性可取值来对结点进行划分。此时,连续属性离散化技术可派上用场。最简单的策略是采用二分法对连续属性进行处理,这正是C4.5决策树算法中采用的机制。

4.4.2 缺失值处理

离散值:众数填充、相关性最高填充。

连续值:中位数填充、相关性最高的列做线性回归进行估计。

4.5 多变量决策树

4.6 阅读材料

http://www.lryc.cn/news/187635.html

相关文章:

  • 在Remix中编写你的第一份智能合约
  • 如何查看dll文件内导出函数名称
  • 学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础
  • JAVA String 和 String[][]互转的两种方法
  • 推荐几个制作svg的工具
  • Java实现防重复提交,使用自定义注解的方式
  • Springboot实现Web组件注册
  • Element组件案例 Vue路由 前端打包部署步骤
  • mysql5.7停止维护时间
  • 解密.kat6.l6st6r勒索病毒:保护数据的关键方法
  • Godot 添加信号
  • JS如何判断文字是否溢出(被ellipsis)?
  • pb:常用函数和语句清单
  • (8)SpringMVC中的视图类型及其特点,以及视图控制器view-controller的配置
  • ansible学习笔记分享
  • 以dzzoffice为例设置通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
  • 加拿大艾伯塔省执法部门利用OpenText Encase显着提高案件效率
  • 【Codeforces】Educational Codeforces Round 156 [Rated for Div. 2]
  • 结合swagger的前端架构小记
  • Python字典全解析:从基础到高级应用
  • Fourier变换中的能量积分及其详细证明过程
  • 保护 Web 服务器安全性
  • docker数据管理和网络通信
  • 代理IP与Socks5代理:网络工程师的神奇魔法棒
  • 【K8S系列】深入解析k8s 网络插件—kube-router
  • Flutter的Platform介绍-跨平台开发,如何根据不同平台创建不同UI和行为
  • gitlab docker部署,备份,恢复
  • 腾讯云/阿里云国际站代理:阿里云、华为云和腾讯云“大展拳脚”,与国际巨头未来竞争焦点是AI计算?
  • 基于Java+SpringBoot+Vue企业OA管理系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】
  • Java架构师系统架构设计性能评估