详解决策树与随机森林

在这里插入图片描述

0️⃣引言

在之前介绍过决策树随机森林调参,但都是直接调用skelearn,这次想重点介绍一下原理。

1️⃣决策树

🎟基本流程

以分类任务为代表的决策树模型,是一种对样本特征构建不同分支的树形结构。

  • 一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;
  • 叶结点对应于决策边界,其他每个结点则对应于一个属性测试;
  • 每个结点包含的样本结合根据属性测试的结果被划分到子结点中;
  • 根结点包含样本全集,从根结点到每个叶结点的路径对应了一个判定测试序列。
  • 决策树学习的目的就是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,类似于“分而治之”策略
  • 结束条件:
    • 当前结点包含的样本全属于同一类别,无需划分
    • 当前属性集为空,或是所有样本在所有属性上取值相同,无需划分==》将当前结点标记为叶结点,并将其类别设置为该结点样本最多的类别
    • 当前结点包含的样本集合为空,不能划分==》把当前结点标记为叶结点,但是将其类别设定为父结点所含样本最多的类别

🎟特征选择

目的:通过划分,使得决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高

🚌信息增益

在信息论中,熵表示随机变量不确定性的度量。假设数据集D中第K类样本所占的比例为 p k p_k pk ,则D的熵定义为:
在这里插入图片描述
如果某件事一定发生(太阳东升西落)或一定不发生(钓鱼岛是日本的),则概率为1或0,对应的熵均为0。如果某件事可能发生****可能不发生,概率介于0到1之间,熵大于0。

由此可见,熵越大,随机性越大,结果越不确定。

我们再来看一看 条件熵 Ent(D, a)表示引入随机变量a对于消除D不确定性的程度(通俗的讲就是如果属性a对于数据集D是一个比较好的特征,也就是使用a划分D之后使D纯度更高,导致更多相同类别的划分在一起,条件熵就会越小,反之越大)。假如D、a相互独立,则D的条件熵和熵有相同的值 (此时条件熵是最大的时候);否则条件熵一定小于熵。
在这里插入图片描述

解析:使用属性a对数据集D进行划分,导致产生V个分支结点,第v个分支结点对应的样本记为 D v D^v Dv,也就是样本数越多的结点影响越大

明确了这两个概念,理解信息增益就比较方便了。现在我们有一份数据集D(例如贷款信息登记表)和特征A(例如年龄),则A的信息增益就是D本身的熵与特征A给定条件下D的条件熵之差,即:
在这里插入图片描述
数据集D的熵是一个常量。信息增益越大,表示条件熵 Ent(D, a) 越小,a消除D的不确定性的功劳越大。

所以要优先选择信息增益大的特征,它们具有更强的分类能力。由此生成决策树,称为ID3算法

🚎缺点

信息增益对取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,提出了信息增益率

🚌信息增益率

当某个特征具有多种候选值时,信息增益容易偏大,造成误差。引入信息增益率可以校正这一问题。

信息增益率=信息增益与数据集D的熵之比:
[公式]
其中:
在这里插入图片描述
其实IV(a)很像熵的定义,称为属性a的固有值,属性a可能取值越大(V越大),IV(a)的值通常会更大。

因此,我们优先选择信息增益率最大的特征,由此生成决策树,称为C4.5算法

🚎缺点

信息增益率对信息增益中偏好较多属性做了修改,会对取值数目较少的属性有所偏好,会导致信息增益率有点矫枉过正,因此C4.5并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

🚌基尼指数

基尼指数是另一种衡量不确定性的指标。首先介绍基尼值
[公式]
它反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此基尼值越小,则数据集D的纯度越高。

则属性a的基尼指数定义为:
在这里插入图片描述
我们优先选择基尼指数最小的特征,由此生成决策树,称为CART算法

CART表示分类回归决策树,同样由特征选择、树的生成及剪枝组成,可以处理分类和回归任务。
相比之下,ID3和C4.5算法只能处理分类任务。
CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,依次递归地二分每个特征。
CART对回归树采用平方误差最小化准则,对分类树用基尼指数最小化准则

🎟剪枝处理

目的:防止过拟合,提高高泛化能力。

决策树剪枝一般有两种方法:

  • 预剪枝:在树的生成过程中剪枝。基于贪心策略,可能造成局部最优
  • 后剪枝:等树全部生成后剪枝。运算量较大,但是比较精准

决策树剪枝往往通过极小化决策树整体的损失函数实现

预剪枝降低过拟合风险显著减少决策树的训练时间开销和测试时间开销。但是有些分支的当前划分虽然不能提升泛化性能、甚至可能导致泛化性能暂时下降,但是在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险。

相反,后剪枝决策树的欠拟合风险很小泛化性能往往优于预剪枝决策树。但是后剪枝过程是在生成完全决策树之后进行的,并且要自底向上的对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大的多

2️⃣随机森林

🎟bagging集成

机器学习算法中有两类典型的集成思想:bagging和boosting。

bagging是一种在原始数据集上,通过有放回抽样分别选出k个新数据集,来训练分类器的集成算法。分类器之间没有依赖关系

随机森林属于bagging集成算法。通过组合多个弱分类器,集思广益,使得整体模型具有较高的精确度和泛化性能。

🎟介绍

我们将使用CART决策树作为弱学习器的bagging方法称为随机森林

“随机“表示2种随机性,即每棵树的训练样本训练特征随机选取。多棵决策树组成了一片“森林”,计算时由每棵树投票或取均值的方式来决定最终结果,体现了三个臭皮匠顶个诸葛亮的中国传统民间智慧。

由于随机性,随机森林对于降低模型方差效果显著。故随机森林一般不需要额外剪枝,就能取得较好的泛化性能。

从偏差-方差角度看,Boosting主要关注降低偏差,因此可以基于泛化性能相当弱的学习器构建出很强的集成,而Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更加明显。所以随机森林相比于基于boosting的GBDT模型,偏差会大一些。另外,随机森林中的树一般会比较深,以尽可能地降低偏差;而GBDT树的深度会比较浅,通过减少模型复杂度来降低方差。(面试考点)

最后,我们总结一下随机森林都有哪些优点:

  • 采用了集成算法,精度优于大多数单模型算法
  • 在测试集上表现良好,两个随机性的引入降低了过拟合风险​
  • 树的组合可以让随机森林处理非线性数据
  • 训练过程中能检测特征重要性,是常见的特征筛选方法​
  • 每棵树可以同时生成,并行效率高,训练速度快
  • 可以自动处理缺省值​
posted @ 2022-04-08 19:19  小Aer  阅读(19)  评论(0编辑  收藏  举报  来源