决策树 Decision Tree

熵与信息增益
决策树模型本质上就是一个 IF-Then 规则的集合
这里写图片描述
决策树学习的第一步就是“特征选择”
特征选择分两个步骤进行:

  1. 选择对训练数据具有最大分类能力的特征进行树的叶子节点的分类;
  2. 选择该特征最合适的分裂点进行分裂。

熵(Entropy),是表示随机变量不确定性的度量。
假设 X 是一个具有有限个值的离散型随机变量,服从如下的概率分布:

P ( X = x i ) = p i , i = 1 , 2 , . . . , n
那么随机变量 X 的熵定义为:
H ( X ) = i = 1 n p i log 2 p i
其中 p i x i 的概率,取值范围在 [ 0 , 1 ] 之间。

我们以随机变量只取 0 1 两个值为例,假设 X 服从如下分布:

{ P ( X = 1 ) = p P ( X = 0 ) = 1 p , 0 p 1
根据熵公式, X 的熵为
H ( X ) = p log 2 p ( 1 p ) log 2 ( 1 p )
这时,熵 H ( X ) 随概率 p 变化的曲线为:
这里写图片描述
由图可知,当 p = 0 p = 1 时熵为 0 ,也即随机变量完全没有不确定性(即完全确定);
p = 0.5 时熵取值最大,不确定性最高。

信息增益:
设随机变量 ( X , Y ) 的联合概率分布为:

P ( X = x i , Y = y i ) = p i j i = 1 , 2 , . . . n ; j = 1 , 2 , . . . , m
条件熵 H ( Y | X ) 表示在已知随机变量 X 的取值条件下随机变量 Y 的不确定性,其数学定义为 X 给定的条件下 Y 的条件概率分布的熵对 X 的数学期望,表达式如下:
H ( Y | X ) = i = 1 n p i H ( Y | X = x i )
其中 p i = P ( X = x i ) , i = 1 , 2 , . . . , n

在此基础上,我们引出信息增益(Information Gain)的概念,它表示在特征 X 给定的条件下使得类 Y 的信息不确定性减少的程度。

数学表述如下:特征 A 对训练集数据 D 的信息增益 G ( D , A ) 定义为集合 D 的熵 H ( D ) 与在特征 A 给定的条件下 D 的条件熵 H ( D | A ) 之差,即:

G ( D , A ) = H ( D ) H ( D | A )

特征选择策略
决策树的学习应用信息增益准则选择特征。

给定训练集 D 和特征 A 。由熵、条件熵和信息增益的定义我们可以知道:

  • H ( D ) 表示对数据集 D 进行分类的不确定性;
  • 条件熵 H ( D | A ) 表示在特征 A 给定的条件下对数据集 D 进行分类的不确定性;
  • 信息增益 G ( D , A ) 表示在特征 A 给定的情况下使得数据集 D 进行分类的不确定性减少的程度。

显然,对于数据集 D 而言,信息增益依赖于特征,一般情况下,不同的特征会有不同的信息增益。信息增益大的特征具有更强的分类能力。

所以我们在构建决策树的过程中,应该选择信息增益最大的特征进行分裂构建。

决策树的生成
设训练集为 D | D | 表示样本容量大小;总共有 K 给类,用 C k k = 1 , 2 , . . . , K 表示。

设特征 A n 个不同的取值 a 1 , a 2 , . . . a n ,根据特征 A 的取值将数据集 D 划分为 n 个互不相交的子集 { D 1 , D 2 , . . . , D n } | D i | , i = 1 , 2 , . . . , n 表示第 i 个子集中的样本的个数
则显然有:

i = 1 n | D i | = | D |

ID3算法
ID3算法的核心是递归的构建决策树,递归的过程中在每个节点上应用信息增益准则选择特征,直至满足递归停止条件:所有特征的信息增益都很小或者没有特征可以选择。

假设有训练数据集 D ,特征集 A ,最小信息增益阀值 ϵ 和最终训练出来的决策树 T
则ID3算法的执行过程:

  1. 如果 D 中所有实例属于同一类 C k ,那么 T 就是单节点树,并且将 C k 作为该节点所表示的类别,返回 T ;
  2. 如果 A = ,则 T 为单节点树,并且将 D 中实例数量最多的类作为该节点的类标记,返回 T ;
  3. 否则,计算 A 中各特征对数据集 D 的信息增益,选择信息增益最大的特征 A G ;
  4. 如果 A G 的信息增益小于 ϵ ,此时 T 设置为单节点树,同时也选择将 D 中实例最多的类作为该节点的类标记,返回 T ;
  5. 否则,对特征 A G 的每一个可能的取值 a i ,根据 A G = a i 将数据集 D 分割为互不相交的子集 D i ,此时依然将 D i 中实例数最多的类作为标记,构建子节点。叶子节点和子节点构成树 T ,返回 T ;
  6. 对第5步中,第 i 个子节点,以 D i 为训练集,以 A { A G } 为新的特征集递归的调用1-5步得到子树 T ,并返回。

C4.5算法
C4.5算法与ID3算法基本一致,只是特征选择的选择方法从ID3依据的信息增益改为了信息增益比

信息增益比:
以信息增益作为划分训练数据集 D 的特征,会倾向于选择特征值较多的特征,在不同特征的数量不一致的情况下,这会带来一种不公平性,而使用信息增益比(Information Gain Ratio)就可以解决这个问题。

信息增益比的定义:
特征 A 对训练数据集 D 的信息增益比 G R ( D , A ) 表示特征 A 的信息增益 G ( D , A ) 与训练数据集 D 关于特征 A 的熵 H A ( D ) 的比值:

G R ( D , A ) = G ( D , A ) H A ( D )
其中,
H A ( D ) = i = 1 n | D i | | D | log 2 | D i | | D |
n 是特征 A 所能取得的不同值的总个数。

C4.5算法的过程与ID3算法的过程几乎完全一致,只需把ID3算法过程中的“按照信息增益选择特征”换为“按照信息增益比选择特征”即可。

决策树的剪纸策略
决策树的生成算依靠法递归构建决策树,直到不能继续构建为止。然而,这样产生的决策树很容易过分的学习训练样本,使得它对未知的测试数据的分类效果比较差,即这样产生的决策树很容易过拟合

过拟合的原因在于我们构建的决策树过分复杂,导致其过多地学习训练样本的分布,而对未知样本的学习泛化能力较弱。

解决这个问题的方法就是简化已生成的决策树,使其变得更简单。

在决策树学习的过程中将已经生成的决策树进行简化的过程称作“剪枝”。也就是说,我们可以将决策树中划分的过细的叶子节点剪去,退回到其父节点成为新的叶子节点,使得新的决策树变得简单,并且能够在未知的测试数据的预测上取得更好的分类结果。

决策树的剪枝策略主要分为两大类:预剪枝策略后剪枝策略

预剪枝策略的常用方法:

  1. 指定每一个结点所包含的最小样本数目。例如10,则该结点总样本数小于10时,则不再分;
  2. 指定树的高度或者深度。例如树的最大深度为4;
  3. 指定结点的熵。若该节点的熵小于某个值,不再划分。

预剪枝策略优缺点:

  • 优点:预剪枝策略能够减少不必要的分裂操作,节省时间;
  • 缺点:在预剪枝后构建决策树的某个时刻可能会出现更高的增益,也就是说预剪枝有可能得不到最优的树。

后剪枝策略的常用方法:

  1. 将决策树增长到它的最大深度,递归的进行剪枝,剪去那些使得增益值为负值的叶子节点。

后剪枝策略优缺点:

  • 优点:能够获得最优的剪枝策略决策树;
  • 缺点:那些被后剪枝的树节点的分裂过程浪费时间。

以sklearn中的iris数据集为例,得到的鸢尾花决策树如下:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/baishuiniyaonulia/article/details/81007425
今日推荐