【决策树】在分类问题中,基于一定的特征选择,将数据集划分成不同的分支,并不断递归下去直到划分为多个满足要求的小数据集,对于一个样本,其分类的过程是一系列判断和选择的过程。
过程:特征选择、决策树生成、决策树修剪
目标:根据训练集进行构建一个分类模型,能够对新来的数据正确分类
本质:一系列分类规则的整合
【构建过程】
1.首先所有训练数据集都位于根节点
2.选择一个最优特征划分数据集到不同子集
3.判断各个子集是否已经正确归为一类(根据分类的需求和标准),如果是,那么该子集归为叶子节点;如果不是,那么继续划分
4.当各个子集都已划分到叶子节点,也就是都分类正确,决策树构建完成
【特征选择】
通常一个数据集划分,根据不同的特征,有不同的划分方案,在决策树构建过程中,特征选择最为关键。
信息增益:划分数据前后,数据集信息量的变化
划分数据集时,选择使得信息增益最大的特征。
熵:描述系统混乱程度物理量,信息学中信息熵指代信息的期望值
表达公式:
- P(Xi)表示X=i的类别概率
- -log(p(Xi))表示事物表现为X=i状态分类的信息量大小
从公式可以看到,H实质反映事物的不确定性大小:
- 当n=1,也就是只有一种可能时,那么事物是确定的,此时H=0也就是信息熵为0
- 当n非常大,那么事物可能有任意多种可能,也就是不确定性很大,此时信息熵H也非常大
经验熵:对于一个数据集,其可以划分成若干类,每一类的出现概率为该类所占的比例,那么可以估算该数据集的经验熵
计算公式:
- Ck对应第k类数据的数量
- D对应所有数据集的数量
条件熵:在给定X条件下,Y变量的不确定性大小。
计算公式:
决策树中一次决策的信息增益即是:在给定一个判定特征之后,数据的不确定性减小的程度
计算公式:
引入特征A后,信息增益表现为经验熵与条件熵之差。
- 数据集大时,经验熵较大,那么引入特征条件之后信息增益也较大
- 数据集小时,经验熵较小,那么引入特征条件之后信息增益也较小
因此,研究特征信息增益比显得更加科学,其计算公式为:
即信息增益g/经验熵D
因此在特征选择时总是选择当前信息增益比最大的特征,从而减少数据集的不确定性,使得分类更为准确
【决策树的修剪】
通常而言,在数据集上构建的决策树在训练数据集上非常准确,但是在测试数据集上却表现一般,
也就是发生过拟合的情况,这样的决策树无法很好的泛化与应用,通常采取剪掉过于小和精细的子树或叶子节点
原因:过分考虑训练集,使得构建出的决策树过于精细和庞大。
解决方案:
引入损失计算函数:
- T表示叶子节点的数目,也就是各个最终子类的数目
- C(T)表示模型与训练数据的拟合误差,该数据越小,表明拟合程度越高
该系数为调整因子,
- 当
=0时,只考虑拟合误差,那么训练出的模型拟合程度非常高;
- 当
>0,那么将考虑子类数目的增多带来的过拟合影响;
- 当
越大,模型训练出的子类越少,也就是模型越简单。
决策树在考虑选择特征时,同时考虑损失函数,也就是构建过程预剪枝。
同时也可以在决策树构建完成后进行剪枝,也就是后剪枝
【优缺点】
| 优点 | 缺点 |
| 模型结构清晰,易于理解和可视化 | 容易出现对训练数据的过拟合现象,使得模型过于复杂 |
| 数据集不用做过多预处理和标准化 | 决策树不太稳定,一个小变化会引起树的结构调整,从而产生不同的树 |
| 模型的大小可控,为数据集大小对数关系 | 如果部分分类占优,可能出现一定偏差的树 |