Loading

4 决策树

本文根据西瓜书内容整理而成,并参考了以下资料: Datawhale南瓜书https://www.datawhale.cn/learn/content/2/66

4.1 基本流程

一轮一轮询问特征,最终得到结果
流程解释:

  • 根据一个最优划分属性对现有的样本进行分组(类似亚里士多德的分类游戏hh)
  • 如果遇到有一个属性没有样本,那么这个样本就先用这一轮里最多的类别作为结果
  • 如果此时发现所有样本的类型都是一样的,则结束分类
  • 分到最后属性分完了,不能再分了,但是还是有不同种类的,那么就是少数服从多数

4.2 划分选择

决策树的关键在于:如何选择最优划分属性
我们的目标:分完之后确实分类了,“纯度” 越来越高,即分完之后样本尽量都是同类别的

4.2.1 信息增益

用数学语言来描述“纯度”的方法--信息熵
定义 信息熵 (回顾概率论)

\[Ent(D) = - \sum_{k=1}^{|y|}p_k \log_2 p_k \]

定义 信息增益

\[\text{Gain}(D,a) = \text{Ent}(D) - \sum_{v=1}^{V} \frac{|D^v|}{|D|} \text{Ent}(D^v) \]

Remark:计算分类后的信息熵的期望

选择最优划分属性\(\Rightarrow\) \(argmax Gain(D,a)\)

4.2.2 增益率

每次根据一个属性来分类,但是如果属性特别多分得特别细的话,分类效果也不好,所以就推出了增益率,考虑编号数量

定义增益率

\[\text{Gain_ratio}(D,a) = \frac{\text{Gain}(D,a)}{\text{IV}(a)}, \]

其中

\[\text{IV}(a) = -\sum_{v=1}^{V} \frac{|D^v|}{|D|} \log_2 \frac{|D^v|}{|D|} \]

称为属性 \(a\) 的 “固有值”
Remark 增益率可能会导致对少分类的盲目青睐,所以可以先找出信息增益高于平均水平的分类,再在里面找到增益率最高的

4.2.3 基尼指数

第二种描述样本纯度的值--基尼值
基尼值\(\text{Gini}(D)\) 反映了从数据集 \(D\) 中随机抽取两个样本不一致的概率。\(\text{Gini}(D)\) 越小, 则数据集 \(D\) 的纯度越高。
定义 基尼值

\[\begin{align*} \text{Gini}(D) &= \sum_{k=1}^{|\mathcal{Y}|} \sum_{k' \neq k} p_k p_{k'} \\ &= 1 - \sum_{k=1}^{|\mathcal{Y}|} p_k^2 \end{align*} \]

定义 基尼指数 属性 \(a\) 的基尼指数

\[\text{Gini_index}(D, a) = \sum_{v=1}^{V} \frac{|D^v|}{|D|} \text{Gini}(D^v) \]

4.3 剪枝处理

决策树分支过多可能会导致过拟合,所以可以剪枝来降低过拟合风险。

决策树剪枝策略

  • 预剪枝 决策树生成过程中检查泛化能力(第二节中详述)
  • 后剪枝 决策树生成完后检查泛化能力

总体流程:对比剪枝前后的验证集精度

4.4 连续与缺失值

4.4.1 连续值处理

决策树的选择AorB,but对于连续属性,决策树该如何处理?连续属性离散化技术

二分法

  • 找一个数字把样本分成两组,此数字为划分点
  • 划分点由样本数字与数字之间的数字产生,候选集合为

\[T_a = \left\{ \frac{a^i + a^{i + 1}}{2} \,\big|\, 1 \leqslant i \leqslant n - 1 \right\} \]

  • 同样的,去找到那个最优的划分依据(信息增益标准)

\[\begin{align*} \text{Gain}(D, a) &= \max_{t \in T_a} \text{Gain}(D, a, t) \\ &= \max_{t \in T_a} \left[ \text{Ent}(D) - \sum_{\lambda \in \{-, +\}} \frac{|D_t^\lambda|}{|D|} \text{Ent}(D_t^\lambda) \right] \end{align*} \]

4.4.2 缺失值处理

可取值 \(\{a^1, a^2, \dots, a^V\}\),令 \(D^v\) 表示 \(D\) 中在属性 \(a\) 上取值为 \(a^v\) 的样本子集,\(\tilde{D}_k\) 表示 \(\tilde{D}\) 中属于第 \(k\) 类(\(k = 1, 2, \dots, |\mathcal{Y}|\))的样本子集,则显然有 \(\tilde{D} = \bigcup_{k=1}^{|\mathcal{Y}|} \tilde{D}_k\)\(\tilde{D} = \bigcup_{v=1}^{V} \tilde{D}^v\)。假定我们为每个样本 \(\boldsymbol{x}\) 赋予一个权重 \(w_{\boldsymbol{x}}\),并定义:

\[\rho = \frac{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in D} w_{\boldsymbol{x}}} \]

此项表示未缺失的值占总的样本的比例

\[\tilde{p}_k = \frac{\sum_{\boldsymbol{x} \in \tilde{D}_k} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}} \quad (1 \leqslant k \leqslant |\mathcal{Y}|) \]

此项表示剔除缺失值之后的类别占比

\[\tilde{r}_v = \frac{\sum_{\boldsymbol{x} \in \tilde{D}^v} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}} \quad (1 \leqslant v \leqslant V) \]

此项表示剔除缺失值之后的属性占比
将信息增益的计算式推广为:

\[\begin{align*} \text{Gain}(D, a) &= \rho \times \text{Gain}(\tilde{D}, a) \\ &= \rho \times \left( \text{Ent}(\tilde{D}) - \sum_{v=1}^{V} \tilde{r}_v \, \text{Ent}(\tilde{D}^v) \right)\end{align*} \]

其中,有:

\[\text{Ent}(\tilde{D}) = -\sum_{k=1}^{|\mathcal{Y}|} \tilde{p}_k \log_2 \tilde{p}_k \]

4.5 多变量决策树

原先的决策树方法分类的结果是折线图
而多变量决策树可以让分类结果变成一条曲线图
在多变量决策树中,非叶节点现在开始对\(\sum k_ia_i\)(各个属性的线性组合)进行测试

posted @ 2025-08-03 22:57  米加  阅读(6)  评论(0)    收藏  举报