Skip to content

Latest commit

 

History

History
141 lines (71 loc) · 8.21 KB

random-forest-python.md

File metadata and controls

141 lines (71 loc) · 8.21 KB

解释随机森林®(带 Python 实现)

原文:www.kdnuggets.com/2019/03/random-forest-python.html

c 评论

学习机器

随机森林(+Python 实现)

1. 介绍

本文由**学习机器**撰写,这是一个新的开源项目,旨在创建一个互动路线图,包含 A 到 Z 的概念、方法、算法及其 Python 或 R 代码实现的解释,适合各种背景的人群。

查看我们的点击即用**机器学习思维导图**,包含算法解释和 Python 实现。

机器学习

2. 随机森林

随机森林是一种灵活、易于使用的机器学习算法,即使在没有超参数调整的情况下,也能大多数时候产生很好的结果。它可以用于分类和回归任务。在这篇文章中,你将学习随机森林算法如何处理分类和回归问题。

要理解随机森林算法,你首先需要熟悉决策树。请阅读有关决策树的文章 这里**。

决策树常见的问题之一,特别是那些有许多列的决策树,是它们容易过拟合。有时看起来树只是记住了数据。这里是过拟合的决策树的典型例子,包括分类连续数据:

I. 分类:

如果客户是男性,年龄在 15 到 25 岁之间,来自美国,喜欢冰淇淋,有一个德国朋友,讨厌鸟类,并且在 2012 年 8 月 25 日吃过煎饼,那么 - 他很可能会下载《精灵宝可梦 Go》。

II. 连续型:

随机森林

随机森林避免了这个问题:它是由多个决策树组成的集合,而不仅仅是一个。而且,随机森林中的决策树数量越多,泛化效果越好。

更准确地说,随机森林的工作原理如下:

  1. 从总共有 m 个特征(列)的数据集中随机选择 k 个特征(列)(其中 k<<m)。然后,从这些 k 个特征中构建一个决策树。

  2. 重复 n 次,以便你从不同的随机 k 特征组合(或称为bootstrap sample)中构建n个决策树。

  3. 采用每一个构建好的 n 个决策树,并传递一个随机变量来预测结果。存储预测的结果(目标),从而你将得到来自n个决策树的总共n个结果。

  4. 计算每个预测目标的投票,并取众数(最频繁的目标变量)。换句话说,将高投票的预测目标视为随机森林算法的最终预测。

在回归问题中,对于一个新的记录,森林中的每棵树都预测 Y(输出)的一个值。最终值可以通过取森林中所有树预测值的平均值来计算。或者,在分类问题中,森林中的每棵树都预测新记录所属的类别。最后,新记录被分配到获得多数票的类别。

示例:

詹姆斯想决定在巴黎待一周期间应该去哪些地方。他去找一个在那儿住了一年的朋友,询问他过去去过哪些地方以及是否喜欢。基于他的经验,他会给詹姆斯一些建议。

这是一种典型的决策树算法方法。詹姆斯的朋友根据他一年的个人经验决定了詹姆斯应该去哪些地方。

后来,詹姆斯开始询问越来越多的朋友,以获取建议,他们推荐了自己去过的地方。然后詹姆斯选择了最常被推荐的地方,这就是典型的随机森林算法方法。

因此,随机森林是一种通过随机选择总共 m 个特征中的 k 个特征来构建 n 棵决策树的算法,并对预测结果取众数(如果是回归问题则取平均值)。

3. 优缺点

优点:

  1. 可用于分类和回归问题: 随机森林在处理分类和数值特征时表现良好。

  2. 减少过拟合: 通过对多个树进行平均,可以显著降低过拟合的风险。

  3. 仅当超过一半的基本分类器出错时才会做出错误预测: 随机森林非常稳定——即使数据集中引入了新的数据点,整体算法也不会受到太大影响,因为新数据可能会影响一棵树,但很难影响所有的树。

缺点:

  1. 观察到随机森林在某些噪声分类/回归任务的数据集上会过拟合。

  2. 比决策树算法更复杂且计算开销更大。

  3. 由于其复杂性,与其他可比算法相比,它们需要更多的训练时间。

4. 重要超参数

随机森林中的超参数要么用于提高模型的预测能力,要么使模型运行更快。下面描述了 sklearn 内置随机森林函数的超参数:

  1. 提高预测能力
  • n_estimators: 算法在进行最大投票或预测平均值之前构建的树的数量。一般来说,树的数量越多,性能越高,预测越稳定,但计算速度也会变慢。

  • max_features: 随机森林允许在单个树中尝试的最大特征数量。Sklearn 提供了几个选项,详细描述见其 文档

  • min_sample_leaf: 确定拆分内部节点所需的最小叶子数。

  1. 提高模型速度
  • n_jobs: 告诉引擎可以使用多少处理器。如果其值为 1,则只能使用一个处理器。值为“-1”表示没有限制。

  • random_state: 使模型的输出可重复。当模型具有确定的 random_state 值并且使用相同的超参数和训练数据时,模型将始终产生相同的结果。

  • oob_score: (也称为 oob 采样) - 一种随机森林交叉验证方法。在这种采样中,大约三分之一的数据不用于训练模型,而是用于评估其性能。这些样本称为袋外样本。它与留一法交叉验证方法非常相似,但几乎没有额外的计算负担。

5. Python 实现

查看/下载位于 git 仓库中的随机森林模板 这里

资源:

相关:

RANDOM FORESTS 和 RANDOMFORESTS 是 Minitab, LLC 注册的商标。


我们的前三个课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你所在组织的 IT


更多相关话题