决策树-缺失值和连续值处理及属性划分
决策树是一个树结构(可以是二叉树或非二叉树),其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个输出类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。
决策树学习通常包含这几个方面:特征选择、决策树生成、决策树剪枝、缺失值/异常值处理、决策树集成学习。
决策树-特征属性选择划分
决策树-缺失值和连续值处理及属性划分
决策树-不同的决策树模型对比
决策树-避免过拟合预剪枝和后剪枝对比区别
决策树-算法小结及常见问题
到目前为止我们仅讨论了基于离散属性来生成决策树,现实学习任务中常常遇到连续属性,以及数据中缺失问题。
目录
连续值处理
缺失值处理
连续值处理
基本思路:连续属性离散化,常见做法:二分法(这是C4.5决策树算法中采用的机制)。
对于连续属性a,我们可考察包括 n-1 个元素的候选划分集合(n 个属性值可形成 n-1 个候选点):
示例1:
示例2:
对于数据集中的属性“密度”,决策树开始学习时,根节点包含的17个训练样本在该属性上取值均不同。我们先把“密度”这些值从小到大排序:
根据上面计算 的公式,可得:
下面开始计算t 取不同值时的信息增益:
有一点需要注意的是 :与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。**如下图所示的一颗决策树,“含糖率”这个属性在根节点用了一次,后代结点也用了一次,只是两次划分点取值不同。
缺失值处理
现实生活中的数据集中的样本通常在某系属性上是缺失的,如果属性值缺失的样本数量比较少,我们可以直接简单粗暴的把不完备的样本删除掉,但是如果有大量的样本都有属性值的缺失,那么就不能简单地删除,因为这样删除了大量的样本,对于机器学习模型而言损失了大量有用的信息,训练出来的模型性能会受到影响。
在决策树中处理含有缺失值的样本的时候,需要解决两个问题:
- 如何在属性值缺失的情况下进行划分属性的选择?(比如“色泽”这个属性有的样本在该属性上的值是缺失的,那么该如何计算“色泽”的信息增益?)
- 给定划分属性,若样本在该属性上的值是缺失的,那么该如何对这个样本进行划分?(即到底把这个样本划分到哪个结点里?)
示例1:
比较发现,“纹理”在所有属性中的信息增益值最大,因此,“纹理”被选为划分属性,用于对根节点进行划分。划分结果为:“纹理=稍糊”分支:{7,9,13,14,17},“纹理=清晰”分支:{1,2,3,4,5,6,15},“纹理=模糊”分支:{11,12,16}。如下图所示:
那么问题来了,编号为{8,10}的样本在“纹理”这个属性上是缺失的,该被划分到哪个分支里?前面讲过了,这两个样本会同时进入到三个分支里,只不过进入到每个分支后权重会被调整(前面也说过,在刚开始时每个样本的权重都初始化为1)。编号为8的样本进入到三个分支里后,权重分别调整为5/15,7/15 和 3/15;编号为10的样本同样的操作和权重。因此,经过第一次划分后的决策树如下图所示:
我们都知道构造决策树的过程是一个递归过程,原来不打算继续介绍递归过程了,但是因为权重发生了变化,所以继续介绍下递归过程。接下来,递归执行“纹理=稍糊”这个分支,样本集D = {7,8,9,10,13,14,17},共7个样本。如下图所示:
下面来看具体的计算过程:
对比能够发现属性“敲声”的星系增益值最大,因此选择“敲声”作为划分属性,划分后的决策树如下图所示:
接下来对分支{敲声 = 沉闷}即结点{9,14,17}进行划分,根据博客决策树(一)介绍的三种递归返回情形,结点{9,14,17}因为包含的样本全部属于同一类别,因此无需划分,直接把结点{9,14,17}标记为叶结点,如下图所示:
根据递归过程,接下来对分支“敲声 = 浊响”即结点{7,8,13}进行划分,计算过程和上面一样,虽然我也算过了,但是不再贴出来了,需要注意的是样本的权重是1/3。计算完比较能够知道属性“脐部”的信息增益值最大,因此选择“脐部”作为划分属性,划分完的决策树如下图所示:
接下来,继续,对于结点{13},因为就一个样本了,直接把该结点标记为叶结点,类别为“坏瓜”;递归到结点{7,8},因为样本类别相同,所以也标记为叶结点,类别为“好瓜”;递归到结点“脐部=平坦”,因为这个结点不包含任何样本为空集,因此,把该结点标记为叶结点,类别设置为父节点中多数类的类别,即为“好瓜”。因此“纹理=稍糊”这颗子树构造完毕,如下图所示:
接下来,只需递归的重复上述过程即可,即能训练出一颗完整的决策树,最终的决策树如下图所示(该图片来自西瓜书):
参考链接:https://www.imooc.com/article/257743
参考链接:https://blog.csdn.net/leaf_zizi/article/details/83503167
参考链接:https://www.cnblogs.com/lsm-boke/p/12260343.html
参考链接:https://blog.csdn.net/qq_35649945/article/details/96633602
决策树-缺失值和连续值处理及属性划分相关推荐
- 机器学习 | 决策树原理剪枝连续值缺失值处理
机器学习 | 决策树 最近学习了西瓜书决策树一章,简单整理了笔记,后续会继续补充给 文章目录 机器学习 | 决策树 一.基本信息论 1. 信息量 2. 信息熵 二.决策树常用算法 1.ID3 2.C4 ...
- 机器学习:决策树-基础算法,剪枝,连续值缺失值处理,多变量决策树(附代码实现)
我的小程序: 待办计划:卷起来吧,少年! 我们记账:年薪50w够花么? 基础算法 举个栗子: 当一个有经验的老农看一个瓜是不是好瓜时,他可能会先看下瓜的颜色,一看是青绿的,心想有可能是好瓜!接着他又 ...
- 决策树-离散连续值如何构造决策树
决策树的详细说明:https://blog.csdn.net/suipingsp/article/details/41927247 什么是决策树: 决策树是通过一系列规则对数据进行分类的过程.它提供一 ...
- 决策树之C4.5实现(离散属性与连续,属性并存)
这两天自己实现了一个C4.5的决策树,用的是UCI上的一个数据集abalone.data 具体数据如下(前5条): M,0.455,0.365,0.095,0.514,0.2245,0.101,0.1 ...
- pandas用众数填充缺失值_【机器学习】scikit-learn中的数据预处理小结(归一化、缺失值填充、离散特征编码、连续值分箱)...
一.概述 1. 数据预处理 数据预处理是从数据中检测,修改或删除不准确或不适用于模型的记录的过程 可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断. 也可 ...
- ID3决策树中连续值的处理+周志华《機器學習》图4.8和图4.10绘制
转载自 https://blog.csdn.net/Leafage_M/article/details/80137305 用一句话总结这篇博客的内容就是: 对于当前n条数据,相邻求平均值,得到n-1个 ...
- 决策树缺失值python_【机器学习笔记之二】决策树的python实现
本文结构: 是什么? 有什么算法? 数学原理? 编码实现算法? 1. 是什么? 简单地理解,就是根据一些 feature 进行分类,每个节点提一个问题,通过判断,将数据分为几类,再继续提问.这些问题是 ...
- 贝叶斯方法与连续值离散化
https://www.toutiao.com/a6701998782122295819/ 奇技指南 实际算法工作中,需要经常处理特征值为连续值,而目标变量为可数属性的情况.这时, 将特征变量进行离散 ...
- Pandas数据分析17——pandas数据清洗(缺失值、重复值处理)
参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对大数据有很多便捷的清洗用法,尤其针对缺失值和重复值.缺失值就不用说了,会影响计算,重复值有时候可能并未 ...
最新文章
- python 面向对象(云储存一下)
- Java基本类型和取值范围
- GIS开源程序收集(转载)
- java 计算26个字母在一段文本中出现的频率(保留小数点后4位)
- ORACLE startup报错之ORA-01154ORA-01155ORA-01033ORA-03113
- python程序员工资-均薪3万?Python程序员就业各岗位薪资一览,你拖后腿了吗?...
- 什么是分布式微服务架构?-开课吧
- [ 原创 ]2017年3月25日
- Ubuntu20.04安装 Redis 并配置 phpRedisAdmin
- 【codeforces 709C】Letters Cyclic Shift
- poj 1011 - sticks - dfs + 剪枝
- 【车牌识别】基于matlab GUI模板匹配车牌库识别【含Matlab源码 416期】
- Papervision3d QuadTree四叉树相机的示例
- 航空系统c语言课程设计报告,c语言课程设计报告_航空订票系统西安郵電學院.doc...
- GO PDF资源 汇总!
- 惠普服务器u盘启动找不到硬盘,U盘启动找不到硬盘怎么回事?
- DREAMWEAVERCS6ANDPHP动态网页设计pdf
- tar cvf xvf zcvf zxvf
- 防止按钮在短时间内被多次点击多次触发事件
- cesium实现鹰眼地图(三维)效果