一、基本流程
决策树通过“分而治之”的策略,采用递归的方式学习得到树结构,目标为学习一个泛化能力强的决策树。有三种情形会导致递归返回:
1. 当前节点包含的样本均属于同一类别
2. 当前节点属性集为空或所有样本在所有属性上取值相同
3. 当前节点样本集为空
出现以上三种情况中的任意一种,该节点标记为叶节点,对1来说,该叶节点的类别即为样本类别;对2来说,该叶节点的类别为包含样本最多的类别;对3,叶节点的类别为其父节点中包含样本最多的类别。
二、划分选择
决策树学习的关键是如何选择最优划分属性,有三种常用的方法:
1. 信息增益(代表:ID3)
信息熵是度量样本集合纯度的一种常用指标,设集合D中第 类样本所占比例为 ,则D的信息熵定义为
若离散属性a有V个可能的取值,则用属性a对样本集D进行划分所获得的信息增益
代表算法:ID3决策树算法
特点:对取值数目较多的属性有偏好,故引入增益率作为属性划分准则。
2. 增益率(代表:C4.5)
增益率定义为
代表算法:C4.5决策树算法
特点:由于增益率对取值数目较少的属性有偏好,故C4.5算法并不是直接选择增益率最大的候选划分属性,而是先选出信息增益高于均值的属性,再从中选择增益率最高的。
3. 基尼指数(代表:CART)
数据集D的纯度可用基尼值来度量:
三、剪枝
剪枝是决策树算法处理过拟合的有效方式。在决策树学习过程中,为了尽可能正确分类训练样本,需不断重复节点划分过程,可能会因为分支过多而造成过拟合。因而可通过剪枝降低过拟合风险。决策树剪枝的基本策略有两种:预剪枝、后剪枝。
1.预剪枝
在决策树生成过程中,对每个节点在划分前判断当前节点的划分能否带来决策树泛化性能的提升。若不能,则停止划分并将当前节点标记为叶节点。
优点:减少了训练时间开销和测试时间开销
缺点:有些分支的当前划分虽不能提升泛化性能,其后续划分可能导致性能显著提高,可能造成欠拟合
2.后剪枝
先从训练集生成完整的决策树,自底向上的遍历每一非叶子节点,判断将其替换为叶子节点后能否提升决策树的泛化性能。若能,则将该子树替换为叶节点。
优点:欠拟合风险很小,泛化性能往往优于预剪枝决策树
缺点:训练时间开销比未剪枝决策树和预剪枝决策树都要大的多
判断泛化性能提升的方法:采用机器学习之模型评估与选择中述及的评估方法。
四、连续与缺失值处理
1.连续值处理
上述讨论的决策树生成方式均为基于离散值,当处理连续值时,可将连续属性离散化处理,如:二分法(C4.5决策树算法中采用此方法)。
注:与离散属性不同,若当前节点划分属性为连续属性,该属性还可作为其后代节点的划分属性。
2.缺失值处理
1)若样本x在划分属性a上的取值已知,则将x划入与其取值对应的子结点
2)若样本x在划分属性a上的取值未知,则将x以不同的概率划入所有子结点中
五、多变量决策树
非叶节点不再仅是针对某个属性,而是对属性的线性组合进行测试,试图建立一个合适的线性分类器。