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

【西瓜书】4.决策树

1 递归返回情况

        (1)结点包含样本全为同一类别

        (2)属性集为空,没有属性可供划分了

                或

                有属性,但是在属性上划分的结果都一样

        (3)结点为空结点

**结束时判定该结点的类别遵循如下规则:

        (1)若全为一个类别,则该结点为该类别,如全为“好瓜”,则该结点为好瓜

        (2)若某一个类别比其他类别多,则该结点为该类别,如结点中的样本“好瓜”>“坏瓜”,则该结点为好瓜。

        (3)若所有类别样本数一样,或为空集,则取其父节点的类别作为该结点的类别。

2.经典的属性划分方法
2.1.信息增益(选大)
  • 样本集信息熵,信息熵越小,则集合越纯,如果集合只属于1个类别,那么信息熵为0
  • 每个属性每个取值的信息熵,这些信息熵按比例相加
  • 每个属性信息增益,等于样本集信息熵减去该属性的加权信息熵
  • 信息熵Ent(D)越小,数据集D的纯度越高
  • 信息增益越大,则使用该属性来进行划分所获得的“纯度提升”越大
2.2.增益率(选大)
  • 信息增益对可取值数目较多的属性有所偏好,所以用增益率克服这一缺点
  • 选择增益率大的属性,即选择信息增益大分支少的属性
2.3.基尼指数(选小)
  • 反映了从D中随机抽取两个样本,其类别标记不一致的概率
  • Gini(D)越小,数据集D的纯度越高
3.剪枝处理

        划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响很有限;而剪枝方法和程度对决策树泛化性能的影响更为显著。(也就是说选择剪枝方法比选基尼指数、信息增益还是增益率这种划分策略的影响更大)

        是对付“过拟合”的主要手段,剪枝的基本策略:

3.1.预剪枝
  1. 采用基于分层采样的留出法,初始认为所有样本都是好的,此时可计算模型的正确率为验证集中好瓜的比例。
  2. 运用一种属性划分方法选择出一个最好的属性进行划分,划分之后计算加了一层之后的正确率,并与未引入划分的正确率进行比较,若划分后的正确率>未划分就生成,否则不生成。


3.2.后剪枝

        先生成完整的决策树,再倒着看每棵子树是否有价值。如果剪枝后的树>未剪枝的树则剪枝,否则不剪,当正确率相等时不做操作,一方面是防止欠拟合,一方面是剪枝也会有一定的开销。

4.连续值处理 
  • 与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。也就是在某个点算出按密度<0.35和密度>0.35划分,后面在计算时还要把密度纳入考虑范围,且下次的划分点可能就不是0.35了。而别的离散属性比如颜色,如果用过就从属性集合中删去了。
  • 方法:二分法
5.缺失值处理
  • 样本赋权,权重划分 

单变量决策树

 

多变量决策树

相关文章:

  • 开发指南028-生成二维码
  • python : map list 切片 推导式
  • 【讲解下ECMAScript和JavaScript之间有何区别?】
  • 力扣 41.缺少的第一个正整数
  • 解决 There is no getter for property named ‘null‘ in ‘class 报错
  • HTML静态网页成品作业(HTML+CSS)—— 家乡南宁介绍网页(2个页面)
  • NSS题目练习7
  • 分享一个 .NET Core Console 项目使用依赖注入的详细例子
  • 前后端实现文件上传进度条-实时进度
  • linux防止nmap扫描
  • Elasticsearch之写入原理以及调优
  • 数据结构--二叉树(二)
  • iOS 通过PacketLogger 抓包蓝牙数据包
  • 新能源汽车内卷真相
  • Redis常用命令——List篇
  • 《剑指offer》分解让复杂问题更简单
  • Angular 响应式表单 基础例子
  • CSS实用技巧干货
  • C语言笔记(第一章:C语言编程)
  • JAVA SE 6 GC调优笔记
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Linux链接文件
  • Vue.js源码(2):初探List Rendering
  • yii2权限控制rbac之rule详细讲解
  • 阿里研究院入选中国企业智库系统影响力榜
  • 智能合约Solidity教程-事件和日志(一)
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ######## golang各章节终篇索引 ########
  • ###C语言程序设计-----C语言学习(6)#
  • #pragam once 和 #ifndef 预编译头
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • $.ajax()参数及用法
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (全注解开发)学习Spring-MVC的第三天
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (一) springboot详细介绍
  • (原創) 物件導向與老子思想 (OO)
  • (自适应手机端)行业协会机构网站模板
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net 连接达梦数据库开发环境部署
  • .NET上SQLite的连接
  • .NET委托:一个关于C#的睡前故事
  • .NET中使用Redis (二)
  • @SentinelResource详解