根据西瓜书《决策树》章节和李沐 b 站相关视频整理。

# 决策树

# 西瓜书

# 基本流程

image-20240401234738414

什么情况下不需要继续往下分了?三种停止递归条件如下:

  1. 已全为同一种类别 -> 叶节点
  2. 已没有更多的属性往下分(西瓜色泽、敲声、根蒂,无其他属性)-> 谁多当做谁
  3. 遇到了未出现的属性值 -> 父节点谁多当做谁

最重要的是找到最优的划分属性

名词解释

先验分布:基于过去研究、专家经验等

后验分布:先验分布 + 观测数据

# 划分选择

image-20240401234759543

分散的类别越多、概率越小,信息熵越大

image-20240401234808225

信息增益越大,意味着使用属性 a 来进行划分所获得的纯度提升越大。每一次选取能够获得最大信息增益的属性进行划分,直到不能划分为止。

# 增益率

image-20240401234827256

C4.5 决策树算法

增益越大越好,属性可选择值(分支数量)越小越好。

规范化:把不可直接比较的东西,变得可以比较。

归一化:规范化到 0-1 之间。

# 基尼指数

CART 决策树学习算法

image-20240401234840889

# 剪枝处理

剪枝是决策树对付 “过拟合” 的主要手段!

过拟合:学习了数据集中不该学习的特性,学多了;不是一般规律,而是少量样本有的特性

# 预剪枝

提前终止某些分支的生长。

在生成树的时候就进行评估。如果划分后,精度增加,就划分;若精度无提升,就剪枝。

但在有些情况下,后续划分可能带来性能显著提高,基于 “贪心” 的预剪枝可能会造成欠拟合。

# 后剪枝

生成一颗完全树,再 “回头 “剪枝

后剪枝可以减少欠拟合的风险,但是训练开销较大。

# 连续与缺失值

# 连续值处理

最简单的处理策略是二分法。

候选点集是连续属性之间的中位点,挑选增益率最高的二分点。

# 缺失值处理

仅使用无缺失的样例,是对数据的极大浪费。

那么如何使用缺失值?基本思路:样本赋权、权重划分

  1. 如何划分属性选择?
  2. 给定划分属性,若样本在该属性上的值确实,如何进行划分?

解决方案、思路:

image-20240401234853075

回答问题一:如何划分属性选择?

信息熵的计算增加权重,通过属性权重(非缺失样本概率)与子集的增益率,权衡选择。

image-20240401234907588

回答问题二:给定划分属性,若样本在该属性上的值确实,如何进行划分?

将已知的后验概率作为未知的先验概率进行处理,缺失值样本将同时进入三个分支,但在进入分支时,以权重为概率进行划分。

# 多变量决策树

每个节点的决策不再依赖于单一属性,而是找到合适的线性分类器。

# 李沐

两个例子

image-20240401234932374

  • 怎么用决策树来做分类:拿一个数据,看一下这个数据在节点上是应该往哪个方向走,一直往下走,走到叶子节点,就会得到数据所对应的标号
  • 用决策树做回归:与上面那个例子不同的是,叶节点不是一个具体的类而是一个实数值

# 决策树的好与坏

好处:

  • 可以解释(可以让人看到对数据处理的过程)【常用于银行业保险业】;
  • 可以处理数值类和类别类的特征;

坏处:

  • 不稳定(数据产生一定的噪音之后,整棵树构建出的样子可能会不一样)【使用集成学习 (ensemble learning) 可以解决】
  • 数据过于复杂会生成过于复杂的树,会导致过拟合【把决策树的枝剪掉一些(在训练时觉得太复杂了就停下来,或在训练之后把特往下的节点给剪掉)】
  • 大量的判断语句(太顺序化),不太好并行【在性能上会吃亏】

# 让决策树稳定的方法

# 随机森林

  • 训练多个决策树来提升稳定性:
  • 每棵树会独立的进行训练,训练之后这些树一起作用得出结果;
  • 分类的话,可以用投票(少数服从多数);
  • 回归的话,实数值可以时每棵树的结果求平均;
  • 随机来自以下两种情况:
    • Bagging:在训练集中随机采样一些样本出来(放回,可重复);
    • 在 bagging 出来的数字中,再随机采样一些特征出来,不用整个特征;

# Boosting

image-20240401234948093

  • 顺序完成多个树的训练(之前是独立的完成)
  • 例子说的是,利用训练好的树与真实值做残差来训练新的树,训练好了之后再与之前的树相加
  • 残差 等价于 取了一个平均均方误差(预测值与真实值的)再求梯度乘上个负号

# 总结:

​ 树模型在工业界用的比较多【简单,训练算法简单,没有太多的超参数,结果还不错】(不用调参结果还不错)

​ 树模型能够用的时候,通常是第一选择。