决策树是机器学习中一类非常著名的算法,它模拟人们在解决一个决策问题时的思考方式,因此具有非常好的可解释性。一般来说,一个训练好的决策树模型可以转化成一系列的“if-then”语句,从而可以快速判断新样本的类别。

决策树中的核心概念包括以下几点:

  • 如何选择结点的分裂属性
  • 如何处理过拟合
  • 如何处理连续值

1、如何选择结点的分裂属性

以分为问题为例,决策树模型的训练是一个递归的过程,其核心是如何选择结点的分裂属性,即:在某个结点进行分裂时,为什么按照属性a划分而不是按照属性b。

选择分裂属性的依据是:每个结点所包含的样本尽可能地属于同一个类别,也就是说,每个结点所代表的样本要尽可能的“纯”。

这时,就需要有一个指标来度量结点样本的纯度。

常用的衡量指标包括:信息增益、增益率、基尼指数。

1.1 信息增益

了解信息增益,得先知道「信息熵」的概念。

「熵」就是衡量一个对象的混乱程度的指标,熵越大,越混乱。类似地,在决策树中,信息熵就是用来衡量样本集合的纯度的指标。信息熵越大,说明样本越不纯。

假设在一个分类问题中,目标类别的数量为 ∣ γ ∣ |\gamma| ∣γ∣,在当前样本集合 D D D中,第 i i i类样本的占总数的比例为 p i p_i pi​,则样本集合 D D D的信息熵为:

E n t ( D ) = − ∑ i = 1 ∣ γ ∣ p i ∗ l o g 2 ( p i ) Ent(D)=-\displaystyle\sum_{i=1}^{|\gamma|}p_i*log_2(p_i) Ent(D)=−i=1∑∣γ∣​pi​∗log2​(pi​)

约定,当 p i = 0 p_i=0 pi​=0时, p i ∗ l o g 2 ( p i ) = 0 p_i*log_2(p_i)=0 pi​∗log2​(pi​)=0

根据定义,如果 E n t ( D ) Ent(D) Ent(D)越小,则样本纯度越高。通过数学计算不难看出, E n t ( D ) Ent(D) Ent(D)的最小值为0(此时集合 D D D中没有样本或只有1个样本,最“纯”),最大值为 l o g 2 ∣ γ ∣ log_2|\gamma| log2​∣γ∣(此时集合 S S S中恰好每一类样本都有,且数量相等,最“不纯”)。

假定离散属性 a a a有 V V V个可能的取值 a 1 , a 2 , . . . a V {a^1,a^2,...a^V} a1,a2,...aV,于是,使用属性 a a a来对样本集合 D D D进行划分,则会产生 V V V个分支结点。其中,第 v v v个结点包含了 D D D中所有在属性 a a a上取值为 a v a^v av的样本,记作 D v D^v Dv。这时,利用上述信息熵的计算公式,就可以算出 D v D^v Dv的信息熵。

遍历所有 V V V个分支结点,得到每一个子样本集的信息熵。为了区分各子样本集的重要性,给各个熵乘以一个系数 ∣ D v ∣ / ∣ D ∣ |D^v|/|D| ∣Dv∣/∣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)-\displaystyle\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)−v=1∑V​∣D∣∣Dv∣​Ent(Dv)

这里,计算结果 G a i n ( D , a ) Gain(D,a) Gain(D,a)被称之为信息增益,这就是一种人们用来衡量分裂属性选择合理程度的度量。

从信息增益的计算公式可以发现,它其实是分裂前的样本的信息熵减去按指定属性分裂后的各子样本的信息熵的加权和,可以这样理解:信息增益其实就是衡量按指定属性分裂后,样本不确定性的减少量。 从这个意义上来看,某个属性对应的信息增益越大,说明按照该属性划分所得的子样本就越纯。

著名的ID3算法,就是以信息增益为准则来选择分裂属性的。

1.2 增益率

我们可以通过一种简单的推想来思考一下信息增益的不足之处:假设所有样本在属性a上的取值都相同,那么属性a其实不具备区分样本的能力——属性a的信息增益为0;假设每个样本在属性a上的取值都不相同,那么按照属性a分裂的话,会得到与样本数量相同的子结点数,这时每个子节点的信息熵是0,于是属性a的信息增益达到了最大。

从上面的分析不难猜测,信息增益其实是“不公平”的,它会给那些可取值较多的属性赋予较大的增益。 因此,为了减少这种偏好所带来的影响,人们提出了「增益率」的概念。

从名字上来看,增益率显然就是从信息增益出发得出来的一个指标,其计算公式如下:

G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ratio(D,a)=\displaystyle\frac{Gain(D,a)}{IV(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)​

其中,

I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ IV(a)=-\displaystyle\sum_{v=1}^{V}\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|} IV(a)=−v=1∑V​∣D∣∣Dv∣​log2​∣D∣∣Dv∣​

称为属性a的“固有值”。

从固有值的定义可以看出,按属性a分裂后得到的子样本类别越多,那么其固有值就会越大,因此,给属性a的信息增益除以其固有值,可以起到调节的作用。

但是,增益率也不是完美的,它对可取值数目较少的属性有偏好。因此,另一个著名的决策树算法,C4.5,采用了一种启发式方法来寻找最优划分属性:先从所有候选属性中找到信息增益高于平均水平的属性,然后再从中选择增益率最大的属性。

1.3 基尼指数

除了用信息熵以外,还可以用「基尼值」来衡量数据集的纯度,其定义如下:

G i n i ( D ) = ∑ k = 1 ∣ γ ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ γ ∣ p k 2 Gini(D)=\displaystyle\sum_{k=1}^{|\gamma|}\sum_{k'\neq k}p_kp_{k'}=1-\sum_{k=1}^{|\gamma|}p_k^2 Gini(D)=k=1∑∣γ∣​k′​=k∑​pk​pk′​=1−k=1∑∣γ∣​pk2​

直觉上,基尼值衡量了从数据集中随机取出两个样本,其类别标记不一致的概率。 因此,基尼值约小,数据集的纯度越高。

基于基尼值,「基尼指数」的定义如下:

G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\displaystyle\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1∑V​∣D∣∣Dv∣​Gini(Dv)

于是,如果按照属性a进行划分后各子样本计算得到的基尼指数最小,那么属性a就是最优划分属性。

著名的CART决策树,就是以基尼指数来选择划分属性的。

2、如何处理过拟合

在决策树的训练中,为了尽可能地将样本分类正确,结点的划分过程将不断重复,就可能造成决策树的分支过多。这样的模型虽然在训练集上表现很好,但是它很有可能会把一些训练集自身的特点误认为是所有数据都具有的特点,从而产生过拟合,导致泛化能力很差。

决策树采取一种名为「剪枝」的策略来降低过拟合带来的影响。

决策树的剪枝可以分为预剪枝后剪枝两种。顾名思义,预剪枝指的是在生成决策树的过程中,对每个结点在分裂前进行估计,若当前结点的分裂不能导致模型泛化性能的提升,则停止继续分裂,并将当前结点作为叶子节点;后剪枝指的是对已经训练完成的决策树按照自底向上的顺序考察每个非叶子结点,若将该结点对应的子树替换成叶子结点能够带来泛化性能的提升,则执行这种替换。

这里引出了一个新的问题:如何判断剪枝之后的泛化性能提升与否呢?假设有验证集,那么只需要将剪枝前后的决策树分别在验证集上进行测试,判断一下分类的准确率;如果没有单独的验证集,那么就需要利用交叉验证的方式从训练集中选择一部分进行验证。

3、如何处理连续值

如果样本具有取连续值的属性,那么就无法通过枚举所有可能来进行分裂了。这时,一种易于想到的方案就是将连续值离散化。

一种简单且实用的离散化方法被称为「二分法」,C4.5中采用了这种方法。

给定样本集 D D D和连续属性a,假定a在 D D D上出现了n个不同的取值,首先将这些值从小到大进行排序,记为 { a 1 , a 2 , a 3 , . . . , a n } \{a_1,a_2,a_3,...,a_n\} {a1​,a2​,a3​,...,an​}。基于划分点 t t t可以将 D D D划分为 D t − D_t^- Dt−​和 D t + D_t^+ Dt+​,分别对应于 D D D中在属性a上取值不大于 t t t的样本和大于 t t t的样本。显然,对于相邻的属性取值 a i a^i ai与 a i + 1 a^{i+1} ai+1来说, t t t在区间 [ a i , a i + 1 ) [a^i,a^{i+1}) [ai,ai+1)中取任意值所产生的划分结果相同,因此,对于 { a 1 , a 2 , a 3 , . . . , a n } \{a_1,a_2,a_3,...,a_n\} {a1​,a2​,a3​,...,an​}中的任意的相邻值,取其中位点来作为候选划分点,那么,共需考虑的备选划分点为:

T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 } T_a=\displaystyle\{\frac{a^i+a^{i+1}}{2}|1\leq i\leq n-1\} Ta​={2ai+ai+1​∣1≤i≤n−1}

接下来,只需要遍历这些划分点,选出其中最优的来对样本进行划分。

以信息增益为例,其计算公式可以修改为:

G a i n ( D , a ) = max ⁡ t ∈ T a G a i n ( D , a , t ) Gain(D,a)=\max\limits_{t\in T_a}Gain(D,a,t) Gain(D,a)=t∈Ta​max​Gain(D,a,t)

其中, G a i n ( D , a , t ) Gain(D,a,t) Gain(D,a,t)是样本集 D D D基于划分点 t t t二分后的信息增益。

需要注意的是,若当前结点划分属性为连续属性,该属性还可以作为划分属性在其后代结点中出现。

「西瓜书」阅读笔记——决策树相关推荐

  1. 《西瓜书》阅读笔记——第四章

    <第四章>决策树 1. 基本流程 决策树(decision tree):从给定训练数据集学得一个模型用以对新示例进行分类. 决策树模型是基于树模型进行决策的,与人类在面临决策时的机制相似. ...

  2. 《西瓜书》阅读笔记——第一章

    第一章 1.1 基本术语 (色泽=青绿:根蒂=蜷缩:敲声=浊响), (色泽=乌黑:根蒂=稍蜷:敲声=沉闷), (色泽=浅白:根蒂=硬挺:敲声=清脆),... 数据集(data set):上述记录的集合 ...

  3. 【DataWhale学习】Day10~13-4章决策树——西瓜书学习摘录笔记

    [DataWhale学习]Day10~13-4章决策树--西瓜书学习摘录笔记 本文参考了周志华老师的西瓜书,李航老师的统计学习方法,谢文睿大佬的南瓜书(无推导尿点,仅加深理解食用) 决策树模型 ​ 决 ...

  4. 「龙书」之后,又一编译佳作诚招译者

    昨天被图灵奖刷屏了吗?就在刚刚过去的一天里,编译技术的死忠粉们纷纷奔走相告:「龙书」作者获图灵奖了!!! 2020年图灵奖颁给了Alfred Aho 和Jeffrey Ullman这两位大佬,以表彰他 ...

  5. 火遍日本 IT 界的「鱼书」终出续作,原来进阶深度学习竟然那么简单

    在日本,有一本书在 AI 领域的影响力超越了实力派的"花书",长期位列日亚"人工智能"类图书榜首,众多五星好评.它被众多高校名师为 AI 入门教材,如果你也是 ...

  6. 如何像「西瓜足迹」一样,将用户导流到公众号上变现?

    最近一款小程序「​西瓜足迹」在朋友圈刷屏了,PV破千万.玩法十分简单,选择城市-生成图片-发到朋友圈炫耀. 哪怕床舍不得你,但也要告知天下,自己有一颗向往自由的心. 一个个选择城市,坐标给人的仪式感, ...

  7. 送书 | 火遍日本 IT 界的「鱼书」终出续作!!!!

    (文末查看送书规则) 在日本,有一本书在 AI 领域的影响力超越了实力派的"花书",长期位列日亚"人工智能"类图书榜首,众多五星好评.它被众多高校名师作为 AI ...

  8. INSPIRED技术产品经理的天启(第二版)-【英文书】阅读笔记NO.2

    INSPIRED技术产品经理的天启(第二版)-[英文书]阅读笔记NO.1 INSPIRED技术产品经理的天启(第二版)-[英文书]阅读笔记NO.3 第一章 每一个伟大产品的背后 作者的信仰和本书的中心 ...

  9. INSPIRED技术产品经理的天启(第二版)-【英文书】阅读笔记NO.1

    本书全名为<INSPIRED: HOW TO CREATE TECH PRODUCTS CUSTOMERS LOVE>(Wiley) 中文直译过来就是<启发:如何创造客户热爱的科技型 ...

最新文章

  1. 整理Java基础知识--输出格式知识
  2. 《Hadoop集群与安全》一2.1 在Hadoop集群中配置操作系统
  3. 由一个Quiz想到的
  4. 81. 搜索旋转排序数组 II
  5. 如何防御syn flood的一些思路!
  6. MySQL日志(一条sql更新语句是如何执行的)
  7. 布易般的旅途(一) 像流水一般的生活
  8. 挑选32 2K显示器
  9. VoIP服务器处理协议,多协议VoIP服务器的研究与实现
  10. 【计算机网络】一篇文章带你分清波特率和比特率~
  11. saas平台产品使用合同(模板)
  12. APP抓包工具Fidder
  13. 基于JavaSwing+Mysql的超市商品管理系统设计和实现
  14. C/C++银行账户管理系统
  15. 新钛云服冯祯旺:让云管理成为水电一样的基础服务
  16. linux rm 文件找回_linux rm -rf * 文件恢复记
  17. 眼底视网膜血管增强方法(四)Frangi滤波
  18. 群晖QuickConnect与DDNS之间有何区别?
  19. 社会治理网格化新华三移动IT助江西铺设综合治理“一张网”
  20. Vue文件上传、下载

热门文章

  1. Photon在unity中的使用
  2. 《统计学》——思考题第二章数据的搜集(贾俊平)
  3. vue组件间通信六种方式
  4. 几个好玩有趣的Python入门实例
  5. 原创科幻短篇《腿控》
  6. 聚英国际|【燎原计划启动周第二期AMA】Filecoin经济模型及热点争议解读
  7. 研华1716板卡的问题
  8. 项目经理必备的软技能,你有吗?
  9. 06年计算机竞赛,2006年数学建模校内竞赛结果
  10. 51单片机之蜂鸣器为什么不响