4.1 基本流程
决策数(decision tree)是一类常见的机器学习方法。顾名思义,决策树是基于树结构来进行决策的。例如,我们要决策“这是好瓜吗“,通常会进行一系列的”子决策“:先看颜色、根蒂、声音的好坏来得出最终决策。
基于数结构进行决策:
-
每个”内部结点“对应于某个属性上的”测试“(test)
-
每个分支对应于该测试的一种可能结果(即属性的某个取值)
-
每个”叶结点“对应于一个”预测结果“
-
根节点包含样本全集
学习过程:通过对训练样本的分析来确定”划分属性“(即内部结点所对应的属性)。
预测过程:将测试实例从根节点开始,沿着划分属性构成的”判定测试序列“下行,直到叶节点。
决策树学习的目的是为了生成一棵泛化能力强、即处理未见示例能力强的决策树。
显然,决策树的生成是一个递归过程。在决策树基本算法中,有三种情形会导致递归返回:
-
当前结点包含的样本全属于同一类别,无需划分。
-
当前结点属性集为空,或是所有样本在所有属性上取值相同,无法划分。
-
当前结点包含的样本集合为空,不能划分。
4.2划分选择
决策树学习的关键是第8行,即如何选择最优划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的”纯度“(purity)越来越高。
4.2.1信息增益
决策树的提出很大程度是收到了信息论的启发,信息论中最重要的一个概念就是“熵”。
”信息熵“(information entropy)是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为pk(k=1,2,……,|y|),则D的信息熵可以定义为:
Ent(D)的值越小,则D的纯度越高。信息增益直接以信息我i基础,计算当前划分对信息熵所造成的变化。
例子:
信息增益追求的结果其实是,每一步划分的结点更干净。
4.2.2增益率(Gain Ratio)
4.2.3基尼指数(Gini Index)
4.3剪枝处理
剪枝(pruning)是决策树学习算法对付”过拟合“的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这是就可能因训练样本学的”太好了“,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可以通过主动去掉一些分支来降低过拟合的风险。
决策树剪枝的基本操作有”预剪枝“(prepruning)和”后剪枝“(post-pruning)。
预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶节点;
后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上地对非叶节点进行考察,若将该结点对应的子树替换为叶节点能带来决策树泛化能力提升,则将该子树替换为叶节点。
为什么剪枝在一些情况下会提高模型泛化性能?
回忆:过拟合:
把训练数据中不该学的特性学到了,并且错误的把他当成了一般规律。
决策树的划分你过程是不断往下走的,希望每个结点尽可能的干净,极端程度上每一个叶节点上的数据是比较少的,在走到很深的树枝时,它学到的就已经不再是一般规律了,而是少数几个样本所拥有的性质。那么,这个过拟合的可能性就非常大了,所以将它剪枝,去掉的代价是模型的性能会下降,但是好处是,这几个样本的特性故意不去学习,反而减少过拟合风险。
预剪枝与后剪枝
4.4连续与缺失值
到目前为止,我们仅讨论了基于离散属性来生成决策树。现实学习任务中常会遇到连续属性,有必要讨论如何在决策树学习中使用连续属性。
由于连续属性的可取值数目不再有限,因此,不能直接根据连续属性的可取值来对结点 进行划分。此时,连续属性离散化技术可派上用场。最简单的策略是采用二分法对连续属性进行处理,这正是C4.5决策树算法中采用的机制。
boosting也会用到这个思想。