随机森林的简单解释
我试图理解随机森林在英语中是如何工作的,而不是在数学上。 任何人都可以给我一个关于这个算法的工作原理的简单解释吗?
据我所知,我们提供的功能和标签没有告诉算法哪个功能应该被归类为哪个标签? 正如我以前做基于概率的朴素贝叶斯一样,我们需要知道哪个特征应该是哪个标签。 我完全离我远吗?
如果我能用英语得到任何非常简单的解释,我会非常感激。
RandomForest
使用所谓的装袋方法。 这个想法是基于经典的偏差 - 方差权衡。 假设我们有一组(即N
)过度配置的估计量,它们具有较低的偏差但具有较高的交叉样本方差。 所以低偏差是好的,我们想保持它,高差异是不好的,我们想要减少它。 RandomForest
试图通过做一个所谓的自举/子采样来实现这一点(就像@Alexander提到的那样,这是对观察和特征的自举采样的组合)。 预测值是单个估计值的平均值,因此低偏置属性可以成功保留。 进一步用中心极限定理,这个样本均值的方差有一个等于variance of individual estimator divided by square root of N
。 所以现在,它既具有低偏差也具有低方差特性,这就是为什么RandomForest
经常优于独立估计器的原因。
我会试着用简单的词语给出另一种补充解释。
随机森林是一组随机决策树( n_estimators
中的数字n_estimators)。 你需要了解的是如何构建一个随机决策树。
粗略地说,要从您的训练样本的子集开始构建随机决策树。 在每个节点上,您将随机抽取一部分特征(数字由max_features
中的max_features决定)。 对于这些功能中的每一个,您都将测试不同的阈值,并根据给定的标准(通常是熵或gini,sklearn中的criterion
参数)来看他们如何分割样本。 然后,您将保留最佳分割数据的特征及其阈值,并将其记录在节点中。 当树的结构结束时(可能出于不同的原因:达到最大深度( max_depth
中的max_depth),达到最小样本数( min_samples_leaf
中的min_samples_leaf)等),您可以查看每个叶中的样本并保持频率的标签。 因此,它就像树根据有意义的特征为您提供了训练样本的划分。
由于每个节点都是根据随机抽取的特征构建的,因此您明白以这种方式构建的每棵树都会有所不同。 这有助于在偏差和方差之间做出妥协,正如@Jianxun Li所解释的那样。
然后在测试模式下,测试样本将穿过每棵树,为您提供每棵树的标签频率。 最具代表性的标签通常是最终的分类结果。
添加到上面的两个答案,因为你提到了一个简单的解释。 这里写一个我认为是解释随机森林最简单的方法。
点击Edwin Chen在这里用随机森林的俗语说一个简单的解释。 发布如下。
假设你非常优柔寡断,所以每当你想看电影时,你都会问你的朋友杨柳是否认为你会喜欢它。 为了回答,杨柳首先需要弄清楚你喜欢什么电影,所以你给她一些电影,并告诉她你是否喜欢每一个电影(即,你给她一个标记的训练集)。 然后,当你问她是否认为自己喜欢电影X时,她会用IMDB播放20个类似于问题的游戏,并提问诸如“X是一部浪漫电影?”,“约翰尼·德普是否出演过X?”。 , 等等。 她首先询问更多的信息问题(即她最大限度地获得每个问题的信息收益),并在最后给出答案/答案。
因此,Willow是您的电影偏好的决策树。
但是柳树只是人类,所以她并不总是很好地概括你的喜好(也就是说,她过度适应)。 为了获得更准确的建议,如果大多数人表示他们认为你会喜欢,你想问一群你的朋友并观看电影X. 也就是说,你不要只问Willow,而是要问伍迪,苹果和卡特曼,他们会投票决定你是否会喜欢电影(例如,你建立一个合奏分类器,在这种情况下又称森林)。
现在你不想让你的每个朋友都做同样的事情,并给你相同的答案,所以你首先给每个人稍微不同的数据。 毕竟,你自己并不完全确定你的偏好 - 你告诉Willow你爱泰坦尼克号,但也许你那天只是开心,因为这是你的生日,所以也许你的一些朋友不应该使用你喜欢的事实泰坦尼克号提出他们的建议。 或者,也许你告诉她你喜欢灰姑娘,但实际上你真的很喜欢它,所以你的一些朋友应该给灰姑娘更多的体重。 所以,不要给你的朋友提供你给杨柳的同样的数据,而是给他们稍微困扰的版本。 你不会改变你的爱/恨的决定,你只是说你喜欢/憎恨一些电影或多或少(正式地说,你给你的每个朋友一个引导版的原始训练数据)。 例如,当你告诉Willow你喜欢Black Swan和Harry Potter并且不喜欢Avatar时,你告诉Woody你非常喜欢Black Swan,你看过两次,你不喜欢Avatar,并且根本没有提到Harry Potter。
通过使用这个合奏,你希望当你的每个朋友给出一些特别的建议时(Willow认为你比吸血鬼电影更喜欢你,Woody认为你喜欢皮克斯电影,而Cartman认为你只是讨厌一切),错误会被取消在大多数。 因此,你的朋友现在形成了你的电影喜好的袋装(引导聚合)森林。
但是,您的数据仍然存在一个问题。 虽然你喜欢泰坦尼克号和Inception,但并不是因为你喜欢莱昂纳多迪卡普里奥的电影。 也许你因为其他原因喜欢两部电影。 因此,你不想让你的朋友都根据他们的建议来决定是否在电影中看电影。 所以,当每个朋友向IMDB提出一个问题时,只允许随机选择一个可能的问题子集(例如,当您构建决策树时,在每个节点上选择要分割的属性时使用一些随机性,例如通过随机选择一个属性或通过从随机子集中选择一个属性)。 这意味着你的朋友不能问Leonardo DiCaprio是否在他们想要的电影中。 因此,之前您在数据级别注入了随机性,通过轻微扰乱您的电影偏好,现在您在模型级别注入随机性,方法是让您的朋友在不同的时间提出不同的问题。
所以你的朋友现在组成一个随机森林。
链接地址: http://www.djcxy.com/p/40161.html