机器学习笔记-决策树


首先我们要明确决策树作为分类器的工作机制是什么。例如,决策树决定一个物体是不是西瓜的工作过程类似于以下过程:

1、 这个东西是不是绿色的? –是,那么继续观察:
2、 这个东西是不是接近圆形的? –是,然后再问:
3、 这个东西是不是有个根蒂? ……

这就好像一个好奇的孩子在不断地询问家长一件事情,只不过每个询问的问题只有是和否两个回答,而每个问题均涉及了这件事物的一个特征,在这个孩子问够了特征的时候,他会直接导出结论,否则就会继续提问下去,直到他认为根据已有特征已经可以描述正确这个事物的时候才会停止。

这是我觉得最简单也最一目了然的例子图:
这里写图片描述


好了既然已经对这个分类器有了大体的认识,那么现在需要讨论如何具体实现它。决策树的一个关键问题是,假设有N个特征F={f1, f2, … , fn},也就是需要有N个节点的决策树才能充分地利用这些特征对数据进行分类,那么,如何分配这些特征到这些节点呢?根节点区分什么特征?下一个叶节点区分什么特征?虽然对小的决策树可以人工决定这些节点,并且让决策树看起来很合理,但不管是对大量数据还是在决策树的通用性上,都需要一个共同的准则来确定特征在节点上的分配方式。

对于怎么分配特征,我们需要从一开始就确定一个问题:我们分配特征、或者说选择划分过程的目的是什么?目的是不是,让所有的样本最终被划分到尽可能少的类别中(最好是同一类别),这在周志华的机器学习中被称为结点的纯度(设想你对一个数据集进行处理,你选择的划分过程总是将10个样本分成10个种类,这样划分显然没什么重大意义,但如果更换了划分过程,导致10个样本总是被分成2类,那么这个分类器才可能有使用的意义)。

著名的ID3决策树采用信息增益来决定每个节点划分什么特征。先了解下信息熵这个概念:
这里写图片描述

p是k类样本在集合D中所占的比例,可以看出当p为1时,熵取最小值0,每个p越小,熵之和就越大,也就是说,信息熵描述了一个集合中样本的纯度,纯度越大,熵越小(最小为0),纯度越小,熵越大。

所以我们期望的是什么?我们期望的是被一个结点划分后的数据集具有相对较大的纯度,也就是让划分后的数据集具有较小的熵。也就是让每次划分的时候选取的属性,能够做到将划分后的熵之和与划分前的熵两者之差最大化,通俗的说就是降低的熵的数量最大化。

这里写图片描述
这是信息增益的定义,D代表数据集,a是划分当前数据集的属性(特征),假设被a属性划分的数据集D能够被归类到a1,a2……av等V个类别中,也就是说这个节点有V个分支,而分类后的数据集D被分成小数据集D1,D2,……Dv等V个数据集。分别对小数据集计算信息熵,然后按照小数据集中样本的数目占总样本数的比重作为权重对他们进行求和,最终同原始数据集的熵做减法得到信息增益。

我对信息增益的理解:
这里写图片描述

信息增益越大,划分得到的数据集熵越小,这次节点划分得到的数据集纯度越高。
从头开始举个例子,比如书中提及的好瓜坏瓜问题:

这里写图片描述
1、 D中有17个样本瓜,8个好瓜,9个坏瓜,计算原数据熵E(D)为0.998。
2、 假设此时先选择色泽作为属性a划分,a可能的取值有a1:青绿,a2:乌黑,a3:浅白。
3、 在青绿属性下的样本有3个好瓜,3个坏瓜,以此计算划分后的D1的信息熵,E(D1)=1.000。
4、 同理算出E(D2) = 0.918,E(D2) = 0.722。
5、 算出D1样本数目为6,D2样本数目为6,D3样本数目为5,计算信息增益:
这里写图片描述
6、 重复计算属性集合内的属性a 的信息增益,最终将信息增益最大的属性a作为当前划分的属性,这个属性能够使划分后的数据集纯度最大化。

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页