zoukankan      html  css  js  c++  java
  • 决策树

    概述

     决策树(decision tree)是一种基本的分类与回归方法(此处讨论分类)。

    决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快

    学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。

    决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。

    决策树模型与学习

    1、决策树模型

    定义5.1 (决策树) :分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node )和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。

    用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。

    图中圆和方框分别表示内部结点和叶结点。

    2、决策树与if-then规则

    可以将决策树看成一个if-then规则的集合,转换成if-then规则的过程:由决策树的根结点到叶结点的每一条路径构建一条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。

    决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。

    这里所谓覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。

    3、决策树与条件概率分布

    决策树还表示给定特征条件下类的条件概率分布。这一条件概率分布定义在特征空间的一个划分(partition)上,将特征空间划分为互不相交的单元(cell)或区域(region),并在每个单元定义一个类的概率分布就构成了一个条件概率分布。

    决策树的一条路径对应于划分中的一个单元。决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成。条件概率分布可以表示为P(Y|X),X取值于给定划分下单元的集合,Y取值于类的集合。各叶结点(单元)上的条件概率往往偏向某一个类,即属于某一类的概率较大。决策树分类时将该结点的实例强行分到条件概率大的那一类去。

    4、决策树学习

    决策树学习本质上是从训练数据集中归纳出一组分类规则。可能有多个,可能没有。我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。

    从另一个角度看,决策树学习是由训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。

    决策树学习的损失函数:通常是正则化的极大似然函数

    决策树学习的策略:是以损失函数为目标函数的最小化

    决策树学习的算法:通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题,得到的决策树是次最优(sub-optimal)的。

    剪枝:决策树可能对训练数据有很好的分类能力,但可能发生过拟合现象.。所以需要对已生成的树自下而上进行剪枝,将树变得更简单,从而使它具有更好的泛化能力。具体地,就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点.

    特征选择:如果特征数量很多,在决策树学习开始时对特征进行选择,只留下对训练数据有足够分类能力的特征。

    由于决策树表示一个条件概率分布,所以深浅不同的决策树对应着不同复杂度的概率模型。决策树的生成对应模型的局部选择,决策树的剪枝对应于模型的全局选择。决策树的生成只考虑局部最优,决策树的剪枝则考虑全局最优。

    特征选择

    1、特征选择问题

    特征选择在于选取对训练数据具有分类能力的特征。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的.经验上扔掉这样的特征对决策树学习的精度影响不大.通常特征选择的准则是信息增益或信息增益比。

    2、信息增益

    (1)先给出熵和条件熵的定义:

    熵:表示随机变量不确定性的度量。

    设X是一个取有限个值的离散随机变量,其概率分布为:

    则随机变量X的熵定义为:

    条件熵:条件嫡H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。

    设有随机变量(X,Y),其联合概率分布为:

    定义X给定条件下Y的条件概率分布的熵对X的数学期望:

    当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵( empirical entropy)和经验条件熵(empirical conditional entropy )

    (2)然后得到信息增益的定义:

      

    信息增益的解释:

    决策树学习应用信息增益准则选择特征.给定训练数据集D和特征A,经验熵H(D)表示对数据集D进行分类的不确定性.而经验条件嫡H(D}A)表示在特征A给定的条件下对数据集D进行分类的不确定性.那么它们的差,即信息增益,就表示由于特征A而使得对数据集D的分类的不确定性减少的程度。

    信息增益的算法流程:

    输入:训练数据集D和特征A;

    输出:特征A对训练数据集D的信息增益g(D,A)。

    (3)例子:

     

    3、信息增益比

    以信息增益作划分时,存在偏向于取值较多的特征的问题。在分类问题困难时,也就是说在训练数据集的经验熵大的时候,信息增益值会偏大,反之,信息增益值会偏小.使用信息增益比(inforcnatioa gain ratio)可以对这一问题进行校正.这是特征选择的另一准则.

    但是增益率则对可能取值数目较少的属性有所偏好,因此在C4.5算法中,进行特征选择时,往往先选择信息增益高于平均水平的属性,然后再从中选择信息增益比最大的那个。

     决策树的生成

    1、ID3算法

    (1)介绍

    ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征.递归地构建决策树.具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点:再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止.最后得到一个决策树.

    ID3相当于用极大似然法进行概率模型的选择。

    ID3算法只有树的生成,所以该算法生成的树容易产生过拟合。

    (2)算法流程

     

    (3)例子:

    2、C4.5的生成算法

    C4.5算法与ID3算法相似,C4.5算法对ID3算法进行了改进.C4.5在生成的过释中,用信息增益比来选择特征.

    决策树的剪枝

    在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning).具体地,剪枝从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型.

    一种简单的剪枝方法如下:

    (1)先看一下决策树的损失函数的定义

    决策树的剪枝往往通过极小化决策树整体的损失函数(loss fimction)或代价函数( cost function)来实现.设树T的叶结点个数为|T|, t是树T的叶结点,该叶结点有Nt个样本点,其中k类的样本点有Ntk个,k=1,2,...,K,Ht(T)为叶结点t上的经验熵,a>=0为参数,则决策树学习的损失函数可以定义为:

    其中经验熵为:

    此时有

    其中C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,第二项表示模型复杂度,较大的a促使选择较简单的模型(树),较小的a促使选择较复杂的模型(树).a=0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度.
    剪枝,就是当a确定时,选择损失函数最小的模型,即损失函数最小的子树.
    损失函数的极小化等价于正则化的极大似然估计.所以,利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择.

    (2)再看一下剪枝算法的流程

     

    扩展(来自西瓜书):

    剪枝有如下两种:

    预剪枝:

    在进行特征选择时,利用验证集比较该节点划分前后的分类正确率,如果增加则进行划分,否则不划分。

    该方法优点省时,但是容易忽略后续展开的更优的决策树,因此容易带来欠拟合风险。

    后剪枝:

    在决策树完全生成后,通过回溯节点,利用验证集比较该节点取消前后的正确率,进行是否合并该节点子集。

    该方法欠拟合风险较小,但是相对耗时。

    CART算法

    分类与回归树(classification and regression tree. CART)模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法.CART同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归.以下将用于分类与回归的树统称为决策树.

    CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。

    1、CART生成

    (1)回归树的生成

     回归树的模型:

    回归树的学习策略:

    回归树的生成:

    (2)分类树的生成

    首先了解一下基尼指数:

    直观上说,基尼指数反映了从数据集D中随机抽取两个样本,其类别标记不一样的概率,因此该值越小,D的纯度越高。

    然后看一下分类树的生成:

    2、CART剪枝

    CART剪枝算法:

     

    缺失属性处理

    1、在进行特征选择时

    对某个属性进行计算信息增益等指标时,我们不用该属性缺失的样本。对于没有缺失的样本子集计算经验熵等参数,但是我们要为该属性的指标加一个权重,如下:

    那个权值系数计算如下,首先对所有样本赋予相应权值,然后:

    2、在进行分类时

    对于缺失属性的待检测样本,我们通过如下方法进行分类:

    一个样本带着它自己权值走进了决策树的大门,遇到它有的属性则正常划分,权值不做改变,遇到没有的属性,则复制一下,两个子集都选择,但是权值改变为

    其中

    再其中

    多变量决策树

  • 相关阅读:
    JAVA 大数据基本操作
    C++ set 基本操作
    JVM 线上故障排查基本操作
    Git基本常用命令
    Git 入门:概念、原理、使用
    30分钟学会如何使用Shiro
    做个男人,做个成熟的男人,做个有城府的男人
    Nginx的最基本功能以及简单配置
    博客网站
    单点登录原理与简单实现
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10125827.html
Copyright © 2011-2022 走看看