【分类算法】决策树

目录

 

一、预备知识:

二、决策树定义

三、决策树

1、决策树基础--Hunt算法

2、属性划分

​ 3、属性划分标准

4、决策树算法

5、模型过拟合

6、评估分类器性能


一、预备知识:

分类:通过学习得到一个目标函数f,也称为分类模型,把每一个属性集x映射到一个预先定义的类标号y。

目的:描述性建模:分类模型作为解释性工具,用于区分不同类中的对象

           预测性建模:分类模型用于预测未知记录的类标号

分类技术是一种根据输入数据集建立分类模型的系统方法。


二、决策树定义

    类似于流程图的树结构

根节点(root node):只出不进(数据集)

内部节点(internal node)/子节点:有进有出(归类属性)

叶节点(leaf node)/终结点:只进不出(类分布)

三、决策树

1、决策树基础--Hunt算法

步骤:

(1)如果Dt中所有数据都属于同一个类yt,则t是叶结点,用yt标记。 
(2)如果Dt中包含属于多个类的数据,则选择一个属性,将数据划分为较小子集。创建子女结点,将数据按属性放入子女结点中,然后递归调用该算法。

但是该算法对于大多数情况太苛刻了,需要附加:

(1)没有可以选择的属性,则该结点为叶结点,类标号为父结点上较多数的类。 
(2)如果与Dt相关的数据均为同一个属性,则不可以继续划分,类标号为多数类。

常见决策树算法:

信息增益(Information gain) ---- ID3(Iterative Dichotomiser 3)

增益比率(Gain ration) ---- C4.5

基尼系数(Gini index) ---- SLIQ,SPRINT

2、属性划分

(1)标称变量
标称变量,二元划分和多路划分。CART只产生二元划分,考虑k个属性的二元划分有2^(k-1)-1种方法。 

4_01.png
(2)有序变量
有序变量,也可以是二元划分和多路划分,但是不能违背有序性。

4_02.png 
3、属性划分标准

选择最佳划分的度量是根据划分后子女结点的不纯度度量。不纯度越低(纯度越高!),划分效果越好。

(1)不纯度度量:(熵、基尼系数、分类误差)
                                             Entropy(t)=-\sum_{i=0}^{c-1}p(i|t)log_{2}p(i|t),Entropy(t)\in[0,1]   

                                             Gini(t)=1-\sum_{i=0}^{c-1}[p(i|t)]^{2},Gini(t)\in[0,0.5]

                                       ClassificationError(t)=1-max_{i}[p(i|t)],ClassificationError(t)\in[0,0.5]

4_03.png
三个度量方法都是希望取值越小越好(越纯)。

(2)结点度量

为了确定测试结点效果,我们比较父节点(划分前)、子女结点(划分后)的不纯度变化。 
信息增益: 
                     \Delta = I(parent)-\sum_{j=1}^{k}\frac{N(v_{j})}{N}I(v_{j}) 

其中 I 为不纯度的度量,关于 N 的计算是划分后的个数加权。 
I 为熵(Entropy)的时候,Delta 为信息增益。 
信息增益率(Gain Ratio): 
                     GainRatio=\frac{\Delta_{info}}{SplitInfo}=\frac{\Delta_{info}}{-\sum_{i=0}^{c-1}p(i)log_{2}p(i)}

使用信息增益率,好处是把属性测试条件产生的输出数也考虑进去。说明如果某个属性产生了大量的划分,它的划分信息会很大,从而降低了增益率。 
注:信息增益、信息增益率,我们希望越大越好,表示变化。
(3)连续变量的划分:
先对数据进行排序后,按照离散点的取值计算。

4_04.png

Gini和熵趋向于有大量不同值的属性。

4、决策树算法

(1)决策树归纳算法:

TreeGrowth(E,F):
  if stopping_cond(E,F)=true then
    leaf = createNode()
    leaf.label = Classify(E)
    return leaf
  else
    root = createNode()
    root.test_cond = find_best_split(E,F)
    令V={v|v是root.test_cond集合}
    for v in V do
      Ev = {e|v条件下的数据集合}
      child = TreeGrowth(Ev,F)
      将child添加到树中去,将边(root->child)标记为v
  return root


(2)决策树特点:

1、是一种非参数方法,不要求任何的先验假设。 

2、找到最佳的决策树是NP完全问题。 

3、相对容易解释,特别是小型决策树。 

4、对于噪声有相当好的鲁棒性。 

5、冗余属性不会对决策树准确率造成影响。即为强相关性,一个用于划分,另一个则将被忽略。相反,不相关的属性,可能在构建树的过程中被偶然选中,导致决策树过于庞大。 

6、数据碎片问题。当深度越深的时候,数据可能会太少,从而不能做出有统计意义的判断,当样本量小于某个阈值的时候,应该停止分裂。 

7、子树可能在决策树中重复多次,显得复杂,难以解释。

8、测试条件每次只涉及一个属性

9、研究表明不纯性度量方法的选择对决策树算法的性能影响非常小

10、决策树算法是学习离散值函数的典型代表

(3)斜决策树(oblique decision tree):

这里涉及到的决策树都是每次选取一个变量分子集划分,对某些数据集(连续属性有着复杂建模)缺乏划分能力。斜决策树可以克服这个问题。

4_05.png

测试条件为: 

                               x+y<1

另一种方法是,构造归纳法(constructive induction),该方法创建复合属性,代表已有的属性的算术、逻辑组合。 
构造归纳的花费较低,而斜决策树要动态的确定属性组合,但构造归纳会产生冗余属性。

5、模型过拟合

分类模型误差分为:训练误差(training error)、泛化误差(generalization error)。 
一个好的模型需要有较低的泛化误差和训练误差。

(1)泛化估计误差:再代入估计

(2)结合模型复杂度:

奥卡姆剃刀(Occam’s razor):

给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。

悲观误差估计(pessimistic error estimate):

                                                          e_{g}(T)=\frac{\sum_{i=1}^{k}[e(t_{i})+\Omega (t_{i})]}{\sum_{i=1}^{k}n(t_{i})}=\frac{e(T)+\Omega(T)}{N_{t}}

k是决策树的叶节点数目,e(T)为总训练误差,Nt为总训练样本数,Omega为罚项。 
对二叉树来说,0.5的罚项意味着只要至少能够改善一个训练记录分类,结点就应当扩展,当1位罚项,意味着除非能够减少一个以上训练记录的误分类,否则结点不应当扩展。

(3)估计统计上界

(4)使用确认集

先剪枝:

当达到某个条件,提前终止。例如:当观察到某个不纯度度量低于某个确定阈值时就停止扩展叶结点,但是,难点在于很难确定正确终止的阈值。

后剪枝:

初始按照最大规模生长,按照自底向上修剪决策树。修剪方式: 
(1)子树替换(subtree replacement)用叶结点替代子树,叶结点的类标号为子树的多数类; 
(2)子树提升(subtree raising)子树中最常使用的分支替代子树。后剪枝能产生更好的结果。

6、评估分类器性能

保持方法(holdout):

随机二次抽样(random subsampling):

交叉验证(cross-validation):

自助法(bootstrap):

训练集是对于原数据集的有放回抽样,如果原始数据集N,可以证明,大小为N的自助样本大约包含原数据63.2%的记录。当N充分大的时候,1-(1-1/N)^(N) 概率逼近 1-e^(-1)=0.632。抽样 b 次,产生 b 个bootstrap样本,则,总准确率为(accs为包含所有样本计算的准确率): 
                                                acc_{boot}=\frac{1}{b}\sum_{i=1}^{b}(0.632\times\varepsilon _{i}+0.368\times acc_{s})

7、比较分类器的方法

准确度的区间估计:

将分类问题看做二项分布,则有: 
令 X 为模型正确分类,p 为准确率,X 服从均值 Np、方差 Np(1-p)的二项分布。acc=X/N为均值 p,方差 p(1-p)/N 的二项分布。acc 的置信区间: 

                                            P\left(-Z_{\frac{\alpha }{2}}\leq \frac{acc-p}{\sqrt{p(1-p)/N}}\leq Z_{1-\frac{\alpha}{2}}\right)=1-\alpha

                                          P\in\frac{2\times N \times acc +Z_{\frac{\alpha}{2}}^{2}\pm Z_{\frac{\alpha}{2}}\sqrt{Z_{\frac{\alpha}{2}}^{2}+4\times N \times acc-4\times N \times acc^{2}}}{2(N+Z_{\frac{\alpha}{2}}^{2})}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值