决策树学习的目的是为了产生一棵泛化能力强的决策树,其的生成是一个递归过程,导致递归返回的三种情况:
- 当前结点包含的样本全属于同一类别,无需划分
- 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分
- 当前结点包含的样本集合为空,不能划分
决策树学习的关键是如何选择最优划分属性。
划分指标1——信息增益
假定样本集合中第
类样本所占比例为
,则
的信息熵定义为:
信息熵的值越低,则的纯度越高。
假定离散属性有
个可能的取值
,若使用
对样本进行划分,会产生
个分支结点,其中第
个分支结点包含了
中所有在属性
上取值为
的样本,记为
。利用属性
对样本集
进行划分所获得的信息增益为:
一般信息增益越大,划分数据集所获得的纯度提升就越大。当多个属性均取得了最大的信息增益,可任选其中之一作为划分属性。
ID3决策树学习算法是以信息增益为准则来选择属性划分。
划分指标2——增益率
信息增益准则对于可取值数目较多的属性有所偏好,为减少该偏好可能导致的不利影响,可使用增益率作为划分标准(C4.5决策树算法):
其中:
称为属性
的固有值。通常属性
可取值个数越多,
越大。
增益率准则对可取值数目较少的属性有所偏好,因此C4.5算法并不直接采用增益率最大的候选划分属性,而是使用了一个启发式:先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
划分指标3——基尼指数
CART决策树使用基尼指数来选择划分属性,数据集的纯度可用基尼值来度量:
基尼值越小,样本集纯度越高。属性的基尼指数定义为:
选择基尼指数最小的属性作为最优划分属性。
剪枝处理
剪枝处理是决策树学习算法应对过拟合的主要手段,基本策略有预剪枝和后剪枝。
预剪枝:在生成决策树过程中,对结点划分前后的泛化性能进行性能估计(留出法、交叉验证法、自助法)。
预剪枝不仅降低了过拟合的风险,也显著较少了决策树的训练时间开销和测试时间开销。但有些分支当前划分虽然不能提升、甚至降低泛化性能,但其后续划分却有可能导致性能显著提高。预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合风险。
后剪枝:在生成完整的决策树后,自底向上地对非叶节点进行考察。
后剪枝通常保留的分支数比预剪枝多,欠拟合风险较小,泛化性能常优于预剪枝决策树。但后剪枝决策树的训练时间开销要多于预剪枝决策树和未剪枝决策树。
连续值与缺失值
C4.5采用了二分法对连续属性进行处理。
是样本集基于
二分后的信息增益。对于连续属性,该属性可以作为其后代结点的划分属性。
当训练集样本的属性存在缺失值时,引入权重量,详见西瓜书P85。核心思想为:当某个属性缺失时,让同一个样本以不同概率划入到不同的子结点去。(C4.5采用了该方案)
多变量决策树
决策树形成的分类边界有一个明显缺点:轴平行,即分类边界由若干个与坐标轴平行的分段组成。
多变量决策树中的非叶节点不再仅对某个属性,而是对属性的线性组合进行测试。