构建决策树的关键步骤在于特征的选择和划分,那么究竟如何选择最优的划分特征?又如何确定最合适的分割阈值?这些问题是基于信息论中的几个概念解决的,信息熵(information entropy),条件熵(conditional entropy),信息增益(information gain),信息增益率(information gain ratio),基尼指数(Gini index)。
1.0 信息熵(information entropy)
熵是热力学中的概念,表示混乱程度。熵越大,热力系统中粒子无规则的运动越剧烈;熵越小,粒子越趋近于静止的状态。信息熵是将熵的概念引如到信息论和概率统计中,表示随机变量的不确定度。对于一组数据来说,越随机、不确定性越高,信息熵越大;不确定性越低,信息熵越小。
计算熵,我们需要计算所有类别所有可能值所包含的信息期望值。在一个系统中,有类的信息,选择第类信息的概率为。基于概率得到信息熵的香农公式:。规定。
如果是二分类的情况下,则信息熵的计算公式为:
举例来看,对于三组数据,,,信息熵分别为1.0986,0.8018,0。第一组数据中,概率平均为1/3,是最为混乱的,第三组数据中,概率集中在一类上,是最为确定的。
2.0 条件熵(conditional entropy)
2.1 条件熵的定义
设有一组随机变量,条件熵 表示在已知随机变量A的条件下随机变量D的不确定性,即随机变量A有n类信息,此时已经在A中选择了第类信息,概率为,那么在此前提条件下D的信息熵就为条件概率分布的熵:
2.2 信息熵和条件熵的区别
通过相亲的例子看一下信息熵和条件熵的区别:
在上面这个相亲决策树中,特征变量有四个,即A={年龄,长相,收入,公务员},类结果共有两类“见”和“不见”,即D = {见,不见},其中“见”的数量有2个,“不见”的数量有4个,因此“见”发生的概率为1/3,“不见”的发生概率为2/3。那么类的信息熵为:
根节点向下,首先在年龄特征上进行判断,得到了一个包含两个子集的结果集 {<=30岁,>30岁}。那么,在“<=30岁”的条件下,“见”的概率为2/5,“不见”的概率变为3/5;在“>30岁”的条件下,“见”的概率为0,“不见”的概率变为1,据此计算条件熵为:
3.0 信息增益(information gain)
从上例的相亲树可以看出,数据集经过划分前后其熵的值发生了变化,这一变化就称为信息增益。当通过某一特征能够获得最大信息增益,那么这个特征就是最好的选择。
划分前,类结果集合D的熵(也称经验熵)是为;使用某个特征A划分数据集,划分后的数据子集的条件熵(也称经验条件熵)。则信息增益的表达公式为:
在决策树的构建过程中,会尝试所有特征划分数据集D,获得所有特征划分数据集D的信息增益汇总(表),从这些信息增益中选择最大的特征作为当前结点的划分特征。但是可以发现,对于待划分的数据集D,其经验熵H(D)是固定的,为找到使得信息增益最大的划分维度只要关注条件熵H(D|A)最小的维度即可。因此,可以判断,为了是信息增益最大,划分特征就会趋于选择取值较多的特征。因为取值多就意味着信息越杂乱,对其划分后得到的信息则确定性越高(条件熵小),则信息增益越大。
4.0 信息增益率
上一节已经知道信息增益已经可以帮助选择最优划分特征。那么信息增益率有何作用?原因在于,信息增益偏向于选择取值较多的特征,容易造成过拟合,会减弱模型整体的泛化能力,因此采用信息增益率作为划分特征选择的依据。
信息增益率的定义:特征A对数据集D的信息增益比定义为:其信息增益与类结果D关于特征A的值的熵之比:
注意,这里的是D将当前特征A作为随机变量(取值是特征A的各个特征值),所得的经验熵,与是完全不一样。假设变量的A的取值有类,则选择变量A中第类信息的概率为,则有:
信息增益率的本质是在信息增益的基础之上除以一个惩罚参数。该惩罚参数,是数据集D以特征A作为随机变量的熵,即将特征A取值相同的样本划分到同一个子集中(之前的经验熵均以类结果作为随机变量)。因此,当特征取值个数较多时,特征的经验熵越大,信息增益除以较大的值后会相对变小;反之,特征个数较少时,特征的经验熵越小,信息增益除以较小的值后相对增大。
信息增益率的特点使其会偏向取值较少的特征。原因在于当特征取值较少时的值较小,因此其倒数较大,使得信息增益比较大,进而偏向取值较少的特征。因此在实际情况中,常常综合信息增益和信息增益率来使用:先在所有特征中找出信息增益高于平均增益水平的特征,然后在这些特征中再选择信息增益率最高的特征。
5.0 基尼系数
基尼系数(Gini),也被称为基尼不纯度,表示在样本集合中一个随机选中的样本被分错的概率。
Gini系数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,基尼指数集合越不纯。即:基尼指数(基尼不纯度)= 样本被选中的概率 * 样本被分错的概率
当数据集为二分类时,基尼系数。
那么对于数据集{A,D},A为特征,D为类结果。按照特征A分类为子集D1,D2...Dn,那么:
基于A的取值的特征,需要计算以每一个取值作为划分点,所得到的划分后子集(D1,D2...Dn)的纯度,(其中Ai表示特征A的可能取值)。然后从所有可能的中找出基尼系数最小的划分,这个划分点,便是使用特征A对数据集D进行划分的最佳划分点。