美文网首页人工智能
了解随机森林

了解随机森林

作者: 李穆 | 来源:发表于2019-08-13 23:25 被阅读0次

    机器学习的很大一部分是分类 - 我们想知道观察属于哪个类(也称为组)。精确分类观察的能力对于各种商业应用非常有价值,例如预测特定用户是购买产品还是预测特定贷款是否违约。

    数据科学提供了大量的分类算法,例如逻辑回归,支持向量机,朴素贝叶斯分类器和决策树。但是在分类器层次结构的顶部附近是随机森林分类器(还有随机森林回归器,但这是另一天的主题)。

    在这篇文章中,我们将研究基本决策树如何工作,如何将个体决策树组合成一个随机森林,并最终发现为什么随机森林如此擅长他们的工作。


    决策树

    让我们快速浏览决策树,因为它们是随机森林模型的构建块。幸运的是,它们非常直观。我愿意打赌大多数人在他们生活中的某个时刻使用了一个决策树,无论是否知情。

    08131.jpeg

    <figcaption class="as eo le lf ii dy x y lg lh an dk" data-selectable-paragraph="" style="box-sizing: inherit; margin-left: auto; margin-right: auto; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; color: rgba(0, 0, 0, 0.54); font-weight: 300; max-width: 728px; font-size: 16px; text-align: center; line-height: 1.4; margin-top: 10px;">简单决策树示例</figcaption>

    通过一个例子来理解决策树的工作方式可能要容易得多。

    想象一下,我们的数据集由左边图中顶部的数字组成。我们有两个1和5个0(我们的类是1和0),并希望使用它们的功能来分离类。特征是颜色(红色与蓝色)以及观察是否加下划线。那我们怎么做呢?

    颜色看起来是一个非常明显的特征,因为除了0之外的所有颜色都是蓝色。所以我们可以使用“它是红色的吗?”来分割我们的第一个节点。您可以将树中的节点视为路径分成两部分的点 - 满足条件的观察值沿着“是”分支向下,而不在“无”分支上的观察值。

    No分支(蓝调)现在都是0,所以我们在那里完成,但我们的Yes分支仍然可以进一步拆分。现在我们可以使用第二个功能并询问“是否加下划线?”进行第二次拆分。

    加下划线的两个1落在Yes支柱上,没有加下划线的0落在右支柱上,我们都完成了。我们的决策树能够使用这两个功能完美地分割数据。胜利!

    显然,在现实生活中,我们的数据不会很干净,但决策树采用的逻辑仍然是相同的。在每个节点,它会询问 -

    什么特征将允许我以一种方式分割手头的观察结果,使得结果组尽可能彼此不同(并且每个结果子组的成员尽可能彼此相似)?


    随机森林分类器

    随机森林,如其名称所暗示的,由大量作为整体运作的个体决策树组成。随机森林中的每棵树都会吐出一个类预测,而得票最多的类成为我们模型的预测(见下图)。

    08132.jpeg

    <figcaption class="as eo le lf ii dy x y lg lh an dk" data-selectable-paragraph="" style="box-sizing: inherit; margin-left: auto; margin-right: auto; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; color: rgba(0, 0, 0, 0.54); font-weight: 300; max-width: 728px; font-size: 16px; text-align: center; line-height: 1.4; margin-top: 10px;">随机森林模型的可视化预测</figcaption>

    随机森林背后的基本概念是一个简单而强大的概念 - 人群的智慧。在数据科学中,随机森林模型运作良好的原因是:

    <mark class="qi qj fi" style="box-sizing: inherit; cursor: pointer; background-color: rgb(233, 242, 253); color: currentcolor;">作为委员会运作的大量相对不相关的模型(树)将胜过任何单个组成模型。</mark>

    模型之间的低相关性是关键。就像低相关性投资(如股票和债券)如何组合形成一个大于其各部分之和的投资组合一样,不相关的模型可以产生比任何单个预测更准确的集合预测。造成这种奇妙效果的原因在于,树木彼此之间的相互保护不会受到各自的错误影响(只要它们不会一直在同一方向上发生错误)。虽然有些树可能是错的,但许多其他树木都是正确的,所以作为一组,树木能够以正确的方向移动。因此,随机森林表现良好的先决条件是:

    1. 在我们的功能中需要一些实际信号,以便使用这些功能构建的模型比随机猜测更好。
    2. 各树的预测(以及错误)需要彼此之间具有低相关性。

    为什么不相关结果如此之大的一个例子

    拥有许多不相关模型的奇妙效果是一个非常重要的概念,我想向您展示一个帮助它真正陷入困境的例子。想象一下,我们正在玩以下游戏:

    • 我使用均匀分布的随机数生成器来生成数字。
    • 如果我产生的数字大于或等于40,你就赢了(所以你有60%的胜算几率)我付你一些钱。如果它低于40,我赢了,你支付给我相同的金额。
    • 现在我为您提供以下选择。我们可以:
    1. 游戏1 - 玩100次,每次下注1美元。
    2. 游戏2 - 玩10次,每次下注10美元。
    3. 第3场比赛 - 打一场,投注100美元。

    你会选哪个?每场比赛的预期价值是相同的:

    预期值游戏1 =(0.60 * 1 + 0.40 * -1)* 100 = 20

    预期值游戏2 =(0.60 * 10 + 0.40 * -10)* 10 = 20

    预期值游戏3 = 0.60 * 100 + 0.40 * -100 = 20

    08133.png

    <figcaption class="as eo le lf ii dy x y lg lh an dk" data-selectable-paragraph="" style="box-sizing: inherit; margin-left: auto; margin-right: auto; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; color: rgba(0, 0, 0, 0.54); font-weight: 300; max-width: 728px; font-size: 16px; text-align: center; line-height: 1.4; margin-top: 10px;">每场比赛10,000次模拟的结果分布</figcaption>

    分发怎么样?让我们用蒙特卡罗模拟可视化结果(我们将对每种游戏类型运行10,000次模拟; 例如,我们将模拟游戏1的100次游戏的10,000次)。看看左边的图表 - 现在你会选哪个游戏?尽管预期值相同,但结果分布从正和窄(蓝色)到二进制(粉红色)大不相同。

    游戏1(我们玩100次)提供了赚钱的最佳机会 - 在我运行的10,000次模拟中,你在97%的人中赚钱!对于第2场比赛(我们进行了10次比赛),你在63%的模拟中赚钱,大幅下降(并且你的赔钱概率急剧增加)。而游戏3我们只玩一次,你可以按照预期在60%的模拟中赚钱。

    08134.jpeg

    <figcaption class="as eo le lf ii dy x y lg lh an dk" data-selectable-paragraph="" style="box-sizing: inherit; margin-left: auto; margin-right: auto; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; color: rgba(0, 0, 0, 0.54); font-weight: 300; max-width: 728px; font-size: 16px; text-align: center; line-height: 1.4; margin-top: 10px;">为每场比赛赚钱的可能性</figcaption>

    因此即使游戏具有相同的预期值,它们的结果分布也完全不同。我们将100美元的赌注分成不同的赌注越多,我们就越有信心赚钱。如前所述,这是有效的,因为每个游戏都独立于其他游戏。

    随机森林是相同的 - 每棵树就像我们之前的游戏中的一个游戏。我们刚刚看到我们赚钱的机会增加了我们玩的次数。同样,对于随机森林模型,我们进行正确预测的机会随着模型中不相关树的数量而增加。

    如果您想自己运行代码来模拟游戏,可以在我的GitHub上找到它。


    确保模型彼此多样化

    那么随机森林如何确保每个树的行为与模型中任何其他树的行为不太相关?它使用以下两种方法:

    Bagging(Bootstrap Aggregation) - 决策树对它们所训练的数据非常敏感 - 对训练集的微小变化可能导致显着不同的树结构。随机森林通过允许每个树从替换的数据集中随机抽样来利用这一点,从而产生不同的树。这个过程称为装袋。

    请注意,对于装袋,我们不会将训练数据子集化为较小的块并在不同的块上训练每个树。相反,如果我们有一个大小为N的样本,我们仍然为每棵树提供一个大小为N的训练集(除非另有说明)。但是,我们不是使用原始训练数据,而是随机抽取大小为N的样本。例如,如果我们的训练数据是[1,2,3,4,5,6],那么我们可以给我们的一棵树下面的列表[1,2,2,3,6,6]。请注意,两个列表的长度均为6,并且“2”和“6”都在我们为树提供的随机选择的训练数据中重复(因为我们使用替换进行采样)。

    08135.jpeg

    <figcaption class="as eo le lf ii dy x y lg lh an dk" data-selectable-paragraph="" style="box-sizing: inherit; margin-left: auto; margin-right: auto; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; color: rgba(0, 0, 0, 0.54); font-weight: 300; max-width: 728px; font-size: 16px; text-align: center; line-height: 1.4; margin-top: 10px;">随机森林模型中的节点分裂基于每棵树的随机特征子集。</figcaption>

    特征随机性 -在正常决策树中,当分割节点时,我们考虑每个可能的特征并选择在左节点与右节点中的观察之间产生最大间隔的特征。相比之下,随机森林中的每棵树只能从特征的随机子集中进行选择。这迫使模型中树木之间的更多变化,并最终导致树木之间的相关性降低,更多样化。

    让我们通过一个视觉示例 - 在上图中,传统的决策树(蓝色)可以在决定如何拆分节点时从所有四个特征中进行选择。它决定使用Feature 1(黑色和下划线),因为它将数据拆分为尽可能分开的组。

    现在让我们来看看我们的随机森林。在这个例子中,我们将只检查森林中的两棵树。当我们检查随机森林树1时,我们发现它只能考虑特征2和3(随机选择)作为其节点分裂决策。我们从传统的决策树(蓝色)中知道,特征1是分割的最佳特征,但是树1无法看到特征1,因此它被强制使用特征2(黑色和下划线)。另一方面,树2只能看到特征1和3,因此它可以选择特征1。

    因此,在我们的随机森林中,我们最终得到的树木不仅受到不同数据集的训练(由于装袋),而且还使用不同的功能来做出决策。

    而且,我亲爱的读者,创建了不相关的树,缓冲并保护彼此免受错误的影响。

    结论

    随机森林是我个人的最爱。来自金融和投资的世界,圣杯始终是建立一堆不相关的模型,每个模型都有一个积极的预期回报,然后将它们放在一个组合中以获得巨大的alpha(alpha =市场跳动回报)。说起来容易做起来容易多了!

    随机森林是数据科学的等价物。我们最后一次回顾一下。什么是随机森林分类器?

    随机森林是一种由许多决策树组成的分类算法。它在构建每棵树时使用套袋和特征随机性来尝试创建一个不相关的树木森林,其委员会的预测比任何单个树的预测更准确。

    为了让我们的随机森林做出准确的课堂预测,我们需要什么?

    1. 我们需要具有至少一些预测能力的功能。毕竟,如果我们把垃圾放进去,我们就会把垃圾扔掉。
    2. 森林中的树木,更重要的是它们的预测需要不相关(或者至少彼此之间的相关性较低)。虽然算法本身通过特征随机性试图为我们设计这些低相关性,但我们选择的特征和我们选择的超参数也将影响最终的相关性。

    谢谢阅读。我希望你从阅读中学到的东西和写作时一样多。干杯!


    我更多关于数据科学和其他机器学习算法:

    了解PCA(主成分分析)

    了解神经网络

    Logistic回归

    A / B测试

    二项分布

    相关文章

      网友评论

        本文标题:了解随机森林

        本文链接:https://www.haomeiwen.com/subject/oqoijctx.html