随机森林的简单解释

时间:2015-07-10 15:32:17

标签: algorithm classification random-forest

我试图了解随机森林如何用普通英语而不是数学来运作。谁能给我一个关于这个算法如何工作的非常简单的解释?

据我了解,我们提供功能和标签而不告诉算法哪个功能应归类为哪个标签?因为我曾经做过基于概率的朴素贝叶斯,我们需要告诉哪个特征应该是哪个标签。我完全离开了吗?

如果我能得到任何非常简单的解释,我将非常感激。

3 个答案:

答案 0 :(得分:10)

我将尝试用简单的词语给出另一个补充说明。

随机森林是随机决策树的集合(sklearn中的数字n_estimators)。 您需要了解的是如何构建一个随机决策树。

粗略地说,要构建随机决策树,您需要从训练样本的子集开始。在每个节点,您将随机绘制一个特征子集(由sklearn中的max_features确定的数字)。对于这些功能中的每一个,您将测试不同的阈值,并根据给定的标准(通常是sklearn中的entropy或gini,criterion参数)查看它们如何拆分样本。然后,您将保留最佳分割数据的功能及其阈值,并将其记录在节点中。 当树的构造结束时(可能出于不同的原因:达到最大深度(sklearn中为max_depth),达到最小样本数(在sklearn中为min_samples_leaf)等等。你看看每片叶子中的样品并保持标签的频率。 因此,就像树根据有意义的特征为您提供训练样本的分区。

由于每个节点都是根据随机选择的特性构建的,因此您了解以这种方式构建的每棵树都是不同的。正如@Jianxun Li所解释的那样,这有助于偏差和方差之间的良好折衷。

然后在测试模式下,测试样本将遍历每棵树,为每棵树提供标签频率。代表性最高的标签通常是最终的分类结果。

答案 1 :(得分:9)

再加上以上两个答案,既然你提到了一个简单的解释。这是一篇我认为是解释随机森林最简单方法的文章。

致信Edwin Chen,以随机森林的外行术语简单解释here。发布如下。

  

假设你非常优柔寡断,所以每当你想观看电影时,你会问你的朋友Willow她是否认为你会喜欢它。为了回答,Willow首先需要弄清楚你喜欢什么电影,所以你给她一堆电影并告诉她你是否喜欢每一部电影(即你给她一个标记的训练集)。然后,当你问她是否认为你不喜欢X电影时,她会和IMDB玩一个类似20个问题的游戏,问“像X是一部浪漫电影吗?”,“Johnny Depp是否会在X中出演?” , 等等。她首先要求提供更多信息性问题(即,她最大限度地提高每个问题的信息收益),最后给你一个是/否答案。

     

因此,Willow是您的电影偏好的决策树。

     

但是Willow只是人类,所以她并不总能很好地概括你的偏好(即,她过度拟合)。为了获得更准确的推荐,如果他们中的大多数人说他们认为你会喜欢它,你想问一群你的朋友并观看电影X.也就是说,你不想只询问Willow,而是想问Woody,Apple和Cartman,他们会投票决定你是否喜欢看电影(也就是说,你建立了一个合奏分类器,在这种情况下也就是森林)。

     

现在你不希望你的每个朋友做同样的事情并给你相同的答案,所以你先给他们每个人略有不同的数据。毕竟,你自己并不完全确定自己的喜好 - 你告诉Willow你喜欢泰坦尼克号,但也许那天你很开心因为这是你的生日,所以也许你的一些朋友不应该使用你喜欢的事实泰坦尼克号提出他们的建议。或许你告诉她你爱过灰姑娘,但实际上你真的非常喜欢它,所以你的一些朋友应该给灰姑娘更多的重量。所以,不要给你的朋友你给Willow的相同数据,你给他们略微不安的版本。你不会改变你的爱/恨决定,你只是说你喜欢/讨厌一些电影或多或少(正式地,你给你的每个朋友一个原始训练数据的自助版本)。例如,当你告诉Willow你喜欢黑天鹅和哈利波特并且不喜欢阿凡达时,你告诉伍迪你非常喜欢黑天鹅,你看过两次,你不喜欢阿凡达,并且根本不提哈利波特。

     

通过使用这个合奏,你希望你的每个朋友给出一些特殊的推荐(Willow认为你比吸血鬼电影更喜欢你,Woody认为你喜欢皮克斯电影,而Cartman认为你只是讨厌一切),错误多数人取消了。因此,您的朋友现在形成了电影首选项的袋装(引导聚合)林。

     

但是,您的数据仍然存在一个问题。虽然你喜欢Titanic和Inception,但并不是因为你喜欢莱昂纳多迪卡普里奥主演的电影。也许你出于其他原因喜欢这两部电影。因此,您不希望所有朋友都根据Leo是否在电影中提出建议。因此,当每个朋友向IMDB提出问题时,只允许可能问题的随机子集(即,当您构建决策树时,在每个节点上使用一些随机性来选择要拆分的属性,比如通过随机选择属性或从随机子集中选择属性)。这意味着你的朋友不能随时询问莱昂纳多迪卡普里奥是否在电影中。因此,之前您在数据级别注入随机性,通过略微扰乱您的电影首选项,现在您在模型级别注入随机性,让您的朋友在不同时间提出不同的问题。

     

所以你的朋友现在形成一个随机的森林。

答案 2 :(得分:7)

RandomForest使用所谓的装袋方法。这个想法是基于经典的偏差 - 方差权衡。假设我们有一组(比如N)具有低偏差但高交叉样本方差的过拟合估计。所以低偏差是好的,我们希望保持它,高差异是坏的,我们想减少它。 RandomForest尝试通过执行所谓的bootstraps / sub-sampling来实现这一点(正如@Alexander提到的,这是对观察和特征两者的自举采样的组合)。预测是单个估计器的平均值,因此成功保留了低偏置属性。此外,通过中心极限定理,此样本平均值的方差具有等于variance of individual estimator divided by square root of N的方差。现在,它具有低偏差和低差异属性,这就是RandomForest通常优于独立估算器的原因。