查看原文
其他

五分钟带你了解随机森林

William Koehrsen 大邓和他的Python 2019-04-26

最近在medium中看到William Koehrsen,发现其分享了数十篇python相关的高质量的数据分析文章。我想尽量抽时间将他的文章翻译过来,分享给大家。


作者:William Koehrsen

标题“《Random Forest Simple Explanation-Understanding the random forest with an intuitive example》

翻译:大邓

当我们学习一个新的 技术概念 时候,我认为最好的学习方式是从更高的层次去纵览全局,之后再扎进 该技术 的具体细节中去。本文将采用一个很 直观 的例子来帮助大家理解 随机森林。在本文之后,会更新一篇 端到端(end-to-end) 预测类文章。理论加实战,方便大家快速理解并掌握随机森林算法的使用。(记得戳下哦!)

决策树:随机森林的基石

为了理解随机森林,我们先理解随机森林的基石 - 决策树 。在日常生活中我们经常会用到决策树,比如 给你一个人的某些信息,让你猜这个人的性别。我们可能会问提问者这个人的喜好是否喜欢逛街。如果喜欢逛街,我们可能就预测该人为女孩,否则该人可能是男孩。

这只是很简单的预测,我们只需要知道这一个问题的答案就预测出这个人的性别。但在现实生活中,我们做预测或者决策仅仅了解一个问题及其答案,信息量不足以让我们做出决策。由于之后会用西雅图气温数据做随机森林预测,这里我们就以气温预测来继续讲解 决策树 。如图,让我们预测明天的温度,我们可能会根据现在所处季节、历史平均温度、当前最大温度等信息,预测出明天的温度。

上图只是在每次提问时候,都得到我们想要的信息,我们根据这些信息做出预测。实际上显示生活中的决策过程,比上图只有一条线路的提问要复杂一些(需要了解更多的不同种类的信息)。回答也会有多种答案,决策过程也会分叉,样子更像决策树。如下图

决策树都是从最初的左侧节点开始,经过各种问题(范围)一步步分叉,最终得到预测结果(叶子)。至于决策树中的问题或者阈值范围是如何学习的,这里我们就不展开,我们可以将其看做是黑盒子,只需要大体理解决策树的概念以及用途即可。

群体智慧

我们人在决策的时候,如果对这个决策拿不准主意,往往会找人帮忙参谋参谋。咱们也经常听到

  • 人多力量大

  • 一人计短,众人计长

  • 三个臭皮匠赛过诸葛亮

这些都是群体智慧的体现。因为每个人都有其经验知识的局限性,我们要尽可能将问题考虑全面,那么最好的办法是引入与自己知识背景存在差异性的人,这样考虑的更全面,决策才能更科学。但是在电脑中如何模拟出存在差异性的众人,并这些人帮助做决策?

随机森林

在统计学中,体现差异性的指标是 方差。在机器中,我们可以使用随机森林,来生成有不同知识背景的大脑。随机森林的思路是将众多的决策树模型合并为一个单一的模型。可能每一个决策树模型表现并不出色,但是三个臭皮匠赛过诸葛亮,汇总出的预测结果可能更接近真实值。

为什么叫随机森林?

因为人们是根据不同的数据来做的决策,我们可以认为在森林中的每个决策树使用的数据是整个数据集中随机抽样所得的数据。这样的操作增加了整个模型的多样性(diversity),会增强模型的鲁棒性robust。

总结

机器学习乍听起来很难,但实际上是由非常多巧妙而简单的想法积累而成的。例如,在随机森林中有两个日常生活中常见的思想贯穿其中:

  • 人类做决策的方式,构建“问题-答案”的流程图

  • 群体智慧


精选文章

聊天机器人:十行代码让你秒变撩妹达人

100G 文本分析语料资源(免费下载)  

15个最好的数据科学领域Python库    

使用Pandas更好的做数据科学

抓取8w技能交换公告信息

【视频讲解】Scrapy递归抓取简书用户信息

美团商家信息采集神器 

大邓强力推荐-jupyter notebook使用小技巧       

10分钟理解深度学习中的~卷积~  

深度学习之 图解LSTM   

PyTorch实战: 使用卷积神经网络对照片进行分类  

Pytorch实战:使用RNN网络对姓名进行分类   

数据清洗 常用正则表达式大全

PySimpleGUI: 开发自己第一个软件

深度特征合成:自动生成机器学习中的特征

Python 3.7中dataclass的终极指南(一) 

Python 3.7中dataclass的终极指南(二) 

[计算消费者的偏好]推荐系统与协同过滤、奇异值分解

机器学习: 识别图片中的数字

应用PCA降维加速模型训练

如何从文本中提取特征信息?

使用sklearn做自然语言处理-1 

使用sklearn做自然语言处理-2

机器学习|八大步骤解决90%的NLP问题    

Python圈中的符号计算库-Sympy

Python中处理日期时间库的使用方法 

用chardect库解决网页乱码问题 



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存