决策树(部分)

目录

信息熵

总结:

特征选择

信息增益:ID3算法

增益率:C4.5

基尼指数

剪枝处理

预剪枝

后剪枝


信息熵

信息熵 (entropy)是 用于度量样本集合" 纯度 " 最常用的一种指标,其中 " 熵 " 是事物的不确定性,假定当前样本集合D根据某属性共分为 |y| 个集合,每个集合中, k 类样本所占的比例为 ,则 D的信息熵定义为:

这个信息熵值越小,则 D 的纯度越高
西瓜书信息熵计算的例子:

对于这个数据集根节点 ,样本有 2 种类型,分别为"是好瓜"与"否好瓜",则**|y| 为2,p1=8/17(是好瓜),p2=9/17(否好瓜),可得总体信息熵

对于
色泽这个属性**,样本有 3 种类型:

  • 青绿样本 D1:1,4,6,10,13,17。共6个,3是3否,信息熵
  • 乌黑样本 D2:2,3,7,8,9,15。共6个,4是2否,信息熵
  • 浅白样本 D3:5,11,12,14,16。共5个,1是4,信息熵



色泽这个属性总体的信息熵为三种类型样本的加权平均 ,因为样本量越多的类型越重要,信息熵越大,即:

总结:

信息熵与概率是一个事物的一体两面,概率指"事件多大可能发生",表示事件发生的"确定性",而信息熵指"事件有几种可能性"表示时间发生的"不确定性"。 反映的是事情复杂、混乱的程度。统计意义上来说这是一种加权平均,表示整体的选择个数。信息熵还可以用来进行信息编码,可用于计算信息编码的平均长度

由于日常所得的数据中既有有效数据又含噪音,选择特征的方法包括信息增益(Information Gain)、基尼指数(Gini Index)和增益率(Gain Ratio)等。

特征选择

信息增益:ID3算法

在了解信息熵的意思后,我们就可以通过得知信息前后不确定性的变化(信息熵的差额)对信息进行量化,从而看出信息对问题判断是否有效,多有效

由此将这个信息熵的差额称作信息增益,假设划分前的信息熵为,,则信息增益定义为:

前者是划分前的信息熵,后者是划分后的信息熵,信息增益越大,使用该属性划分的效果越好

综上,将纹理作为决策树的第一个分叉。在分叉后,将子集作为样本,每个类别作为根节点,计算其他属性的信息增益,继续分叉

增益率:C4.5

信息增益一般偏向于选择属性取值较多的特征,为减少这种偏好可能带来的不利影响使用增益率,其公式:

a 是指某属性有几种类别的特征,取值数量越多,V 越大,IV(a) 越大,选择模型时,先从候选划分属性中找出信息增益高于平均水平的, 再从中选取增益率最高的

补充:关于属性分裂信息度量

在属性分列后,需要考虑接下来在哪个叶子节点进行分列

用分裂信息度量来考虑某种属性进行分裂时分支的数量信息和尺寸信息,这些信息称为属性的内在信息(instrisic information),反应节点的不确定性。举个例子,假设上面色泽分裂出的三个颜色,浅白的全是坏瓜,说明这个类别类别是"纯"的,我们用其他"不纯"的节点进行其他属性的分裂

C4.5的算法流程:

  1. while(当前节点"不纯"):

  2. 计算当前节点的类别熵(以类别取值计算,每个类别当做根节点计算)

  3. 计算当前阶段的属性熵(按照每个属性取值的类别计算,某类别中其他属性的熵)

  4. 计算信息增益

  5. 计算各个属性的分裂信息度量

  6. 计算各个属性的信息增益率

  7. end while

  8. 当前阶段设置为叶⼦节点

基尼指数

该方法反映了 D 中抽取两个样例,其类别不一致的概率

基尼值

基尼系数

由于划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响非常小,所以关于基尼系数可以在该文中的应 P 查看具体例子,图片源:
源自:决策树算法概述及原理详解-CSDN博客

只需要知道,在候选属性集合中,选取那个使划分后基尼指数最小的属性即可,基尼指数越小,纯度越高(纯度指分完之后正反例是否掺杂)

剪枝处理

核心目的:解决过拟合问题

预剪枝

自上而下,若分叉不能提高精度,则不分

对于数据的训练集,1~8是好瓜,9~17是坏瓜,按信息增益率的方法生成决策树:

对于脐部和色泽的分支,对应属性的西瓜编号如下:

  • 脐部分叉之前3好瓜4坏瓜,测试集精度3/7,分叉后,测试集{9,13}样本预测错误,其余正确,精度5/7提高了,所以这个叉应该分。

每个属性取值的标记依靠训练集中好坏瓜的比例来定,好瓜多就标记为好瓜,如果某一取值好坏瓜的比例为1:1,默认为是好瓜

  • 色泽 分叉前,4、5号预测准确,精度2/3,分叉后只有4号样本预测正确,精度1/3,下降。因此色泽这个枝不应该分,剪去
  • 同理,对于根蒂这个属性,分叉前后都是一对一错(8是好瓜,9非好瓜),精度并未提升,因此也不分叉

最终预剪枝得到的决策树如下:

后剪枝

与预剪枝类似,只是后剪枝是自下而上的,能不剪就不剪

考虑最底下的纹理是否分叉,在未剪枝的情况下,3个错4个对,正确率3/7,减去后,测试集中的8号被预测正确了,此时正确率提高为4/7,因此应该这个枝剪去

对于其他节点一样进行判断,最终得到这样的结果 :

连续值与缺失值的处理待补充,缺失值不同于常规方法的是在决策树中,用缺失前后数据量的比值对信息增益进行缩小,即可计算

相关推荐
海棠AI实验室2 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
XH华2 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生3 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_3 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
IT古董3 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
落魄君子3 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡3 小时前
滑动窗口 + 算法复习
数据结构·算法
睡觉狂魔er3 小时前
自动驾驶控制与规划——Project 3: LQR车辆横向控制
人工智能·机器学习·自动驾驶
Lenyiin3 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码3 小时前
Cmd命令大全(万字详细版)
python·算法·小程序