决策树是一种树形结构,其中的每个内部节点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。它是以实例为基础的归纳学习,采用自顶向下的递归方法,基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点的熵值为零,此时每个叶节点中的实例都属于同一类。在学习过程中,仅需对训练实例做较好的标注,算法就能进行自学习,决策树算法的代码清晰,逻辑简单,在胜任分类问题的同时,往往也作为对数据分布探索的首要尝试算法。
建立决策树的关键,即在当前状态下选择的哪个属性作为分类依据,根据不同的目标函数建立决策树主要有以下三种算法。
ID3
ID3(Iterative Dichotomiser)是利用信息增益(互信息) g(D,A) 进行特征选择。
信息增益
g(D,A)
表示已知特征A使得数据集D的不确定性降低的程度。定义为集合D的经验熵与特征A给定下D的经验条件熵之差,即:
显然,数据集D与特征A的信息增益即为二者的互信息。
信息增益的计算方法:
1、计算数据集D的经验熵
其中 , K 表示类别个数,
2、遍历所有特征,对特征A:
1>计算特征A对数据集D的经验条件熵 ①
其中 , N 表示特征A的取值个数,
2>计算A的信息增益:
信息增益越大,表明属性对熵减少的能力越强,属性使数据由不确定性变为确定的能力越强,该特征则优先作为分裂属性。
C4.5
C4.5是利用信息增益率 gr(D,A)=g(D,A)/H(A) 做特征选择,同样,信息增益率越大的特征优先作为分裂属性。
CART
CART(Classification And Regression Tree)是利用基尼指数做特征选择,是通过优化熵来计算信息增益。
基尼指数使用
−lnx
在
x=1
处的一阶泰勒展开
1−x
近似。
令
pk=|Ck||D|
则
同理可得到H(D|A),同样,基尼指数越大的特征优先作为分裂属性。
决策树的评价
通过对所有叶节点的熵求和,该值越小说明对样本的分类越精确。
由于各节点包含的样本数可能不同,所以也使用样本数加权求熵和。
评价函数:
Nt 表示某一个叶节点的样本点, H(t) 表示该叶节点的熵值,该评价函数越小越好,所以也可以作为损失函数。
剪枝
有时候过多的考虑对训练样本的正确分类,会导致决策树过拟合,从而构建过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,从而简化决策树。
在决策树学习中简化已生成的树的方法称为剪枝(pruning)。剪枝是在已生成的树上裁掉一些子树或叶节点。剪枝也分为前剪枝与后剪枝,前剪枝是在生成树之前就定义了树的高度,或单个叶节点样本个数或叶节点熵值。后剪枝是通过极小化决策树整体的损失函数来实现。
由于叶节点数越多表示决策树越复杂,于是对损失函数引入剪枝系数
α
做修正:
Tleaf 表示叶节点的样本点,当 α=0 ,未剪枝的决策树损失最小,当 α=∞ ,单根节点的决策树损失最小。
α
可理解成树分支被裁剪后的误差增加率,假设对以r为根的子树剪枝,剪枝后只保留根节点r,剪枝后的损失函数为:
剪枝前的损失函数为:
令二者相等,则得到剪枝系数