zoukankan      html  css  js  c++  java
  • 李航-统计学习方法-笔记-5:决策树

    基本模型

    简介:决策树可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。

    决策树学习通常包括3个步骤:特征选择决策树生成剪枝

    决策树的内部结点表示一个特征或属性,叶结点表示一个类。

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

    概率分布:决策树将特征空间划分为互不相交的单元,并在每个单元定义一个类的概率分布。决策树的一条路径对应于划分中的一个单元,决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成,即P(Y|X)P(Y|X),叶结点(单元)上的条件概率往往偏向某一类。

    决策树的学习:决策树学习本质上是从训练数据集中归纳出一组分类规则,找到一棵“与训练数据矛盾较小,同时具有很好的泛化能力”的树。

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

    启发式方法:从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中通常采用启发式方法,近似求解这一最优化问题。这样得到的决策树是次优的(sub-optimal)。

    通常的做法是递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。

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

    特征选择

    直观上,如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据集分割成子集,使得各个自己在当前条件下有最好的分类,那么就更应该选择这个特征。

    通常特征选择的准则是信息增益信息增益比

    信息增益

    熵(entropy):熵度量的是随机变量的不确定性。熵越大,不确定性越大。

    随机变量X的熵定义为:$H(X)=-sum_{i=1}^np_ilog p_i$

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

    $H(Y|X)=displaystylesum_{i=1}^np_iH(Y|X=x_i)$

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

    信息增益:表示得知特征X的信息而使得类Y的信息的不确定性减少的程度,特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A在给定条件下D的经验条件熵H(D|A)之差,即

    $$g(D,A)=H(D)-H(D|A)$$

    $$H(D)=-displaystylesum_{i=1}^Kfrac{|C_k|}{|D|}log_2frac{|C_k|}{|D|}$$

    $$H(D|A)=sum_{i=1}^nfrac{|D_i|}{|D|}H(D_1)=-sum_{i=1}^nfrac{|D_i|}{|D|}displaystylesum_{i=1}^Kfrac{|C_k|}{|D|}log_2frac{|C_k|}{|D|}$$

    其中$|D|$表示样本容量,有K各类$C_k$,$|C_k|$为类$C_k$的样本个数,设特征A有很多不同的取值,将D划分为$D_1,D_2,...D_n$,设子集$D_i$中属于类$C_k$的样本集合为$D_{ik}$.

    信息增益比:以信息增益划分,存在“偏向于选择取值较多的特征”的问题,用信息增益比可以校正这一问题。

    $$g_R(D,A)=frac{g(D,A)}{H_A(D)}$$

    其中$H_A(D)=-sum_{i=1}^nfrac{|D_i|}{|D|}log_2frac{|D_i|}{|D|}$,n是特征A取值的个数。

    决策树的生成

    ID3和C4.5

    决策树生成的经典算法有ID3和C4.5。

    ID3:ID3的核心是在各个结点上应用“信息增益”准则选择特征。

    从根结点出发,选择信息增益最大的特征作为结点特征,由该特征的不同取值建立子结点,对子结点递归调用以上方法。直到所有特征的信息增益均很小(设一个阈值εε)或没有特征可选为止。

    C4.5:对ID3算法进行了改进,生成过程中用信息增益比来选择特征。

    决策树剪枝

    剪枝: 学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树(过拟合)。解决办法是考虑决策树的复杂度,对已生成的树进行简化,这一过程称为剪枝(pruning)。

    具体地,从树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。

    决策树的剪枝往往通过极小化决策树整体的损失函数来实现。

    设树T的也节点个数为|T|,t是树T的叶节点,该叶节点有$N_t$个样本点,其中k类的样本点有$N_{tk}$个,$H_t(T)$为叶节点t上的经验熵。则决策树学习的损失函数可以定义为:

    其中$C(T)$表示模型对训练数据的训练误差。$|T|$表示模型复杂度,参数$alphageq 0$控制两者之间的影响,较大促使选择较简单的模型,较大选择复杂模型。

    剪枝,就是$alpha$确定时,选择损失函数最小的模型。

    “决策树生成”只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好的拟合。而“决策树剪枝”通过优化损失函数,还考虑了减小模型复杂度。“决策树生成”学习局部的模型,而“决策树剪枝”学习整体的模型。

    具体做法

     

    CART算法

    分类与回归树(CART)模型同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。

    CART假设决策树是二叉树。

    决策树生成

    决策树的生成就是递归地构建二叉决策树的过程,对回归树用平方误差最小化准则,对分类树用基尼指数最小化准则。

    CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布。CART算法分为两步:

    (1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大。
    (2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

    1.回归树的生成

    2.分类树的生成

    上图显示了二分类问题中,Gini,半熵和分类误差率的关系,可以看到Gini和半熵很接近,都可近似表示分类误差率。

    CART剪枝

    具体做法:

    (其中$alpha$的值可简单由等式得出)

     


  • 相关阅读:
    perl BEGIN block and END block
    大括号对struct进行初始化
    c中的变量
    电商架构设计-通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性
    电商架构设计-通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性
    快稳炫:电商峰值系统架构三字诀
    快稳炫:电商峰值系统架构三字诀
    商业研究(14):出境游和自由行,接机-送机-包车-当地玩乐
    商业研究(14):出境游和自由行,接机-送机-包车-当地玩乐
    Android自定义View之ProgressBar出场记
  • 原文地址:https://www.cnblogs.com/ditingz/p/11805720.html
Copyright © 2011-2022 走看看