02 | 决策树模型
一、决策树的模型概述
决策树基于树结构进行决策(🍉):
- 内部节点:对应某个属性,应用于某个属性的测试(色泽)
- 分支:对应测试产生的可能结果,对应于属性的某个值(红、绿)
- 叶子节点:对应测试结果
学习过程:通过对训练样本的分析来确定划分属性(内部节点的属性)
预测过程:将待测数据从根结点开始,沿着划分属性所构成的“判定测试序列”下行,直到叶子节点
常见决策树:
- 第一个决策树——CLS
- 展露头脚——ID3
- 常用的决策算法——C4.5
- 可用于回归任务的决策算法——CART
- 基于决策树的最强大的算法——RF
二、算法流程和最优属性选择方法
2.1 决策树的基本流程
总体流程:分而治之
- 子根向叶的递归过程
- 在每个中间节点中选择一个划分属性
停止条件:
- 当前节点纯度为1,所有类别都相同,无需划分
- 属性为空,或者所有样本在所有属性中取值相同(没有有用的属性),无法划分
- 节点包含的样本集为空,不能划分
图片
2.2 最佳属性选择方法
2.2.1 信息熵
信息熵:度量样本纯度,假定当前样本集合D中第k类样本所占比例为\(p_k\),则D的信息熵如下式
\[Ent(D) = -\sum_{k=1}^{\left| y \right|}p_{k}log_{2}p_{k}
\]
- \(Ent(D)\)越小,D的纯度越高
- \(p_k=0\)时,\(Ent(D)=0\)
- \(Ent(D)\)最小值为0,最大值为\(log_2{\left| y \right|}\)
2.2.2 信息增益
信息增益:以信息熵为基础,计算当前划分对信息熵所造成的变化(ID3使用)
设离散属性a的取值:\(\{a^1,a^2,..,a^V\}\)
\(D^v\):D中在a上取值为\(a^v\)的样本集合
以属性a对数据集D进行划分产生的信息增益\(Gai n(D,a)\)
\[Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{\left|D^{v}\right|}{\left|D\right|}Ent(D^{v})
\]
-
\(Ent(D)\)划分前的信息熵
-
\(\frac{\left|D^{v}\right|}{\left|D\right|}\)划分后的信息熵
-
第N个分支的样本越多越重要
2.2.3 信息增益率
信息增益存在问题:偏好可取值数目较多的属性,例如编号
信息增益率(C4.5)
\[Gain\_radio(D,a) = \frac{Gain(D,a)}{IV(a)}
\]
\[IV(a)=-\sum_{v=1}^{V}\frac{\left|D^{v}\right|}{\left|D\right|}log_2{\frac{\left|D^{v}\right|}{\left|D\right|}}
\]
-
属性a可取数值数目越大(V越大),\(IV(a)\)的数值越大,降低这种偏好
-
启发式:从候选属性找出信息增益高于平均水平的,再从中选取信息增益率最高的
2.2.4 基尼系数
\(Gini\)指数(CART):反映了从D中随机抽取两个样例,其类别标记不一致的概率
\[Gini(D)=\sum_{k=1}^{|y|}\sum_{k^{‘}\neq k}p_kp_{k^{'}}=1-\sum^{|y|}_{k=1}p_kp_{k^{'}}
\]
-
\(Gini\)指数越小,数据集越纯
-
选取令Gini指数最小的属性
-
Gini指数、熵、分类误差率三者的关系:
\[-\sum_{k=1}^{K}p_kln{p_k}\approx\sum_{k=1}^{K}p_k(1-p_k)
\]
\(f(x)=-lnx\)在\(x=1\)处泰勒展开,忽略高阶无穷小,\(f(x)\approx1-x\)
2.3 熵与信息论的视角
2.3.1 二分视角看CART
- 每个分支就是一个二分类的过程
- 这个过程叫做决策树桩
- 一颗决策树由多个决策树桩拼接起来
- 决策树桩是只有一层的决策树
2.3.2 信息论的视角理解
信息论的视角理解:对于多分叉树的情况,机器学习——破解密码

2.3.3 三种不同的决策树
决策树 | 特点 | |
---|---|---|
ID3 | 取值多的属性会导致数据数据更纯,对应的信息增益大 | 训练得到一颗庞大且浅的树,不合理 |
C4.5 | 采用信息增益率代替信息增益 | |
CART | 利用基尼系数替代熵 | 最小化纯度,而不是最大化信息增益 |
三、剪枝与控制过拟合拟合
剪枝:
- 为了降低过拟合的风险,主动去掉一些分支
- 预剪枝和后剪枝
剪枝依据:剪枝前后决策树的优劣,(留出法)验证集判断
基本策略:
- 预剪枝:提前中止某些分支生长
- 后剪枝:生成一颗完全的树,再回头剪枝
预剪枝 | 后剪枝 |
---|---|
训练、测试时间降低 | 训练时间增加,测试时间降低 |
过拟合风险降低,欠拟合增加 | 过拟合风险降低,欠拟合基本不变 |
后剪枝的泛化能力优于预剪枝 |
四、数据案例详解
爱生活、爱编程