目录
前言
本文主要记录了有关机器学习问题中决策树的内容,思路均来源于周志华老师《机器学习》第四章的内容。
一、基本流程
以二分类任务为例,希望从给定训练数据集中学得一个模型用以对新示例进行分类,将样本分类的任务,可以看作是对于“当前样本是否为正类”这个问题的“决策”或“判定”过程。此决策过程如下图所示:
决策过程的最终结论对应我们希望的判定结果,如“是”或“不是”好瓜;
决策过程中提出的每个判定问题都是对某个属性的“测试”,如“色泽=?”“根蒂=?";
每个测试结果或是导出最终结论,或是导出进一步的判定问题,其考虑范围是上次决策结果的限定范围内。
一般的,一颗决策树包含一个根结点,若干个内部结点和若干个叶结点:叶结点对应于决策结果,其他每个结点则对应一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集;从根结点到每个叶节点的路径对应了一个判定测试序列。
决策树学习目的在于产生一颗泛化能力强的决策树,基本流程遵循“分而治之”策略,决策树学习的基本算法为:
决策树生成为递归过程。在算法中存在以下情形导致递归返回:
(1)当前结点包含的样本属于同一个类别,不用划分;
(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
(3)当前结点包含的样本集合为空,不能划分。
二、划分选择
从逻辑角度,决策树模型为if else语句的组合;从几何角度,是根据某种准则划分特征空间;决策树学习的关键是第8行的内容。最终目的是:随着划分过程不断进行,希望决策树分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。
2.1 ID3决策树
“信息熵”是度量随机变量X的不确定性的指标,在决策树问题中,常用来度量样本纯度,在“对数几率回归问题”中,我们利用信息论推导损失函数时,有详细介绍相关公式:
“信息熵”用于度量样本集合纯度:
“条件熵”:
“信息增益”:
一般而言,信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大。可以用信息增益来进行决策树的划分属性选择,即在基本算法中第8行选择信息增益为属性,得到的决策树为ID3决策树:
2.2 C4.5决策树
信息增益准则对于可能取值数目过多的属性有所偏好,其本质原因在于每个取值里面包含的样本量太少,为了减少这种偏好可能带来的不利影响,C4.5决策树选择使用“增益率”代替“信息增益”,增益率定义为:
综合优缺点,C4.5决策树并未完全使用“增益率”代替“信息增益”,而是采用一种启发式的方法:先选出信息增益高于平均水平的属性,然后再从中选择增益率最高的。
2.3 CART决策树
基尼值(针对样本总体属性):从样本集合D中随机抽取两个样本,其类别标记为不一致的概率。因此,基尼值越小,碰到异类的概率就越小,纯度对应就越高。
属性a的基尼指数(针对某个属性):类比信息熵和条件熵。
CART决策树的实际构造算法如下:
三、剪枝处理
剪枝操作是决策树学习算法对付“过拟合”的主要手段。因为结点划分过程的不断重复,有时会造成决策树分支过多,以致于将训练集自身的一些特点当作了所有数据都具有的一般性质而产生过拟合现象。决策树剪枝的基本策略有:
预剪枝:在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化能力的提升,则停止划分并将当前结点标记为叶结点;
后剪枝:先从训练集生成一颗完整的决策树,然后再自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化能力的提升,则将该子树替换为叶结点。
先制定衡量决策树泛化能力的统一标准:
性能评估方法:使用留出法,即预留一部分数据用于“验证集”以进行性能评估。
划分选择:采用信息增益准则来进行划分属性选择。
3.1预剪枝
基于信息增益准则,我们选取属性“脐部”对训练集进行划分,产生三个分支,至于是否进一步划分,预剪枝需要对划分前后的泛化性能进行估计。
在划分之前,所有样例集中在根结点;若不进行划分,则该结点被标记为叶结点,其类比标记为训练样例数最多的类别,本例中记为“好瓜”。用表二的验证集对这个单点决策进行评估,即可以得到对应的验证集精度,来决定是否需要进一步划分。
基于表二生成的未剪枝决策树:
基于表二生成的预剪枝决策树:
这是一颗仅有一层划分的决策树,亦称“决策树桩”。拥有以下特点:
① 预剪枝使得决策树的很多分支都没有“展开”,这不仅降低了过拟合的风险,还显著减少了训练时间开销和测试时间开销。
② 但另一方面,有些分支虽不能带来泛化能力的提升,但在其基础上进行后续的划分很有可能导致其性能的显著提高,预剪枝的“贪心”本质会给其对应的决策树带来欠拟合的风险。
3.2后剪枝
后剪枝先从训练集生成一颗完整的决策树,开始自下往上考虑将其领衔的分支剪除,相对于将结点替换为叶结点,比较替换前后的验证集精度大小来决定是否需要替换。
基于表二生成的未剪枝决策树:
基于表二生成的后剪枝决策树:
后剪枝决策树通常比预剪枝决策树保留了更多的分支,有以下特点:
① 欠拟合风险很小,泛化性能往往优于预剪枝决策树。
② 由于是在生成完全决策树之后进行的,且需要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大很多。
四、连续与缺失值
4.1连续值处理
目前只讨论了基于离散属性来生成决策树,但现实学习任务中常会遇见连续属性。此时属性可取数目不再有限,不可直接根据其可取值对结点进行划分。应该采用连续属性离散化技术,最直接的是采用二分法对连续属性进行处理:
显然,对于相邻的属性取值、来说,在之间取任意值对应的划分结果相同。因此,对于连续属性,我们可考察包含个元素的候选划分点集合:,
即把区间的中点作为候选划分点,再像离散属性值一样来考察划分点,选取最优的划分点进行样本集合的划分。
4.2缺失值处理
现实中容易遇到样本的某些属性值丢失的情况,在考虑利用有缺失属性值的训练样例来进行学习时,需要解决两个问题:
①如何在属性值缺失的情况下进行划分属性选择?
②给定划分属性,若样本在属性上的值缺失,应该如何对样本进行划分?
给定训练集和属性,记表示中在属性上没有缺失值的样本子集:
五、多变量决策树
若将每个属性视为坐标空间的一个坐标轴,则个属性描述的样本对应维维空间的一个数据点,对样本的分类意味着在这个坐标空间里寻找不同样本之间的分类边界。决策树的分类边界特点在于:由若干个与坐标轴平行的分段组成,即“轴平行”。
这样的分类边界使得学习结果有较好的可解释性,但在学习任务比较复杂时,必须使用很多段划分,此时的决策树会很复杂,预测时间开销很大。
“多变量决策树”中,非叶结点不再是某个属性,而是对属性的线性组合进行测试,即为形如的线性分类器,其中为属性的权重,和可在该结点所含的样本集和属性集中学得。
与传统的“单变量决策树”不同,在多变量决策树的学习过程中,不是为每个非叶结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器。
总结
以上思路均来源于《机器学习》这本书第四章的内容。仅代表个人的思路和理解,如有错误欢迎指正!