决策树
决策树(Decision Tree)可以使二叉树或多叉树,它是一种分类算法,通过数据构建决策树,可以高效地分类数据。
决策树是树形结构,可以分为分支节点和叶子节点。叶子节点为终止节点,一般可以划分数据类别。构造决策树一般有以下步骤:
1、所有数据都在一个分支节点上。
2、遍历数据所有特征,使用某一”特征“,将数据划分为类别C1,C2,……,Cn。
3、将新划分的类别C1,C2,……,Cn当做一个新的分支,继续划分,直到可以判断数据类别,或不能继续划分。
可以看出决策树的构建,一个递归的过程。递归算法需要一个终止条件,达到分类目的,或分支节点无法继续划分,则终止。
在分支时,选择“特征”直接影响决策树效率。使用比较广泛的根据信息论中的“熵”来选取特征;这样的决策树算法有ID3、CART、CART4.5。
熵(entropy)
熵是指信息的不确定性,用来定量描述信息量的。例如“明天下雨”和“明天地震”,这两个信息中那个信息量大,如果没有熵,就没法量化。一条信息包含信息量的大小和这个信息发送的概率成反比;例如“明天下雨”的概率大于“明天地震”,所以“明天下雨”包含的信息量小。信息论之父Shannon在其论文”A Mathematical Theory of Communication”给出了计算信息量的公式。假设事件x发生的概率为
p(xi)
,那么其包含的信息量为:
可以看出发生概率为1的事件,因为100%会发生,所以不包含信息量。
一个事件,有多种可能性,每种可能性对应的概率为 p(xi) ,那么可以计算这个事件熵的期望,获取这个事件的信息量。
决策树构造时,是希望每一次划分可以最大程度的判断类别,即减小不确定性。根据熵来构建决策树,每次分支时,计算每个特征的熵,找出最大的熵对应的特征,一次划分,就可以最大程度减小不确定性了。
ID3算法
ID3算法根据熵增益来选取特征,在需要分支时,选择信息增益最大的特征来分支。先来了解一下条件熵和熵增益。
条件熵
随机变量(X,Y)的联合概率为P(x,y)。条件概率P(x|y)表示在y已经确定情况下,P(x,y)的概率;即P(x|y)=p(x,y)/P(y)。条件熵即在某一变量确定情况下的熵。
H(X|Y)表示在变量Y已经确定时,X的不确定性。
信息增益
信息增益(information gain)表示在获取某一特征后(例如Y),信息不确定性的减少程度。
补充
特征用完
在构造决策树时,当所有特征都已经使用,但是数据集中的元素还不属于同一个类别时,因为没有特征可用,这是可以做“多数表决”,选择这个数据集中类别最多的元素作为这个数据集的类别。
特征类型
元素特征有连续值和离散值。根据特征值和分支要求,分为:
1、特征是离散值,不要求生成二叉决策树;这时可以用每个特征来分支。
2、特征是离散值,但要求生成二叉决策树;这时可以用特征划分为2个子集,按照“属于”和不属于来分支。
3、特征是连续值;这时要找到一个或多个分裂点split_point来分支。
构造终止条件
构造决策树一般使用递归算法,需要一个终止条件。通常可以设为“分支节点上所有元素都属于同一类别”,但是某些时候并不能达到;决策树也不能无限增长。常用的终止条件有:
1、分支节点所有元素属于同一类别。
2、分直接点样本数少于门限值(估值值),或小于一定比例。
3、树的深度达到门限值。
剪支
构建决策树时使用的是训练数据,当泛化到非训练数据时,如果不能很好预测,则产生过拟合。还有数据噪音等问题,需要进行剪支。剪支分为:
预剪枝(前剪枝):通过提前停止树的构造来对决策树进行剪枝,一旦停止该节点下树的继续构造,该节点就成了叶节点。该叶节点持有其数据集中样本最多的类或者其概率分布。
后剪枝:首先构造完整的决策树,允许决策树过度拟合训练数据,然后对那些置信度不够的结点的子树用叶结点来替代该叶节点持有其子树的数据集中样本最多的类或者其概率分布。