前言
博主第一次接触机器学习,内容可能有许多原文复现,但是我尽量用自己的话来讲,觉得写得还行的话点个喜欢,谢谢!
读书笔记第一目的是为了总结,第二是顺便在博客上记录我的学习历程,同时也希望读者能有一点点收获吧~如果不对的地方,还请多多指教!
正文
周志华的机器学习第四章讲的是关于决策树。
1.决策树的基本流程
顾名思义,决策树就是基于树的结构来进行决策的。如图4.1所示,从树的根结点,到叶子结点(也就是判别结果),其中一般会经过若干个中间结点,每个中间结点对应一个属性测试,例如图中的色泽属性,根蒂属性,敲声属性。其中根结点是包含样本全集的,每经过一个中间结点,则会根据中间结点属性测试的结果划分到子结点中。
显然,对于每个样本,都有对应的属性集,例如图中的(色泽,根蒂,敲声),那么决策树的判别路径是如何规划的呢?是先判别色泽还是先判别根蒂?当前中间结点还有没有进一步生成子结点的必要?这就涉及到了路径的划分选择以及剪枝问题了。总的来说,一个决策树的基本流程是遵循简单且直观的“分而治之”策略,如图4.2所示。
从图4.2显然得出,决策树的生成是一个递归过程。什么叫递归过程呢?形象的来讲:决策树在生成过程中,从根结点开始,会一层一层往下延拓,生成更多的中间结点。易知由于样本的种类是有限的,样本的属性类别(色泽,纹理,敲声)等也是有限的,所以这颗决策树的层数(高度)以及每一层的中间结点数当然是有限的,而这个就依靠“递归条件”来限制这颗决策树的生成了。
例如在根节点的时候,经过递归条件判别“样本集是否全部都是一个种类的?” 如果是的话还有继续接下来按各种属性进行分类判别吗? 答案是“没有必要” 。 所以这个决策树的生成过程至此结束!因为我们就是要将样本分出类别来,而样本本来就是属于同一个类别的,所以没有继续分类的必要了。
在决策树的生成过程中,最重要的步骤之一就是步骤8,划分选择问题,这决定了这颗决策树的判别路径。
2.划分选择
首先明确决策树学习的目的是为了产生一颗泛化能力强的决策树。从根节点到每个叶子结点,我们都希望经过每个结点之后,分类结果会越来越清晰。例如在根节点时所有样本共有5类,经过第一个中间结点后,衍生了两个子结点,两个子结点的样本类别分别包含3类,换句话来说就是经过第一个中间结点,在一定程度上把部分不同类别的结点分开了,两个子结点中的样本类别纯度变高了。
让结点的“纯度”越来越高,就是划分选择问题的准则!
一般来讲,通过不同属性(色泽,纹理,敲声)的属性测试,在一定程度上都可以提升结点的纯度,狭路相逢勇者胜,我们必须从中挑出一个纯度提升效果最优的,那么该如何判别纯度提升效果最优呢?介绍三种判别准则:1.信息增益 2.增益率结合信息增益 3.基尼指数
而实际上,基于不同的准则,其实对泛化性能的影响是有限的,[Raileanu and Stoffel,2004]对信息增益以及基尼指数进行理论分是表明,在泛化性能方面两者仅有2%的不同。但是不同的准则对于决策树的尺寸会有较大影响,这就体现在了训练时间以及测试时间上。
2.1基于信息增益的划分选择
著名的ID3决策树学习算法就是以信息增益为准则来进行划分选择的。那么什么是“信息增益”?
我们先了解几个基础概念:
信息熵:一般来说,信息熵是用来量化信息的不确定性。什么叫不确定性能呢?
例如这样一则信息:”太阳从东边升起“ ,显然这则信息是所有人都知道的,是无可置疑的,所以我们认为该信息不确定性为0. 而“未来半个月内广州会下雨”,显然这个信息是未知的,不确定的,具有一定不确定性的。那么如何量化不确定性?
在数学上,一个离散随机变量X的熵H(x)定义为: