决策树中的熵、信息增益、信息增益比以及基尼指数

决策树中的熵、信息增益、信息增益比以及基尼指数

决策树是机器学习的一种常用算法,可解释性强,可提取规则。决策时就是学习数据内部规律,找到数据之间的联系。决策树的构建就是递归选择最优特征,并根据该特征对数据进行分割,但是决策树是怎么选择最优的分裂属性呢?

决策树特征的选择有三种方法:信息增益、信息增益比、Gini系数。

为了演示上面三种分裂属性的选择,我们选用一个例子来加以说明:通过数据来判断该生物是否为鱼类。有如下数据集。

名称 用鳃呼吸 有无鱼鳍 是否为鱼
鲨鱼 1 1 1
鲫鱼 1 1 1
河蚌 1 0 0
0 1 0
海豚 0 1 0

Gini系数

Gini系数的计算公式如下:
决策树中的熵、信息增益、信息增益比以及基尼指数_第1张图片
在这里插入图片描述
其中,D表示数据集全体样本,p_n表示每种类别出现的概率。
我们计算以上表达式,即加入特征X以后,数据不纯度减小的程度,在做特征选择的时候,我们可以取∆Gini(X)最大的那个。
以上面的数据为例,一共有5个样本数据,其中标签列有2中情况,我们计算数据集的Gini系数
在这里插入图片描述
选择用鳃呼吸作为特征划分时,在用鳃呼吸的3个样本中,有2个为鱼类,1个不是。不用鳃呼吸的2个样本中,全部不为鱼类。计算此时数据集的Gini系数
决策树中的熵、信息增益、信息增益比以及基尼指数_第2张图片
选择有无鱼鳍作为特征划分时,在用鳃呼吸的4个样本中,有2个为鱼类,2个不是。不用鳃呼吸的1个样本中,全部不为鱼类。计算此时数据集的Gini系数
决策树中的熵、信息增益、信息增益比以及基尼指数_第3张图片
从上面的例子可以看出,因为属性B具有更小的Gini系数,它比属性A更可取,特征B具有最低的不纯性度量值,所以我们选择B作为分裂特征。
我们对每个叶子节点进行上述操作,重复选择具有最小Gini系数的特征进行分裂,直到叶子节点不可再分或者满足我们提前设置的阈值。这样我们就建立一棵决策树。

信息增益
在信息论中,熵是表示随机变量不确定性的度量。熵的取值越大,随机变量的不确定性也越大。设X是一个取有限个值的离散随机变量,其概率分布为:
在这里插入图片描述
则随机变量X的熵定义为:
在这里插入图片描述
条件熵的定义是:随机变量X在给定条件下随机变量Y的条件熵,在决策树种为选定某个特征后的熵,公式为:
在这里插入图片描述

信息增益的计算公式为:
在这里插入图片描述
以上面的数据为例,一共有5个样本数据,其中标签列有2中情况,我们计算数据集的信息熵:
决策树中的熵、信息增益、信息增益比以及基尼指数_第4张图片
选择用鳃呼吸作为特征划分时,在用鳃呼吸的3个样本中,有2个为鱼类,1个不是。不用鳃呼吸的2个样本中,全部不为鱼类。计算此时数据集的信息熵为:
决策树中的熵、信息增益、信息增益比以及基尼指数_第5张图片
划分前后信息熵的减少量称为信息增益,即特征A的信息增益为:
决策树中的熵、信息增益、信息增益比以及基尼指数_第6张图片
选择有无鱼鳍作为特征划分时,在用鳃呼吸的4个样本中,有2个为鱼类,2个不是。不用鳃呼吸的1个样本中,全部不为鱼类。计算此时数据集的信息熵为:
决策树中的熵、信息增益、信息增益比以及基尼指数_第7张图片
则特征B的信息增益为:
决策树中的熵、信息增益、信息增益比以及基尼指数_第8张图片
从上面的例子可以看出,因为属性B具有更小的信息增益,它比属性A更可取,特征B具有最低的不纯性度量值,所以我们选择B作为分裂特征。
我们对每个叶子节点进行上述操作,重复选择具有最大信息增益的的特征进行分裂,直到建立一棵叶子节点不可再分或者满足我们提前设置的阈值的决策树。
信息增益率
使用信息增益的一个缺点在于:信息增益的大小是相对于训练数据集而言的。在分类问题困难时,训练数据集的经验熵比较大时,信息增益会偏大。反之,信息增益会偏小。这个时候,使用信息增益率可以校正这个问题。
信息增益率的公式为:
在这里插入图片描述

我们分别来计算特征A和特征B的信息增益率
决策树中的熵、信息增益、信息增益比以及基尼指数_第9张图片
同样的,在使用信息增益率后,发现B的特征更有助于我们建立决策树。

不论采用哪种计算方式来进行特征分裂,我们的目的就是将无序的数据集变得更加有序,每种方法都有着自己的优缺点。在知道如何划分属性后,我们就可以计算每个特征值划分数据集获得增益,获取最好的增益的特征就是最好的选择,本文中采取使用Gini系数来划分属性。

使用场景:

决策树类别 特征分裂方法
ID3 信息增益
C4.5 信息增益比
CART Gini系数

你可能感兴趣的:(python,机器学习,决策树)