4.1 基本流程
决策树是基于树结构来进行决策的。一般的,一棵决策树包含一个根节点、若干个内部结点和若干个叶结点。根结点包含样本全集,叶结点对应于决策结果,其他每个结点则对应于一个属性测试。其基本流程遵循简单且直观的“分而治之”策略。
输入:训练集
属性集
过程:函数TreeGenerate(D,A)
1:生成结点node;
2:if D中样本全属于同一类别C then
3: 将node标记为C类叶结点; return
4:end if
5:if OR D中样本在A上取值相同 then
6: 将node标记为叶结点,其类别标记为D中样本数最多的类; return
7:end if
8:从A中选择最优划分属性;
9:for 的每一个值
do
10: 为node生成一个分支;令表示D中在
上取值为
的样本子集;
11: if为空 then
12: 将分支结点标记为叶结点,其类别标记为D中样本最多的类; return
13: else
14: 以TreeGenerate(,A\{
}) 为分支结点
15: end if
16:end for
输出:以node为根结点的一棵决策树.
4.2 划分选择
1) 信息熵(information entropy)
信息熵是度量样本集合纯度最常用的一种指标。假定样本集合D中第k类样本所占的比例为(k=1,2,......|y|),则D的信息熵定义为
的值越小,则D的纯度越高。
2) 信息增益(infromation gain)
属性a对样本集D进行划分所获得的信息增益为
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的纯度提升越大。著名的ID3决策树学习算法就是以信息增益为准则来选择划分属性。
3) 增益率(gain ratio)
信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用增益率来选择最优划分属性。增益率定义为
其中
称为属性a的“固有值”(intrinsic value)。增益率准则对可取值数目较少的属性有所偏好。因此C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
4) 基尼指数(Gini index)
CART决策树使用基尼指数来选择划分属性。数据集D的纯度可用基尼值来度量:
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此Gini(D)越小,则数据集D的纯度越高。
属性a的基尼指数定义为
4.3 剪枝处理
剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。
1) 预剪枝(prepruning)
预剪枝是对决策树每个结点在划分前先进行估计,若当前结点的划分不能带来泛化性能提升,则停止划分。预剪枝使得决策树很多分支没有展开,降低了过拟合的风险,减少了决策树的训练和测试时间开销,但带来了欠拟合的风险。
2) 后剪枝(postpruning)
后剪枝是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若能带来泛化性能提升,则该子树替换为叶结点。一般来说,后剪枝决策树的欠拟合风险小,泛化性能往往优于预剪枝决策树,但其训练时间开销比未剪枝和预剪枝决策树大得多。
4.4 连续与缺失值
1) 连续
决策树中的连续属性采用离散化技术。最简单的策略是采用二分法。可将划分点设为该属性在训练集中出现的不大于中位点的最大值。样本集D基于划分点t二分后的信息增益为
2) 缺失值
遇到不完整样本,即样本的某些属性值缺失,需解决两个问题:(1)如何在属性值缺失的情况下进行划分属性选择?(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
其信息增益计算式为
4.5 多变量决策树
多变量决策时(multivariate decision tree)是能实现斜划分甚至更复杂划分的决策树。以实现斜划分的多变量决策树为例,在此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试。