决策树和随机森林(Part1)

决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果[1]
下面先来看一个小例子,看看决策树到底是什么概念:


决策树和随机森林(Part1)_第1张图片
data1.png

决策树的训练数据往往就是这样的表格形式,表中的前三列(ID不算)是数据样本的属性,最后一列是决策树需要做的分类结果。通过该数据,构建的决策树如下:


决策树和随机森林(Part1)_第2张图片
tree_demo1.png

显然,在每一个非叶节点选择哪一个特征作为分支的标准,是构建决策树的核心问题。

信息熵

信息熵就是解决我们上面标准选择问题的一个重要指标。

一方面,熵是一个用来形容系统混乱程度的物理量。假设有135个点分布在二维平面上,并且这些点分别属于两类。分布如下:

决策树和随机森林(Part1)_第3张图片
sample1.png

假设两种类别的点(Rreen和Ged)分别有70和65个,概率分布如下:

X G R
P

从中随机选择一个点,得到两种类别的点的概率很相近,整个系统是一个完全混乱的整体。

假设我们按照图中的方式将所有的点一分为。左侧有65个点,其中60个为Green,5个为Red,则概率分布如下:

X G R
P

我们再在左侧的点中随机选择,显然属于Green的概率要大很多,在预测的时候,预测Green的正确率就高很多。

从两种情况的混乱程度来看,第一种情况比第二种情况要混乱很多,这种混乱程度和不同类别的概率有关。

另一方面,一个事件发生所包含的信息量和这个事件发生的概率有关的,即一个事件发生的概率越小,这个事件包含的概率就越大。比如学校每天正常八点响铃,但是如果某一天八点没有响铃,没有响铃这个小概率事件包含的信息,明显比正常响铃这个大概率事件多。

因此,概率分布就把一个事件发生所传递的信息和熵联系起来了,这种熵就称为信息熵。

信息熵的定义

假设变量的取值包含,概率分布如下:

X
P ...

那么X包含的信息熵定义为:

条件熵

:发生所包含的熵,减去发生所包含的熵:即在X发生的前提下,Y的发生所带来的新的熵,就是X发生的条件下,Y发生的条件熵。

接下来推导的计算公式:

H(X,Y) - H(X)\\ = -\sum_{x,y}p(x,y)log\ p(x,y) + \sum_{x}p(x)log\ p(x) \\ =-\sum_{x,y}p(x,y)log\ p(x,y) + \sum_x\left(\sum_yp(x,y)\right)log\ p(x)\\ =-\sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)}\\ =-\sum_{x,y}p(x,y)log\ p(y | x)\\ = -\sum_x\sum_yp(x,y)log\ p(y|x)\\ =-\sum_x\sum_yp(x)p(y|x)log\ p(y|x)\\ =\sum_xp(x)\left( -\sum_yp(y|x)log\ p(y|x) \right)\\ =\sum_xp(x)H(Y|X=x)

相对熵

相对熵又称为互熵,交叉熵,鉴定信息,Kullback熵等。

设和是X中取值的两种概率分布,则p对q的相对熵是:

互信息

两个随机变量的互信息,定义为X,Y的联合分布和独立分布乘积的相对熵。

从公式可以看出,互信息其实度量的是和这两个概率分布的距离。如果X和Y的分布是完全独立的,就会有。代入公式就可以得到两个变量的互信息为0。

如果我们用减去:

H(Y) - I(X,Y)=\\ =-\sum_{y}p(y)log\ p(y) - \sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)p(y)}\\ =-\sum_y\left( \sum_xp(x,y) \right)log\ p(y) - \sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)p(y)}\\ =-\sum_{x,y}p(x,y)log\ p(y) - \sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)p(y)}\\ =-\sum_{x,y}p(x,y)log\frac{p(x,y)}{p(x)}\\ =-\sum_{x,y}p(x,y)log\ p(y|x)\\ =H(Y|X)

互信息的物理意义

从上面的推到,我们可以得到等式:

也可以得到不等式:

也就是说,只要X和Y不是完全独立,而是存在某些联系,那么只要在给定其中一个做为条件的情况下,另一个事件所包含的信息量都会减少。

这些物理量的关系可以整理成一个Venn图:


决策树和随机森林(Part1)_第4张图片
Venn.png

决策树的构建

再来看上面的例子:


决策树和随机森林(Part1)_第5张图片
tree_demo1.png

在根结点中,是否偿还债务的概率分布为:

是否偿还债务
P 7 3

信息熵:

在根据是否拥有房产进行划分之后:

拥有房产的部分:

是否偿还债务
P 3 0

信息熵:

没有房产的部分:

是否偿还债务
P 4 3

信息熵:

我们考虑分支前后的熵的变化,对分支之后的熵求加权平均,计算可得:

显然这应该是一次有效的分支,因为熵变小意味着整体变得更加有序。从分类的直观效果来看,对于有房产的样本,可以直接判断为可以偿还债务。而且很容易理解,熵下降得越快,分支就越有效。

决策树学习

决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶节点处的熵值为零,此时每一个叶节点中的实力都属于同一类。

实际过程中我们通常会采用一些剪枝的策略,来避免熵值为零的情况,因为熵值为零通常意味着对训练数据的过拟合。

建立决策树的关键,即为在当前状态下选择哪一个属性作为分类依据。根据不同的目标函数,建立决策树主要有以下三种算法:

  • ID3
    • Iterative Dichotomiser
  • C4.5
  • CART
    • Classification and Regression Tree

信息增益

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

信息增益表示得知特征A的信息而使得类X的信息的不确定性减少的程度。

定义:特征A对训练数据集D的信息增益,定义为集合D的经验熵和特征A给定条件下D的经验条件熵之差。

其他目标

  • 信息增益率:

  • Gini系数

三种决策树的学习策略

  • ID3:使用信息增益、互信息进行特征选择
    • 取之多的属性,更容易使得数据更纯,起信息增益更大
    • 训练得到的是一棵庞大且深度浅的树,不合理
  • C4.5:信息增益率
  • CART:基尼系数

参考资料

[1]https://blog.csdn.net/xbinworld/article/details/44660339

你可能感兴趣的:(决策树和随机森林(Part1))