决策树(上)

 

1 特征选择算法

  特征选择的理解:在决策树算法中,每次选择一个最优的特征来分支是最最重要的一步,那究竟如何选择这个最优的特征就变成了关键问题。对于拿到的数据中,什么类别标签的样本都有,是十分不肯定的,换句话说就是十分混乱的。用数据中其中一个特征来划分数据以后,数据的混乱程度都会变小,最优的划分特征就是经过此特征划分以后数据的混乱程度变的最小的那一个特征。下面分别介绍两种选取最优划分特征的算法,信息增益和信息增益率。函数

2 信息增益学习

  为了引出信息增益算法,首先定义出信息熵,联合熵和条件熵的概念。优化

  信息熵为信息论中的概念,熵表示随机变量不肯定性的度量,即信息熵越大的事物,它的不肯定性就越大,对于随机变量X公式以下:spa

  其中,意思是:随机变量X的取值为X时的几率。n为X有n种取值。3d

  举个栗子,假如X的取值只有0和1,则X的分布为:blog

  则X的熵为:递归

  第二个概念是联合熵,设有两个随机变量X和Y,其联合熵为:事件

  第三个概念是条件熵,对于条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不肯定性。同时可定义为Y在给定条件X下Y的条件几率分布的熵对X的数学指望,公式以下:数学

  其中p = P(X = xi),i = 1, 2, 3, ..., n。

  下面主角就能够登场了,信息增益表示得知特征X的信息而使得类Y的信息的不肯定性减小的程度,通俗来讲就是某事件的信息熵与以某个特征为条件的条件熵之差。

   特征A对训练数据集D的信息增益g(D, A),定义为集合D的经验熵与特征A给定条件下D的条件熵H(D|A)之差,公式为:

  信息增益也叫互信息,决策树学习中的信息增益等价于训练数据集中类与特征的互信息。

  决策树学习应用信息增益的准则选择特征,给定训练数据集D和特征A,经验熵H(D)表示对数据集D进行分类的不肯定性。而条件熵H(D|A)表示在特征A给定的条件下对数据集D进行分类的不肯定性,那么他们的差就是信息增益,就表示因为特征A而使得对数据集D的分类的不肯定性减小的程度。显然,对于数据集D而言,信息增益依赖于特征,不一样的特征每每具备不一样的信息增益,信息增益大的特征具备更强的分类能力。

   下面再次举一个栗子,每一个样本有三个特征,第一个是是否有房,第二个特征是婚姻情况,有三个可能:单身,已婚,离异,第三个特征是年收入,是一个连续值,标签是是否拖欠贷款,是一个二分类问题,样本以下:

是否有房 婚姻情况 年收入 是否拖欠贷款
单身 125k
已婚 100k
单身 70k
已婚 120k
离异 95k
已婚 60k
离异 220k
单身 85k
已婚 75k
单身 90k

  根据是否有房计算信息增益:

  首先计算样本的经验熵:  

  而后计算在是否有房的特征(A)下计算条件经验熵:

    有房的经验熵:

    无房的经验熵:

    特征A下的条件经验熵:

 

  最后计算信息增益:

 

3 信息增益率

   以信息增益做为划分训练集特征有些缺点:它偏向于选择取值较多的特征。而使用信息增益率能够对这一问题进行校订,能够做为另外一个特征选择的准则。

  对于数据集D和某一特征A,则特征A对训练集D的信息增益比gR(D, A)定义为:其信息增益与训练数据集D关于特征A的熵HA(D)之比,即:

  其中n为特征A的取值个数,|D|为数据集D的样本个数,|Di|为样本的特征A第i个取值的样本个数。

4 ID3决策树生成

  决策树生成方法:从根节点开始,在根节点上有全部的样本,而后对样本计算全部特征的信息增益,选取信息增益最大的特征做为节点的特征,并用特征的不一样的取值创建子节点;再对子节点递归的调用以上方法,构建决策树;直到全部特征的信息增益都很小或没有特征能够选择。

  ID3决策树生成算法:

  输入:训练数据集D,特征集A,阈值

  输出:决策树T

  (1)若训练集D中全部的样本属于同一类Ck,则T为单节点树,并将类Ck做为该结点的类标记,返回树T;

  (2)若特征集A为空集合,则T为单结点树,并将D中样本数最多的类Ck做为该结点的类标记,返回数T;

  (3)不然,计算A中各特征对D的信息增益,选择信息增益最大的特征Ag;

  (4)若是Ag的信息增益小于阈值,则置T为单结点树,并将D中样本数最大的类Ck做为该结点的类标签,返回树T;

  (5)不然,对Ag的每个可能的值ai,按照Ag=ai将D分割成若干非空子集Di,将Di中样本数最多的类做为标签,构建子结点,由结点及其子结点构成树T,返回T;

  (6)对第i个子结点,以Di做为训练集,以A-{Ag}做为特征集,递归的调用步(1)~(5),获得子树Ti,返回Ti。

  ID3算法并无对过解决过拟合问题。

5 C4.5决策树的生成

  C4.5对算法进行改进,将信息增益改成信息增益率做为选择最优特征的准则

  C4.5决策树生成算法:

  输入:训练数据集D,特征集A,阈值

  输出:决策树T

  (1)若训练集D中全部的样本属于同一类Ck,则T为单节点树,并将类Ck做为该结点的类标记,返回树T;

  (2)若特征集A为空集合,则T为单结点树,并将D中样本数最多的类Ck做为该结点的类标记,返回数T;

  (3)不然,计算A中各特征对D的信息增益率,选择信息增益率最大的特征Ag;

  (4)若是Ag的信息增益率小于阈值,则置T为单结点树,并将D中样本数最大的类Ck做为该结点的类标签,返回树T;

  (5)不然,对Ag的每个可能的值ai,按照Ag=ai将D分割成若干非空子集Di,将Di中样本数最多的类做为标签,构建子结点,由结点及其子结点构成树T,返回T;

  (6)对第i个子结点,以Di做为训练集,以A-{Ag}做为特征集,递归的调用步(1)~(5),获得子树Ti,返回Ti。

6 决策树的剪枝

  只用前面的方法生成的决策树有一个问题,那就是过分拟合了训练集,为了解决这个问题,须要对生成的树进行剪枝,又叫作后剪枝,是决策树算法经常使用的解决过拟合问题的算法。

  决策树的剪枝经过极小化决策树总体的损失函数来实现,假设有一个已经生成的决策树,这颗决策树的叶节点个数为 |T|, 设t是这颗决策树的某一个叶节点,该叶节点有Nt个样本点,在这Nt个样本点中属于k类的样本点有Ntk个,k是一个从1到K的整数,Ht(T)是叶节点t上的经验熵,为大于哦的常数,则决策树的学习的损失函数为:

  其中经验熵为:

   将经验熵的公式带入到损失函数中:

  

  能够将公式的第一项记为C(T),则

  

  在最后的公式中,C(T)表示模型的训练偏差,即模型与训练集的拟合程度,|T|表示模型的复杂度,当对训练数据拟合的越好,C(T)会越小,可是|T|会愈来愈大,所以模型的拟合程度和复杂度是一堆矛盾体,调整参数能够在对训练集的拟合程度和模型的复杂度之间找到一个平衡点。参数越大,会促使选择较简单的模型,参数越小,会促进选择对数据集拟合程度好的模型,当参数等于零时,只考虑模型与训练集的拟合程度,不考虑模型的复杂度。

  能够看出,决策树的生成算法只考虑了经过提升信息增益或信息增益率来对数据集进行更好的拟合,则决策树的剪枝经过优化损失函数还考虑了减小模型的复杂度,决策树生成学习局部的模型,而决策树的剪枝学习总体的模型。

  树的剪枝算法:

  输入:生成算法产生的整个树T,参数

  输出:修剪后的子树T;

  (1)计算每一个结点的的经验熵

  (2)递归的从树的叶节点向上回缩

     设一组叶节点回缩到父节点以前与以后的总体树分别为Ta, Tb,其对应的损失函数值分别是,若是

     则进行剪枝,即将父节点变成新的叶节点

  (3)返回(2),直到不能进行为止,获得最小子树。

 

本篇随笔主要参考李航老师的统计学习方法 

相关文章
相关标签/搜索