介绍
解决的问题:分类问题,有监督学习
目的:产生一颗泛化能力强,即处理未知示例能力强的决策树。
组成
- 根节点--包含样本全集
- 内部节点--由属性测试的结果划分到集合
- 叶结点--对应决策结果
根节点到叶结点的路径为判定序列
基本流程
遵循分而治之的策略
- 给定训练集合D和属性集合A,设定函数TreeGenerate(D,A);
- 生成节点node;
- 判断D中的样本属于同一类别C,则将node标记为C类叶节点(一是标记为叶结点二是设为C类),然后返回;
- 判断属性结合A为空集或者训练集合D中在属性集合A中取值相同,则将node节点标记为叶结点,类别设定为D中样本数最多的类,然后返回;
- 从属性集中选择最优划分属性;
- 对得到的最有划分属性中每一个属性值,为node生成一个分支;相对应的有对应与属性值的样本子集;如果样本子集为空集,则将分支节点标记为叶结点,类别设定为D中样本数最多的类,然后返回;如果样本子集不为空集,z则以TreeGenerate(D,A\样本子集)为分支节点;循环处理每一个属性值;
注:TreeGenerate(D,A\样本子集)--A中不包括已经设置的属性值的样本,在第6步中是一个递归调用
递归返回条件
- 当前节点包含的样本属于同一分类
- 当前属性值的样本集为空或者所有样本在所有属性上取值相同,无法划分
- 当前节点包含的样本集为空
情形2--将当前节点标记为叶结点,将类别设定为本节点包含样本最多的类别,利用当前节点的后验分布
情形3--将当前节点标记为叶结点,将类别设定为父节点包含样本最多的类别,利用当前节点的先验分布
划分选择
关键是如何选择最优划分属性?
目的:当前分支节点所包含的样本尽可能属于同一类别,追求纯度的提高。
度量纯度的方式
信息增益
信息熵:表示各个类别样本数所占总体样本D的比例,
的值越小,纯度越高。
信息增益:离散属性a有多个可能取值,使用此属性对样本进行划分,会产生多个分支节点,每个节点 包含了对应属性可能值的样本子集,(每个属性包含的样本可能有多个类别),可以计算出每个样本子集的信息熵(西瓜问题中每个子集中有两种类别--好瓜和坏瓜,分别计算出两者的比例就可求熵)。但又考虑到样本数越多的分支节点产生的影响越大,因此给每一个分支节点分配权重(根据所包含的样本子集占总体样本的比例分配)。
信息增益越大,采用属性值a划分效果越好--纯度越高。
因此算法第8行采用的公式为 --ID3决策树学习算法采用信息增益准则来划分。
使用方法:先计算根节点的熵,在根据属性值的可能取值划分样本,分别计算各样本的熵,从而算出此属性对应的信息增益;
然后依次计算出其他属性的信息增益,最后比较个信息增益,选择最大的一个作为划分属性,然后在基于各个属性取值划分的样本上继续求最优划分属性。
缺点:取值数目较多的属性有所偏好
增益率
解决信息增益带来的偏好影响,C4.5算法采用增益率来选择最优划分属性。
称为属性a的固有值,属性a的可能取值数目越多(V越大),
越大。
缺点:对取值数目较小的属性有所偏好
C4.5算法并没有直接采用增益率准则,是采用启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼指数
CART决策树使用基尼指数选择划分属性。
数据集D的纯度使用基尼值来度量:反映了从数据集随机抽取两个样本,类别标记不一致的概率。基尼值越小,数据集D纯度越高。
属性a的基尼指数定义为:
在候选属性集合A中,选择划分后基尼指数最小的属性最为最优划分属性。
剪枝处理
决策树算法对付“过拟合”的主要手段。
过拟合--划分过程不断重复,造成决策树分支过多,模型学得太好。将训练集的特性当作一般性质。
基本策略:预剪枝、后剪枝
预剪枝--决策树生成过程中,对每个节点在划分前进行估计,若当前节点的划分不能带来决策树泛化性能的提升,则停后剪枝--先从训练集生成一颗决策树,然后自底向上对非叶结点进行考察,若将该节点对应的子树替换为叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。
如何判断决策树泛化性能的提升?使用模型评估中的留出法。假定采用信息增益准则进行划分属性选择。
预剪枝
仅有一层划分的决策树亦称"决策树桩"。
优点:使得决策树的很多分支都没有展开,降低了过拟合的风险,显著减少了决策树的训练时间开销和测试时间开销。
缺点:带来了欠拟合的风险。虽然有些分支当前划分不能带来泛化性能的提升,也有可能下降,但是在此基础上的后序划分可能带来泛化性能的显著提升。但是预剪枝基于贪心的本质禁止了分支展开。
后剪枝
比预剪枝保留更多分支
优点:欠拟合的风险小,泛化性能往往优于预剪枝决策树。
缺点:先生成树再自底向上对非叶节点逐一考察,训练时间开销比未剪枝决策树和预剪枝决策树大的多。
连续与缺失值
连续值处理
如何在决策树中使用 连续属性?
由于连续属性可取值无限,使用连续属性离散化技术。
策略一:使用二分法。C4.5决策树使用了此方法
给定样本集D和连续属性a,在属性a上有多个取值,将这多个取值排序,基于某个划分点划分为两个集合,选择一个最优的划分点进行样本集合的划分。
注:对于相邻的属性值,划分点在两个值之间的取值产生的划分结果相同。因此,对于连续属性a,产生一个包含n-1个元素的候选划分点集合
把区间的中位点
作为候选划分点。然后根据离散方法考察每一个划分点。比如,改造信息增益公式,
找出使值最大的t即可。
注意:若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。
缺失值处理
需解决两个问题:
(1) 如何在属性值缺失的情况下进行划分属性选择?
(2) 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
给定训练集 D 和属性 α,令表示 D 中在属性a上没有缺失值的样本子集,
对于问题1
仅可根据样本子集来判断属性a的优劣。假定为每一个样本x赋予一个权重
,
对属性a, 表示无缺失值样本所占的比例;
表示无缺失值样本中第 k 类所占的比例;
则表示无缺失值样本中在属性 a上取值
的样本所占的比例。
信息增益计算式推广为
对于问题2
若样本x在划分属性 a上的取值己知,则将x划入与其取值对应的子结点,且样本权值在子结点中保持为 ;
若样本x在划分属性 a上的取值未知,则将x同时划入所有子结点且样本权值在与属性值对应的子结点中调整为
;直观地看,这就是让同一个样本以不同的概率划入到不同的子结点中去。
C4.5算法采用上述方案
多变量决策树
决策树所形成的分类边界有一个明显的特点:轴平行 (axis-parallel) ,即它的分类边界由若干个与坐标轴平行的分段组成.
使用斜的划分边界,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试。每个非叶结点是一个形如的线性分类器,其中
是属性
的权重,
和t可在该结点所含的样本集和属性集上学得。
学习目标:试图建立一个合适的线性分类器,不再是为每个非叶结点寻找一个最优划分属性。