随机森林 2(决策树)

通过 随机森林 1 的介绍,相信大家对随机森林都有了一个初步的认知,知道了随机和森林分别指的是什么,以及决策树根据什么选择内部节点。本文将会从森林深入到树,去看一下决策树是如何构建的。网上很多文章都讲了决策树如何构建,但在我看来不够生动形象,不够深入,希望此文能够让你彻彻底底了解决策树以及公式的含义。

一、决策树的核心与逻辑

决策树的核心是确定节点用哪个特征当做判断条件,优先选择分类效果最强的特征当做节点的判断条件。构建决策树的逻辑也就清晰了,根节点选择分类效果最强的特征当做判断标准,后面的节点依次选择剩余特征中分类最强的特征当做判断标准,如果两个一样强,那就形成分支,最终构建成一棵树。

二、衡量特征分类效果强弱的指标

随进森林和决策树构建的逻辑我们已经非常清楚了,我们只要知道如何判断判断特征分类效果的强弱就可以一通百顺。这里我们会讲四个指标,分别是信息熵、信息增益、信息增益率和基尼指数。

2.1 信息熵

熵大家应该都听说过,熵是用来衡量混乱程度的指标,越有序,熵越小,也可以理解为纯度的指标,越纯,熵越小。

信息熵公式

Ent(D)表示样本集合 D 的信息熵;表示 k 类样本所占的比例;所以信息熵就是计算每个类别的累加;

因为0<<1,所以越接近 1, 也就是 k 的概率接近 1,越接近 0,熵越小;相反 k 的概率越小,熵越大。举个极端的例子:假如只有一个类别,那么这个类别的概率肯定是 1,非常纯,非常有序,熵也达到了最小值 0。

这里延伸一下为什么很多公式都带 log,本质是为了让差值小的两个数字经过 log 计算后,让差值更明显。在这里因为概率之间的差异非常小,可能差异在 0.1 甚至 0.01,计算以 2 为底的,0.01 和 0.02 的对数, 结果分别时-6.644和-5.644,差异增加了 100 倍。

2.2 信息增益

我们知道了熵可以描述一个集合的纯度,那么如何利用熵来决定节点选择哪个特征划分呢?这里就引入了信息增益的概念,信息增益表示的是熵减少的程度。划分逻辑就是,划分后每个集合的熵乘以该集合占总集合的比例,然后求和与划分前熵相比较,减少的多说明划分效果好。

Gain(D,a)表示特征 a 对数据 D 进行划分所获得的信息增益,Ent(D) 表示划分前的信息熵,表示划分后的信息熵。v 表示的是特征a第 v 个取值,D^{v} 表示样本 D 在v上的样本集合,就是样本 D 在 v 上的样本集合占 D 整个集合的权重。

举个例子,集合 A 为[1,1,1,2,2,2],经过特征 X 划分为 集合 B1[1,1,2,2] 和集合 B2[1,2],经过特征 Y 划分为集合 C1[1,1,1] 和集合 C2[2,2,2]。

  1. 集合A 的熵 0.5*{log_{2}0.5}^{}+0.5*{log_{2}0.5}^{}=-1;
  2. 集合B1和 B2 的熵一样 0.5*{log_{2}0.5}^{}+0.5*{log_{2}0.5}^{}=-1,再乘以每个集合占总集合的比例 -1*(4/6) + -1*(2/6) = -1;
  3. 集合 C1 和 C2 的熵一样都是 0,乘以每个集合占总集合的比例依然是 0;
  4. Gain(A,X)=0,Gain(A,Y)=-1;

由此可见,通过特征 X 划分,熵依然是-1,信息增益为 0,没有减小;通过特征 Y 的划分,熵从-1 变成 0,信息增益为 -1。很明显特征 Y 划分效果好,所以选择 Y 当做该节点划分特征。

每个节点都可以使用这个方法确定特征,从根节点不断向下延伸,这样就形成一个决策树,使用信息增益确认节点特征的代表算法时 ID3。

2.3 信息增益率

通过信息增益构建决策树有个致命的缺点,更喜欢用有大量取值的特征来分类,可能会陷入太过关注细节,无法看到大局的情况。举个例子:假设你正在构建一个决策树来帮助你预测明天是否会下雨。你有很多数据,包括每天的温度、湿度、风速等信息。其中一个特征是"云朵的形状",因为每天的云朵都可能有微小的变化,每个云朵形状只对应一个结果,导致用云朵的形状分类信息增益最小,但实际上明天是否下雨和云朵形状关系很小,甚至没有关系,这就是典型的在训练数据上表现很好,但实际使用很差,鲁棒性很差。

针对上面这种情况,有人就提出了用信息增益率来代替信息增益。信息增益率多了一个衡量本身属性分散程度的指标作为分母。

|D^{}| 表示数据集 D 的样本量,|D^{v}| 表示数据集 D 在特征第v上的样本数量。

如果D^{v}数量特别小,占整个数据集的比例就特别小,把负号给到 log,log 计算出来的值就越大,结合右边的 log 图来看,D^{v}占整个数据集的比例越小,斜率越大,log 增长速度远大于,所以整体来看,IV(a)越大。更通俗点的理解就是,特征 a 的可能取值数目越多,IV(a)越大,信息增益率越小。这样通过增加 IV(a)分母,很好的牵制了信息增益偏向取值更多的特征的问题。

2.4 基尼指数

基尼指数和熵差不多,都是用来衡量集合的纯度,基尼指数越小,表示数据越纯。

p_{k}表示第 k 类的数据占总数据的比例;

{p_{k}}^{2} 表示随机抽取的样本既属于类别 k,又再次抽取时仍然属于类别 k 的概率,可以理解为连抽两次都是 k;

如果一个数据集特别纯,那么{p_{k}}^{2} 的概率比较高,较大,基尼指数最终结果较小。决策树会选择最小基尼指数的特征来划分。

基尼指数与信息增益率相比,有哪些进步呢?

1 、信息增益率为了避免信息增益的致命缺点,会优先考虑样本数量少的特征,具有偏向性,而基尼系数没有这个偏向性;

2 、计算开销更少,没有涉及到 log 的计算;

相关推荐

  1. 决策随机森林算法 简介

    2023-12-22 00:12:04       57 阅读
  2. 随机森林决策区别

    2023-12-22 00:12:04       58 阅读
  3. 决策随机森林算法

    2023-12-22 00:12:04       55 阅读
  4. 机器学习_决策随机森林

    2023-12-22 00:12:04       30 阅读
  5. 机器学习之决策随机森林

    2023-12-22 00:12:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-22 00:12:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-22 00:12:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-22 00:12:04       82 阅读
  4. Python语言-面向对象

    2023-12-22 00:12:04       91 阅读

热门阅读

  1. C++复合数据类型:结构体|枚举

    2023-12-22 00:12:04       53 阅读
  2. Ubuntu20.04安装CUDA和Nvidia 4090显卡驱动

    2023-12-22 00:12:04       72 阅读
  3. ubuntu 更换pip源

    2023-12-22 00:12:04       71 阅读
  4. JUC、MySQL

    2023-12-22 00:12:04       37 阅读
  5. log4js-node在nodejs项目中的使用示例

    2023-12-22 00:12:04       53 阅读
  6. node设置镜像源

    2023-12-22 00:12:04       61 阅读
  7. centos磁盘扩容

    2023-12-22 00:12:04       62 阅读
  8. Codeforces Round 916 (Div. 3)(A~F)

    2023-12-22 00:12:04       65 阅读
  9. Git 中 rebase、reset、revert 有什么区别?

    2023-12-22 00:12:04       55 阅读