决策树
00 min
2024-4-23

1. 简介

决策树是一种树形结构,树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果
notion image

1.1 决策树的创建过程

  1. 特征选择:选取有较强分类能力的特征。
  1. 决策树生成:根据选择的特征生成决策树
  1. 决策树也易过拟合,采用剪枝的方法缓解过拟合

2. ID3决策树

2.1 信息熵

"信息熵" (information entropy) 是度量样本集合纯度最常用的一种指标。假定当前样本集合中第类(按标签分类)样本所占的比例为 ,则的信息熵定义为
的值越小,则的纯度越高。

2.2 信息增益

假定离散属性个可能的取值,若使用来对样本集进行划分,则会产生个分支结点,其中第个分支结点包含了中所有在属性上取值为的样本,记为。我们可先计算出的信息熵,再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重,即样本数越多的分支结点的影响越大,于是可计算出用属性对样本集进行划分所获得的"信息增益" (information gain)
一般而言,信息增益越大,则意味着使用属性来进行划分所获得的"纯度提升"越大。因此,我们可用信息增益来进行决策树的划分属性选择。著名的ID3决策树学习算法就是以信息增益来进行决策树划分属性选择。
notion image

2.3 ID3决策树构建

  • 计算每个特征的信息增益
  • 使用信息增益最大的特征将数据集拆分为子集
  • 使用该特征(信息增益最大的特征)作为决策树的一个节点
  • 使用剩余特征对子集重复上述过程

2.3.1 案例

notion image
notion image
notion image

3. C4.5 决策树

3.1 ID3决策树缺陷

ID3决策树存在一定的不足:它偏向于选择种类多的特征作为分裂依据。例:看下面数据集,特征a有2个取值,特征b有6个取值
特征b
特征a
目标值
1
α
A
2
α
A
3
β
B
4
α
A
5
β
B
6
α
B
显然,特征b的信息增益比特征a的信息增益高。特征b作为分裂特征,会构造一棵深度为2的决策树,该树的预测准确率可能非常高,但整棵树过于依赖少数的特征(只根据少数特征进行学习),导致过拟合。

3.2 信息增益率

信息增益率:信息增益 / 特征熵
其中, 为属性的”固有值“(intrinsic value)
  • 特征的信息增益 ➗ 特征的内在信息
  • 相当于对信息增益进行修正,增加一个惩罚系数
  • 特征取值个数较多时,惩罚系数较小;特征取值个数较少时,惩罚系数较大。
  • 惩罚系数:数据集D以特征a作为随机变量的熵的倒数

3.2.1 案例:求特征a、b的信息增益率

特征b
特征a
目标值
1
α
A
2
α
A
3
β
B
4
α
A
5
β
B
6
α
B
  • 特征a的信息增益率:
      1. 信息增益:
      1. IV信息熵:
      1. 信息增益率:信息增益 / 信息熵= 0.46/0.92=0.5
  • 特征b的信息增益率:
      1. 信息增益:
      1. IV信息熵:
      1. 信息增益率:信息增益 / 信息熵=1/2.58=0.39
  • 结论:特征a的信息增益率大于特征b的信息增益率,根据信息增益率,应该选择特征a作为分裂特征

4. CART 决策树

Cart模型是一种决策树模型,它即可以用于分类,也可以用于回归。
  • Cart回归树使用平方误差最小化策略,
  • Cart分类生成树采用的基尼指数最小化策略

4.1 基尼值和基尼指数

4.1.1 基尼值

基尼值:从数据集中随机抽取两个样本,其类别标记不一致的概率。故值越小,数据集的纯度越高。

4.1.2 基尼指数

属性的基尼指数
于是,我们在候选属性集合中,选择那个使得划分后基尼指数最小的属性作为最优划分属性

4.1.3 案例:计算各特征的基尼指数,选择最优分裂点

第一轮:计算各特征值的基尼指数
  1. 计算是否有房的基尼指数:
    1. 有房的基尼值:
    2. 无房的基尼值:
    3. 有无房的基尼指数:
  1. 婚姻状况
    1. 计算{married} 和 {single,divorced} 情况下的基尼指数:
      1. 结婚的基尼值:
      2. 不结婚的基尼值:
      3. 基尼系数:
    2. 计算 {single} | {married,divorced} 情况下基尼指数
    3. 计算 {divorced} | {single,married} 情况下基尼指数
    4. 最终,该特征的基尼值为 0.3,并且预选分裂点为:{married} 和 {single,divorced}
  1. 年收入
    1. 先将数值型属性升序排列,以相邻中间值作为待确定分裂点:
      1. notion image
    2. 以年收入 65 将样本分为两部分,计算基尼指数
      1. 节点为65时:{年收入}=
    3. 以此类推计算所有分割点的基尼指数,最小的基尼指数为 0.3
特征点
基尼系数
是否有房
0.343
婚姻状况
0.3
年收入
0.3
注:当婚姻状况和年收入为分裂特征计算的基尼系数都一样选,则随机选择某一特征。
第二轮:
  1. 样本 2、4、6、9 样本的类别都是 no,已经达到最大纯度 所以,该节点不需要再继续分裂。
  1. 样本 1、3、5、7、8、10 样本中仍然包含 4 个 no,2 个 yes 该节点并未达到要求的纯度,需要继续划分。
  1. 右子树的数据集变为: 1、3、5、7、8、10,在该数据集中计算 不同特征的基尼指数,选择基尼指数最小的特征继续分裂。
 
重复上述过程直到构建完整的决策树
 
notion image
 

5. CART决策树案例:

数据:

5.1 案例背景

  • 1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。
  • 造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存生存有一些运气因素,但有些人比其他人更容易生存,例如妇女,儿童和上流社会。
  • 有了遇难和幸运数据,运用机器学习工具来预测哪些乘客可幸免于悲剧。

5.2 数据情况

  • 数据集中的特征包括票的类别,是否存活,乘坐班次,年龄,登陆,home.dest,房间,船和性别等
  • 乘坐班是指乘客班(1,2,3),是社会经济阶层的代表
  • age数据存在缺失
notion image

5.3 简版算法实现

notion image

5.4 特征工程

  • 特征编码
    • one-hot
      • 男 1,0
      • 女 0, 1
    • 顺序编码 0,1,2,3,4
  • 特征离散
    • 连续 —> 类别
    • 年龄 —> 少年, 青年, 中青年, 中老年, 老年3
    • 票价→ 0,1,2,3,4,5
    • 离散好处
      • 可以避免异常值的影响
      • 增强模型的稳定性
      • 方便做特征交叉
  • 缺失值填充
    • 年龄 使用标准正态分布进行随机填充