ML - 决策树

本文深入介绍了决策树算法,包括其特点、树的组成、训练与测试过程。讨论了熵、信息增益、信息增益率和基尼系数在构建决策树中的作用,并对比了它们的优缺点。还涵盖了决策树在回归问题上的应用,以及解决过拟合的剪枝策略,包括预剪枝和后剪枝。最后,分析了决策树的局限性和连续值处理方法。
摘要由CSDN通过智能技术生成


相关:决策树-代码实现


什么是决策树

在这里插入图片描述

决策树:从根节点 开始一步步走到叶子节点(决策);所有数据最终会落到叶子几点;


特点

  • KNN 和 决策树 是非参数算法(大部分算法都是参数算法);
  • 可以解决分类问题,天然可以解决多分类问题;
  • 可以解决回归问题;
  • 具有非常好的可解释性;

树的组成

  • 根节点:第一个选择点
  • 叶子节点:最终的决策结果
  • 非叶子节点与分支:中间过程

关于顺序

决策树注重节点的先后顺序;先后顺序变化后,最终结果也会发生很大变化。
第一个节点(根节点)的效果需要是比较强的,可以进行大致的判断。


决策树的训练和测试

训练阶段:从给定的训练集 构造出一棵树(从根节点开始选择特征,对特征切分)

测试阶段:根据构造出来的树模型,从上到下去走一遍就好了。

一旦构造好了决策树,那么分类或者预测任务就很简单了。难点在于构造一棵树。


决策树要解决的问题:

  • 哪一个判断作为根节点(每个节点在哪个维度上划分)?
  • 选好维度的话,在维度的哪个值上划分?

答案:
基于熵值建立树模型;
基于信息增益决定特征怎么选;


决策树算法

  • ID3:信息增益;
  • C4.5:信息增益率;
  • CART:使用 GINI 系数作为衡量标准;
  • GINI 系数,和熵衡量标准类似,只是计算方式不同。

信息熵

决策树的目标是 通过一个衡量标准,来计算通过不同特征进行 分支选择后的分类情况。找到最好的那个作为根节点。

这个标准就是 熵,熵表示 随机变量 不确定性 的 度量。

信息熵 是 信息论的基础概念,源自于物理热力学,热量越大,粒子无规则运动越剧烈,不确定性越高。

数据越不确定(越混乱),熵越大;数据不确定性低,熵越小。


信息熵计算公式

H = − ∑ I = 1 k p i l o g ( p i ) H = -\sum^k_{I=1} p_i log(p_i) H=I=1kpilog(pi)

  • H:一个系统信息熵的总和;
  • p i p_i pi:K 类信息,每一类信息所占的比例;
    一般值小于1,所以 $ log(p_i) $ 为负,所以总公式前面有负号;

举个栗子

A 集合 [1, 1, 1, 1, 2, 1, 1, 2]
B 集合 [1, 2, 3, 4, 5, 6, 7, 8]

显然A 集合的熵值要低,因为 A 里面只有两种类别,相对稳定;
B 中类别太多,熵值就会很大。


熵计算示例

在这里插入图片描述


{1, 0, 0}
H = -1 log(1) = 0 # 此时信息熵最低


二分类的熵

如果数据只有两类
公式可以改变为: H = − x l o g ( x ) − ( 1 − x ) l o g ( 1 − x ) H = -x log(x) - (1-x)log(1-x) H=xlog(x)(1x)log(1x)


使用信息熵寻找最优划分

划分后,信息熵如何最低?---- 对划分结果进行搜索。


信息增益

如何决策一个节点的选择?
信息增益:特征X 使得类别 Y 的不确定性减少的程度(分类后的专一性,希望分类后的结果 是同类在一起)。

左节点的熵值 + 右节点的熵值,比上一个节点的熵值小,就有进步。


熵:表示随机变量的不确定性。

条件熵:在一个条件下,随机变量的不确定性。

信息增益:熵 - 条件熵。


使用熵和信息增益 构造决策树的实例

在这里插入图片描述

在这里插入图片描述


信息增益率

使用信息增益来做,存在问题。不适合处理非常稀疏的特征。
比如:有10个数据,以 ID 作为特征来划分,可以分为 10个分支,每个分支内部很纯,熵为0。

以上是 ID3 算法,科学家提出使用 信息增益率 来改进的 C4.5 算法。

信息增益率 计算公式: G a i n − r a t i o = G a i n ( A ) / I Gain-ratio=Gain(A)/I Gainratio=Gain(A)/I


基尼系数

是另一个划分指标;计算比信息熵简单很多,公式: $ G = 1 - \sum^k_{i=1} p^2_i $


计算示例

在这里插入图片描述

基尼系数越高,整体随机性越强。


二分类问题的基尼系数

G = 1 − x 2 − ( 1 − x ) 2 = 1 − x 2 − 1 + 2 x − x 2 = − 2 x 2 + 2 x G = 1 - x^2 - (1-x)^2 = 1 - x^2 - 1 + 2x - x^2 = -2x^2 + 2x G=1x2(1x)2=1x21+2xx2=2x2+2x

是一个抛物线,开口向下,拥有一个最大值,在抛物线的对称轴处。
当 x = 0.5 时,基尼系数最大,数据不确定程度最大。


信息熵 & 基尼系数

  • 信息熵的计算 比 基尼系数 稍慢;sklearn 中默认使用基尼系数;
  • 大多数情况下,二者没有特别的效果优劣,划分结果区分不大;

CART

CART: Classification And Regression Tree

以上探讨的决策树通常也叫做 CART,根据某一个维度d 和 某一个阈值 v 进行二分(得到一颗二叉树);
sklearn 实现的决策树通常是 CART;

还有其他决策树创建方法:ID3, C4.5, C5.0 …


决策树的复杂度

预测的时间复杂度: O(log m)
训练: O( nmlogm)

所有非参数机器学习算法,都容易产生过拟合
一般使用对决策树进行剪枝 来降低复杂度、解决过拟合。
比如:限制树的高度;对参数进行平衡。


决策树解决回归问题

使用 DecisionTreeRegressor 类来训练


决策树的局限性

对于个别样本点很敏感,这也是所有非参数算法的共性。
改变一个点,可能就会改变整个决策边界。


连续值的处理

选取连续值的哪个分界点?
– 使用贪婪算法

如,排序 60,70,75,80,90,95,100,120,125,220
以上十个数据,若进行二分,则可能存在9个分界点。得到9种熵值比较;哪里分界能使熵值最小,信息增益最大,就在哪里切分。
这就是 离散化 的过程。


决策树的剪支策略

为什么要剪枝?
决策树 理论上可以完全分得开数据。(如果树足够大,每个叶子节点就是一个数据,这是过拟合的表现。)
剪枝是 将树修剪,使其不要过于庞大。作用:防止过拟合。

剪支策略:

  1. 预剪枝:边建立决策树,同时进行剪枝操作(更实用)
  2. 后剪枝:建立完决策树后进行剪枝操作。

预剪枝

设置一些参数,来控制树模型的增长、复杂程度。
如 限制深度、叶子节点个数、叶子节点样本数、信息增益量等。

后剪枝

通过一定的衡量标准。
$ C_{\alpha} = C(T) + \alpha \cdot | T_{leaf} | $

  • C α C_{\alpha} Cα:最终的损失
  • C ( T ) C(T) C(T):gini 系数或者熵值多少
  • α \alpha α:自定义的平衡项
  • T l e a f T_{leaf} Tleaf 叶子节点个数

叶子节点越多,损失越大。


决策树解决分类 & 回归问题

分类问题
评估标准:熵 或 gini系数;(分类结果纯度)
预测值为众数;比如某个节点中0多,那么落到这个节点的样本就是 0;


回归问题
评估标准:方差。可评估节点内部数据的差异程度。
预测结果使用 平均值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI工程仔

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值