决策树——从理论到入手

决策树

基本知识点

基本概念

定义:决策树是一类常见的机器学习方法,是一种描述对实例进行分类的树形结构。(给定的实例具有一系列特征,根据这些特征进行判断结果)

描述:决策树由结点和有向边组成。结点可分成:根结点、内部结点、叶结点

​ 根节点:样本全集

​ 内部结点:一个特征或一个属性测试

​ 叶节点:决策结果

判定测试序列:从根节点到每个叶结点的路径对应了一个判定测试序列

目的:产生一颗泛化能力强,即处理未见示例能力强的决策树。

分析与思考

现以西瓜书中如何判断好瓜还是坏瓜的决策树进行理解:

西瓜数据集:

在这里插入图片描述

西瓜决策树图:

在这里插入图片描述

看到上面的数据集以及生成的决策树,我们便会发现以下的一些问题:

  • 这不就是if-else吗,为什么要那么麻烦呢?
  • 西瓜决策树第一次为什么是根据纹理来判断?
  • 西瓜决策树为什么在第二层判断触感,在第四层树中又有判断触感这一特征呢?
  • 在数据集中,有敲声和脐部这两个特征,为什么在决策树中没有体现呢?
  • 西瓜数据集的大小对决策树会有怎样的影响呢?

首先先说一下第一个问题:这不就是简单的if-else就可以完成的吗?

首先,决策树的起源就是这么质朴,就是来源于数据机构中的分支结构if-else,之所以要采用树形结构是因为它带来了效率的提高,并且可以有效的让我们进行优化得到一个不错的结果。

然后,请您带着以上的问题接着往下看,我将为您竭尽全力的帮助您了解决策树。

决策树前提知识点

信息增益、增益率、基尼指数

针对上述第二问:西瓜决策树第一次为什么是根据纹理来判断?那肯定是因为纹理可以帮我们更好的辨别哪一个是好瓜还是坏瓜。

决策的目的是为了更好的分类,如果所有的特征带给我们的结果都是50%是好瓜、50%是坏瓜,那决策没有任何意义,买任何一个西瓜,都只存在这两种情况(非好即坏),所以我们的决策树从根结点到叶结点的决策类肯定是越来越低的,毕竟我们追求的就是:通过最短的判定测试序列准确的判断我们选的西瓜是好瓜还是坏瓜。

由此,我们可以知道,决策树学习的关键在于——如何选择最有划分属性。

接下来就介绍三种经典的属性划分方法:

信息增益(ID3)

想要了解信息增益,你需要先知道什么是信息熵。

信息熵

定义:度量样本集合纯度最常用的一种指标。假定当前样本集合D中第K类样本所占比为pk(K = 1,2,3,4…|y|),则D的信息熵
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log ⁡ 2 p k Ent(D) = -\sum_{k=1}^{|y|} p_{k}\log_{2}{p_{k}} Ent(D)=k=1ypklog2pk

  • pk是分类的结果数,如果是二分类就是|y| = 2,在西瓜样例中就是好瓜和坏瓜
  • 单位:bit
  • Ent(D)值越小,D的纯度越高
  • p = 0,则plogp = 0(约定)
  • Ent(D)最小值为0,最大值为log|y|

当了解完信息熵,我们便可以了解一下信息增益了。

信息增益

离散属性a有V个可能的取值{ a^1 , a^2, …, a^v },用a来进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为 a^v的样本,记为D^v

直白的讲:哪一个特征色泽出来(以西瓜判别为例),有青绿(6/17)、乌黑(6/17)、浅白(5/17)三种,分别计算这三者的信息熵,然后进行按比例累加求和。

则可计算出用属性a对样本集D进行划分所获得的信息增益:
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D, a) = Ent(D) - \sum_{v=1}^{V}\frac{|D^{v}|}{|D|} Ent(D^{v} ) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)
一般而言:信息增益越大,实用属性a进行划分所获得的“纯度提升”越大。(直接点说就是:你的信息增益越大,那么使用它先分类的可能性越大。)

但是存在一个问题:

数据集中一般有一个“编号”(可以往上翻一下,看一些截图),如果把他也作为一个候选划分属性,那么它的信息增益会比其他属性大。

每一个编号(1、2、3…|y|)都是“编号”组中的实例,|y|个分支,故每个编号的信息熵如下:
E n t ( D v ) = ( − ( 1 log ⁡ 2 1 + 0 log ⁡ 2 0 ) ) Ent(D^{v}) = (-(1\log_{2}{1} + 0\log_{2}{0})) Ent(Dv)=((1log21+0log20))

E n t ( D v ) = 0 Ent(D^{v}) = 0 Ent(Dv)=0

大家可以试着计算以下(这里不做过多赘述),由信息增益公式可知“ Ent(D) - 0 ”时,是信息增益最大的时候了。

注意:这里0不在对数函数的定义域,但是这是一个约定俗成的,所以不必太纠结其数学含义。

由此可见——信息增益对取值数目较多的属性有所偏好!

在遇到这种情况,提出了一个新的概念,叫做——增益率。

增益率(C4.5)

公式:
G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain_ratio(D, a) = \frac{Gain(D, a)}{IV(a)}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值