一、决策树基本原理
决策树作为一种常见机器学习方法。如其名,它是基于树结构进行决策的。
决策树的构建过程是一个递归的过程,从根节点开始,每次都选择最佳特征对数据进行划分,当数据集不能再被分割时,即达到叶子节点,也就是分类的结果。
根据构建的过程,我们需要解决以下两个问题:
1.怎么评判选择某个属性值就是最佳划分。
选择最佳划分的度量通常是根据划分后子结点不纯性的程度。
如原本10个数据集在划分后得到C0:5个,C1:5个比划分后得到C0:9个,C1:1个的纯度小。
结点不纯性的测量
结点不纯性的衡量有Gini,Entropy和Classification Error三种方法,在本文中重点描述Entropy这种方法
熵(Entropy)
用来描述集合不纯性的程度。计算公式如下,t表示某数据集合,j表示数据结合中的某个类别,p(j|t)表示该类别在该数据集合中的占比。
下面给出了具体计算实例。第一个图片中:C1类别有0个,C2类别有6个。总共则有6个数据。根据上面的公式计算出熵为0。第二个图片中算出的熵为0.65。从这两组结果中,我们可以看出第一个数据集合十分纯,而第二个数据集合纯合度较低。即熵越大,纯度越低,不纯度越高。
信息增益(information gain)
信息增益是特征选择的一个重要指标,它表按照某个特征分类,能给系统带来多少信息,如果带来的信息越多,说明该特征越重要,相应的信息增益也就越大。
因此,我们可以用信息增益来进行决策树的划分特征选择。ID3决策树学习算法,就是以信息增益来进行划分特征的。
信息增益具体计算公式如下:
2. 何时停止决策树生长
需要一个条件来结束决策树的生长。满足以下两个条件中任意一个都应该停止生长。
- 如果当前节点所包含的数据集合的属性都属于同一个类的时候(此时数据集合熵为0),则不需要再进一步进行划分。
- 所有属性(特征)都已经被用来划分过了,即没有更多的属性可以进行分割时,即便数据集合仍然不纯,也停止生长。
二、ID3算法
该算法用信息增益方式进行划分特征选择,以此建立决策树。在周志华《机器学习》一书中提到决策树学习的算法伪代码。依据该算法流程,我在此博客中有详细说明中利用python实现了具体决策树构建过程。