分类算法之决策树

目录

前言

1、基本流程

2、属性/特征划分选择

2.1 信息增益(ID3)

2.2 增益率(C4.5)

2.3 基尼指数(CART)

3、剪枝处理(节点分裂)


前言

决策树(Decision Tree)是一种常见的机器学习方法,它既可以用来做分类,也可以做回归分析。在本文中主要从分类的角度学习决策树。


1、基本流程

西瓜问题决策树

 决策树是一个树结构(二叉树或非二叉树均可),由节点和有向边组成。节点包含一个根结点、若干个内部节点和若干个叶节点。

  • 根结点和内部节点对应于特征或者属性(如上图的纹理、根蒂、触感等长方形框框);
  • 叶节点对应于决策结果(如上图的好瓜、坏瓜)。

使用决策树进行决策的过程就是从根节点开始,对待分类项中的相应特征属性进行测试,并按照其测试结果选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

这个决策过程可以理解为if-then的过程,从根节点到叶节点的每一条路径都可以看做是一个规则,每一个内部节点对应着一个条件,叶节点对应着规则的结论。这样的规则具有互斥和完备性,从根节点到叶节点的每一条路径代表了一个实例,并且这个实例只能在这条路径上。

从上述内容可以看出来,决策树的生成包含三个重要的部分:

  1. 属性的划分选择,如何选择最优划分属性,让决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。
  2. 节点的分裂:一般当一个节点所代表的属性无法给出判断时,则选择将这一节点分成n(n\geq 2)个子节点。
  3. 特征处理:该部分需要结合相关先验知识,本文不做赘述。

2、属性/特征划分选择

2.1 信息增益(ID3)

信息熵(information entropy)是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为p_k(k=1, 2, ..., \left | y \right |),则D的信息熵定义为

Ent(D)=-\sum_{k=1}^{\left|y\right|}p_klog_2p_k

Ent(D)的值越小,则D的纯度越高。

假设样本集D的一个属性a=\left\{a_1, a_2, ..., a_v\right\}如西瓜决策树中的“色泽”属性有三个取值{青绿、乌黑、浅白}),则对于样本集中对应属性的样本则为D=\left\{D_1, D_2, ..., D_v\right\}即色泽青绿的样本、色泽乌黑的样本、色泽浅白的样本)。

考虑到不同分支结点所包含的样本数不同,为不同的分支结点赋予权重\frac{\left|D_v\right|}{D},即样本数越多的分支结点的影响越大,由此可以计算出用类别对样本集D进行划分所获得的“信息增益”:

Gain(D,a)=Ent(D)-\sum_{v=1}^{v}{\frac{\left|D_v\right|}{\left|D\right|}}Ent(D_v)

一般而言,信息增益越大,则属性a进行划分所获得的“纯度提升”越大。选择信息增益最大的作为根结点,并根据给定根结点的条件(特征条件)下计算各个属性的信息增益,以此类推。

2.2 增益率(C4.5)

信息增益率对可取数目较多的属性具有一定权重偏向性,为降低这种偏好对决策树生成的影响,推出了增益率进行选择:

Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)},其中IV(a)=-\sum_{v=1}^{V}\frac{\left|D_v\right|}{\left|D\right|}log_2\frac{\left|D_v\right|}{\left|D\right|}(属性a的可能取值数目越多,即V越大,则IV(a)的值就越大)。

因为增益率对于V较小的属性有所偏好,因而C4.5并不是直接选择增益率最大的候选划分属性,而是从信息增益高于平均值的属性中选择增益率最高的作为划分属性

2.3 基尼指数(CART)

用基尼指数定义数据集D的纯度:

Gini(D)=\sum_{k=1}^{\left|y\right|}\sum_{k^{'} \neq k}p_kp_{k^{'}}=1-\sum_{k=1}^{\left|y\right|}p_k^{2}

从公式可以发现,基尼指数反映的是从数据集D中随机抽取两个样本,其类别标记不一致的概率,因而,Gini(D)越小,则纯度越高。

对应的属性a的基尼指数可以定义为:

Gini\_index(D,a)=\sum_{v=1}^{V}\frac{\left|D_v\right|}{\left|D\right|}Gini(D_v)

选择基尼指数最小的属性作为最优划分属性,逐层类推。

3、剪枝处理(节点分裂)

在实际构造决策树时为了防止过拟合问题,通常需要进行剪枝操作。剪枝有两种:

  • 预剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。
  • 后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值