决策树之随机森林

简介: [在 CART 分类回归树](https://www.atatech.org/articles/158334)的基础之上,我们可以很容易的掌握随机森林算法,它们之间的区别在于,CART 决策树较容易过拟合,而随机森林可以在一定程度上解决该问题。 随机森林的主要思想是:使用随机性产生出一系列简单的决策树,并组合它们的预测结果为最终的结果,可谓三个臭皮匠赛过一个诸葛亮,下面我们就来具体了解一下。

在 CART 分类回归树的基础之上,我们可以很容易的掌握随机森林算法,它们之间的区别在于,CART 决策树较容易过拟合,而随机森林可以在一定程度上解决该问题。

随机森林的主要思想是:使用随机性产生出一系列简单的决策树,并组合它们的预测结果为最终的结果,可谓三个臭皮匠赛过一个诸葛亮,下面我们就来具体了解一下。

产生随机森林的具体步骤

产生随机森林的步骤大致为三步

  1. 准备样本
  2. 产生决策树
  3. 循环第 1 、2 步,直到产生足够的决策树,一般为上百个

在第 1 步,它是一个可放回抽样,即所产生的样本是允许重复的,这种抽样又被称为 Bootstrap,例如我们有以下 dummy 数据

胸口疼痛 血液循环正常 血管堵塞 体重 患心脏病
No No No 125 No
Yes Yes Yes 180 Yes
Yes Yes No 210 No
Yes No Yes 167 Yes

在做完 Bootstrap 之后,可能的样本数据如下

胸口疼痛 血液循环正常 血管堵塞 体重 患心脏病
Yes Yes Yes 180 Yes
No No No 125 No
Yes No Yes 167 Yes
Yes No Yes 167 Yes

可见,样本数据中,第 3 条和第 4 条样本是一样的,都对应的是原始数据中的第 4 条。

接下来,就是要使用上面的样本数据来产生决策树了,产生决策树的方法和 CART 基本一致,唯一的不同地方在于,节点的构建不是来自于全部的候选特征,而是先从中随机的选择 n 个特征,在这 n 个特征中找出一个作为最佳节点。

举个例子,假设 n = 2,且我们随机选择了「血液循环正常」和「血管堵塞」这两个特征来产生根节点,如下:

血液循环正常 血管堵塞 患心脏病
Yes Yes Yes
No No No
No Yes Yes
No Yes Yes

我们将在上述两个特征中选择一个合适的特征作为根节点,假设在计算完 Gini 不纯度之后,「血液循环正常」这个特征胜出,那么我们的根节点便是「血液循环正常」,如下图所示

接下来我们还需要构建根节点下面的节点,下一个节点将会在剩下的「胸口疼痛」、「血管堵塞」和「体重」三个特征中产生,但我们依然不会计算所有这 3 个特征的 Gini 不纯度,而是从中随机选择 2 个特征,取这 2 个特征中的 Gini 不纯度较低者作为节点。

例如我们随机选到了「胸口疼痛」和「体重」这两列,如下:

胸口疼痛 体重 患心脏病
Yes 180 Yes
No 125 No
Yes 167 Yes
Yes 167 Yes

假设此时「体重」的 Gini 不纯度更低,那么第 2 个节点便是「体重」,如下图:

继续下去,我们便产生了一棵决策树。

随机森林是多棵决策树,在产生完一棵决策树后,接着会循环执行上述过程:Bootstrap 出训练样本,训练决策树,直到树的数量达到设置值——通常为几百棵树。

随机森林的预测

现在我们产生了几百棵树的随机森林,当我们要预测一条数据时,该怎么做呢?我们会聚合这些树的结果,选择预测结果最多的那个分类作为最终的预测结果。

例如我们现在有一条数据:

胸口疼痛 血液循环正常 血管堵塞 体重 患心脏病
Yes No No 168

该条数据被所有树预测的结果如下:

第几颗树 预测结果
1 Yes
2 Yes
... ...
100 No

上述结果聚合后为:

预测结果 次数
Yes 82
No 18

取最多的那项为最终的预测结果,即 Yes——该病人被诊断为患有心脏病。

以上,随机森林的两个过程:Bootstrap 和 Aggregate 又被称为 Bagging

总结

本文我们一起学习了随机森林的算法,和 CART 决策树比起来,它主要被用来解决过拟合问题,其主要的思想为 Bagging,即随机性有助于增强模型的泛化(Variance) 能力。

参考:

相关文章:

相关文章
|
3月前
|
机器学习/深度学习 算法
决策树及随机森林学习总结
决策树及随机森林学习总结
48 4
|
5月前
|
机器学习/深度学习 算法 前端开发
决策树与随机森林算法在分类问题中的应用
本文探讨了决策树和随机森林两种监督学习算法,它们在分类任务中表现出强大的解释性和预测能力。决策树通过特征测试进行分类,构建涉及特征选择、树生成和剪枝。随机森林是集成学习方法,通过构建多棵决策树并汇总预测结果,防止过拟合。文中提供了Python代码示例,展示如何使用sklearn构建和应用这些模型,并讨论了参数调优和模型评估方法,如交叉验证和混淆矩阵。最后,强调了在实际问题中灵活选择和调整模型参数的重要性。
146 4
|
机器学习/深度学习 存储
随机森林是什么?
随机森林(Random Forest)是将多个决策树(Decision Tree)组合在一起形成一个强大的分类器或回归器,是一种集成学习(Ensemble Learning)方法。 随机森林的主要思想是通过随机选择样本和特征来构建多个决策树,并通过集成这些决策树的预测结果来达到更准确的分类或回归结果。具体步骤如下:
|
6月前
|
机器学习/深度学习 数据采集 并行计算
决策树
分类决策树
42 0
|
6月前
|
机器学习/深度学习 数据采集 算法
实现机器学习算法(如:决策树、随机森林等)。
实现机器学习算法(如:决策树、随机森林等)。
49 0
|
6月前
|
机器学习/深度学习 算法 数据库
决策树与随机森林算法
决策树和随机森林都是用于分类和回归的的算法。决策树的原理是通过一系列的问题进行if、else的推导。随机森林是集合学习算法,即把很多的机器学习算法综合在一起组成一个更大的模型。
|
机器学习/深度学习 人工智能 算法
连载|决策树(下)
连载|决策树(下)
|
机器学习/深度学习
随机森林(1)
随机森林(1)

相关实验场景

更多