ID3 C4.5 CART决策树原理及sklearn实现
发布时间:2018-02-28 16:22,
浏览次数:1238
, 标签:
ID
CART
sklearn
* 问题描述
* ID3
* 信息增益
* 决策树构建
* 剪枝
* C4.5
* 信息增益比
* 决策树构建
* 剪枝
* CART
* 基尼指数
* 决策树构建
* 剪枝
* sklearn之决策树算法的实现
* 参考文献
问题描述
假设我们有一组训练数据D={(x1,y1),⋯,(xN,yN)}D={(x1,y1),⋯,(xN,yN)},这组训练数据代表NN个样本,xi(i=1,⋯,N)
xi(i=1,⋯,N)是样本点ii的特征向量,yiyi是样本点ii的类别,样本共分为KK类的情况下,yiyi的取值来自于KK个类别值{C1,⋯,CK}{C1,⋯
,CK},训练数据的特征集合为A=A1,⋯,AMA=A1,⋯,AM,样本在某个特征AmAm处可能取到的特征值有nn个,分别为{am1,⋯,amn}{a1m,⋯,
anm}。
决策树是一种由结点和有向边构成的树形结构,结点类型分为内部结点和叶结点,每个内部结点代表对象的一个特征,叶结点则代表对象的类别。下图是一个简单的决策树,它通过输入对象的特征自上而下进行判断,并输出对象的类别(通过对象是否常熬夜,是否常运动判断其分类是健康或亚健康)。在下图中,椭圆框代表内部结点,长方形框代表叶结点。
对于一个未知类别的输入对象,决策树自上而下的测试该对象在每个内部结点的特征取值,从而将其分配到相应的子结点或叶结点,当对象被分配到某个叶结点时,便可确定其类别。
ID3
ID3算法的基本流程为:如果某一个特征能比其他特征更好的将训练数据集进行区分,那么将这个特征放在初始结点,依此类推,初始特征确定之后,对于初始特征每个可能的取值建立一个子结点,选择每个子结点所对应的特征,若某个子结点包含的所有样本属于同一类或所有特征对其包含的训练数据的区分能力均小于给定阈值,则该子结点为一个叶结点,其类别与该叶结点的训练数据类别最多的一致。重复上述过程直到特征用完或者所有特征的区分能力均小于给定阈值。
如何衡量某个特征对训练数据集的区分能力呢,ID3算法通过信息增益来解决这个问题。
信息增益
一个离散型随机变量xx的概率分布为:P(x=xi)=pi,(i=1,⋯,n)P(x=xi)=pi,(i=1,⋯,n),那么xx的熵定义如下:
H(x)=−∑i=1npilog2piH(x)=−∑i=1npilog2pi
熵的单位为比特(bit),定义0log0=00log0=0。对于两个随机变量x,yx,y,他们有如下形式的联合概率分布:
P(x=xi,y=yj)=pij,(i=1,⋯,n;j=1,⋯,K)P(x=xi,y=yj)=pij,(i=1,⋯,n;j=1,⋯,K)
那么在xx确定的条件下yy的条件熵定义如下:
H(y|x)=∑i=1npiH(y|x=xi)H(y|x)=∑i=1npiH(y|x=xi)
数据集的熵表征着其类别的不确定程度,而数据集关于某个特征的条件熵则表征着给定某个特征后,其类别的不确定程度。可以想见,数据集的熵与其关于某个特征的条件熵之差表征着这个特征的确定使数据集不确定性减少的程度,数据集的熵与条件熵的差值叫做信息增益,很容易理解,某个特征的信息增益可以反映这个特征对数据集的分类能力,信息增益越大,证明该特征能更好的对数据集进行分类。
信息增