四、决策树
4.1 基本流程
顾名思义,决策树是基于树结构来进行决策的,这恰是人类在面对决策问题时一种很自然的处理机制。
一般的,一颗决策树包含一个根节点,若干个内部节点和若干个叶节点。叶节点对应于决策结果,其他每个节点对应于一个属性测试;每个节点包含的样本集合根据属性测试的结果被划分到子节点中,根节点包含样本全集。
4.2 划分选择
决策树学习的关键在于如何选择最优划分属性。随着划分的不断进行,决策树的分支节点所包含的样本尽可能属于同一类别,即节点的“纯度”应当越来越高。
4.2.1 信息增益
”信息熵”是度量样本集合纯度的一种指标。假定样本集合D中第k类样本所占的比例为 pk(k=1,2,...|y|) ,则D的信息熵的定义为
约定p=0时 plog2p=0。可以得到 Ent(D) 的最小值为0,最大值为 log2|y| 。 Ent(D) 的值越小,D的纯度越高。
假定离散属性a有V个可能的取值 {a1,a2,...,aV} 。若使用a来对样本集D进行划分,会产生V个分支节点,我们用 Dv 表示所有在a上取值为 av 的样本。由此可计算出用属性 a 对样本集
显然可知,当 Dv 均只包含1类样本时的划分效果最好。信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大。ID3决策树学习算法就是以信息增益为准则来选择划分属性。
4.2.2 增益率
信息增益准则对可取值数目较多的属性有所偏好。为减少这种偏好所可能带来的不利影响,C4.5决策树算法不直接使用信息增益,而是使用“增益率”与信息增益的结合来选择最优划分属性。增益率定义为
其中
该式称为属性a的“固有值”。属性a的可能取值越多,则 IV(a) 的值越大。需要注意的是,增益率准则对可取值数目较少的属性有所偏好。C4.5决策树先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
4.2.3 基尼指数
CART决策树使用“基尼指数”来选择划分属性。数据集D的纯度可用基尼值来度量:
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,类别标记不一致的概率。因此,Gini(D)越小,数据集D的纯度越高。属性a的基尼指数定义为
因此选择使得划分后基尼指数最小的属性作为最优划分属性。
4.3 剪枝处理
“剪枝”是决策树用来处理过拟合的主要手段。决策树剪枝的基本策略有“预剪枝”和“后剪枝”。预剪枝是指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点;后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上的对非叶节点进行考察,若将该节点对应的子树替换为叶节点可带来决策树泛化性能提升,则将该子树替换为叶节点。
预剪枝能够降低决策树的训练时间和开销。但是预剪枝消除了某些后续的节点带来决策树泛化性能提升的可能性。从这个角度说,预剪枝可能会带来欠拟合的风险。
一般来说,后剪枝的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但是后剪枝需要生成完全的决策树,因此其训练时间开销比预剪枝决策树大得多。
4.4 连续与缺失值
4.4.1 连续值处理
在决策树的训练过程中如果遇到连续值的情况,我们需要对连续值做离散化处理。最简单的策略是二分法。给定数据集D和连续属性a,假定a在D上出现了n个值,将这些值从小到大进行排序,记为 {a1,a2,...,an} 。二分法即取相邻属性值 ai 与 ai+1 的平均值作为划分点集合,即为
随后就可以像离散属性值一样考察这些划分点。
4.4.2 缺失值处理
在现实生活中往往会遇到不完整样本,尤其在属性值较多的情况下,往往会有大量样本出现缺失值。为了尽量使用这些样本,我们需要发展对缺失值的处理方法。
这里我们需要处理两个问题:
(1)如何在属性值缺失的情况下进行划分属性选择?
给定数据集D和属性a,令
D^
表示D在属性a上没有缺失值的样本子集。显然,我们仅可根据
D^
来判断属性a的优劣。假定属性a有V个可取值
{a1,a2,...,aV}
,令
D^v
表示
D^
中在属性a上取值为
av
的样本子集,
D^k
表示
D^
中属于第k类
(k=1,2,...,|y|)
的样本子集,显然有
D^=⋃|y|k=1D^k
,
D^=⋃Vv=1D^v
。假定我们为每一个样本x赋予一个权重
ωx
,并定义
对属性a, ρ 表示无缺失值样本所占的比例, p^k 表示无缺失值样本中第k类样本所占的比例, r^v 表示无缺失值样本中在属性a上取值 av 的样本所占的比例。由此可将信息增益的定义式推广为
其中,有
(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
若样本x在划分属性a上的取值已知,则将x划入与其取值对应的子节点,且样本权重在子节点中保持为 ωx 。若样本x在划分属性a上的取值未知,则将x同时划入所有子节点,且样本权值在与属性值 av 对应的子节点中调整为 r^vωx 。换而言之,就是让同一个样本以不同的概率划入到不同的子节点中去。
4.5 多变量决策树
若我们把每个属性视为坐标空间中的一个坐标轴,则d个属性描述的样本就对应了d维空间的一个数据点,对样本分类意味着在这个坐标空间中寻找不同类样本之间的分类边界。
决策树所形成的分类边界有一个明显的特点:轴平行。若能使用斜的划分边界,那么决策树模型将大为简化。这就是多变量决策树,在这里非叶节点不是针对单个属性,而是对模型的线性组合进行测试。如果模型的组合是非线性的,那么划分边界也将是非线性的。