第四章 决策树

2018-08-29  本文已影响0人  康君爱上了蕊酱

基本流程

决策树是一种常用的机器学习方法,过程类似于树状结构每一层通过对属性进行决策来进行分类。

结构主要有:根节点(初始的所有数据集),内部节点(初步决策结果),叶节点(最终决策结果),路径(判定决策过程)。

决策树学习基本算法:

输入:训练集D,属性集A={a1,a2,...,ad}
过程:函数TreeGenerate(D,A)
  生成节点node:
  if D中样本全属于统一类别C then
    将node标记为C类叶节点;return
  end if 
  if A=空集 or D中样本在A上取值相同 then
    将node标记为叶节点,类别标记为D中最多的类;return
  end if
  从A中选择最优划分属性a*;
  for a* 的每一个取值a*v do
    为node生成一个分支;另Dv表示D在a*上取值为a*v的样本子集;
    if Dv为空 then
      将分支节点标记为叶节点,类别标记为D中最多的类;return
    else
      以TreeGenerate(Dv,A\{a*})为分支节点
    end if
  end for
输出:以node为根节点的一颗决策树

这个是一个递归过程,其中有三种情况导致递归返回:

划分选择

什么样的划分属性是最优的?划分后的结点中样本的纯度因该是比划分前高的。因此,引入了信息熵即度量样本集合纯度的指标,样本集合D的信息熵定义为:
Ent(D)=-\sum^{|y|}_{k=1}p_k\log_2p_k
其中p_k为第k类样本所占的比例。信息熵的值越小,D的纯度越高。

当根据某一属性a=\lbrace a^1,a^2,\ldots,a^V\rbrace,对D进行划分后,形成的多个子结点的信息熵就是Ent(D^v)。为了比较前后的信息熵变化,定义信息增益
Gain(D,a)=Ent(D)-\sum^V_{v=1}\frac{|D^v|}{|D|}Ent(D^v)
其中\frac{|D^v|}{|D|}为每个分支点的权重。信息增益越大,就表明通过属性a划分得到的子结点的纯度提升越大。

同时注意到一个问题,信息增益作为度量的时候,对于取值数目多的属性具有偏爱性,比如样本序号(1,2,3,4,5),如果作为一种划分属性,得到的结果纯度达到100\%,但是却不具有对新样本的预测能力。因此引入增益率:
Gain_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}
其中:
IV(a)=-\sum^V_{v=1}\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|}
但是,增益率对于取值数目少的属性具有偏爱性,因此长使用一种启发式:先挑选信息增益高于平均水平的属性,然后在选取增益率最高的属性。

CART决策树是一种著名的决策树学习算法,分类和回归任务都可用。它使用“基尼指数”来选择划分属性。D的基尼值度量为:
Gini(D)=\sum^{|y|}{k=1}\sum_{k' \not= k}p_kp'_k
=1-\sum^{|y|}_{k=1}p_k^2
指从D中随机抽取两个样本不同类的概率,越小,D的纯度越高。
属性a的基尼指数定义为:
Gini_index(D,a)=\sum_{v=1}^V \frac{|D^v|}{|D|}Gini(D^v)
使得划分后基尼指数最小的属性为最优属性。

剪枝处理

剪枝指对决策树进行枝干的修剪,为了应对过拟合现象。分为以下两种:

连续与缺失值

多变量决策树

多变量决策树在划分的时候不再是针对一个属性,而是针对多个属性的组合。

我们把每个属性看做一个坐标轴,d个属性的样本就对应了d维空间中的一个点,分类就相当与寻找一个边界将点划分开。决策树的划分有个特点就是,形成的划分界面是多段与坐标轴平行的线段组成(单每层单属性划分)。每一段对应了某个属性的取值,解释性强,但是运算量比较大。因此想要通过平滑的斜线来代替这些线段,这样可以简化模型,同时达到分类效果,即每次划分采用多属性的组合:
\sum^d_{i-1}w_ia_i=t
其中w_i为属性a_i的权重,t代表线性分类器,w_it都可以在该结点对应样本集和属性集上学得。

上一篇下一篇

猜你喜欢

热点阅读