如何在Python中从零开始实现随机森林

本文详细介绍了如何在Python中从零开始实现随机森林算法,包括随机森林与套袋决策树的区别,以及如何构建多样性的决策树。通过声纳数据集的案例,展示了随机森林在分类问题上的应用,包括数据预处理、模型构建与评估,揭示了增加树的数量可以提升预测性能。
摘要由CSDN通过智能技术生成

决策树可能会受到高度变异的影响,使得结果对所使用的特定测试数据而言变得脆弱。

根据您的测试数据样本构建多个模型(称为套袋)可以减少这种差异,但是树本身是高度相关的。

随机森林是套袋(方法)的延伸,除了基于多个测试数据样本构建树木之外,它还限制了可用于构建树木的特征,使得树木间具有差异。这反过来可以提升算法的表现。

在本教程中,您将了解如何在Python中从头开始实现随机森林算法。

完成本教程后,您将知道:

  • 套袋决策树和随机森林算法的区别。
  • 如何构造更多方差的袋装决策树。
  • 如何将随机森林算法应用于预测建模问题。

让我们开始吧。

2017年1月更新:将cross_validation_split()中fold_size的计算更改为始终为整数。修复了Python 3的问题。
2017年2月更新:修复了build_tree中的错误。

2017年8月更新:修正了基尼计算机中的一个错误,增加了群组大小(基于迈克尔!)。

如何在Python中从头开始实现随机森林

随机森林算法

决策树涉及从数据集中(利用)贪婪选择选取最佳分割点过程中的每一步。

如果不精简(该算法),此算法容易使决策树出现高方差。这种高方差(结果)可以通过创建包含测试数据集中(多个)不同的实例(问题的不同观点)的多重树,接着将实例所有的可能结果结合,这种方法简称为bootstrap聚合或套袋。

套袋的局限性在于,它使用相同的贪婪算法来创建每棵树,这意味着在每棵树中可能会选择相同或非常相似的分割点,使得不同的树非常相似(树将被关联)。这反过来又使他们的预测相似,从而缩减了最初寻求的差异。

我们可以通过贪婪算法在创建树时在每个分割点评估的特征(行)来限制决策树不同。这被称为随机森林算法。

像装袋一样,测试数据集的多个样本在被采集后,接着在每个样本上训练不同的树。不同之处在于在每一点上,拆分是在数据中进行并添加到树中的,且只考虑固定的属性子集。

对于分类问题,我们将在本教程中讨论的问题的类型——分割中输入特点数的平方根值对为分割操作考虑的属性个数的限制。

num_features_for_split = sqrt(total_input_features)

这一小变化的结果是树之间变得更加不同(不关联),作为结果会有更加多样化的预测,这样的结果往往好于一个单独的树或者单独套袋得到的结果。

声纳数据集

我们将在本教程中使用的数据集是Sonar数据集。

这是一个描述声纳声音从不同曲面反弹后返回(数据)的数据集。输入的60个变量是声呐从不同角度返回的力度值。这是一个二元分类问题,需要一个模型来区分金属圆柱中的岩石。这里有208个观察对象。

这是一个很好理解的数据集。所有变量都是连续的且范围一般是0到1。输出变量是“Mine”字符串中的“M”和“rock”中的“R”,需要转换为整数1和0。

通过预测在数据集(“M”或“mines”)中观测数最多的类,零规则算法可以达到53%的准确度。

您可以在UCI Machine Learning repository了解关于此数据集的更多信息。

下载免费的数据集,并将其放置在工作目录中,文件名为sonar.all-data.csv

教程

本教程分为2个步骤。

  1. 计算分割。
  2. 声纳数据集案例研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值