怎样通俗易懂理解Bagging和随机森林

大家好,我是翔宇!

今天我想和大家聊一聊什么是机器学习中的Bagging思想和随机森林。由于代码实现比较复杂,因此,我没有准备现在进行代码展示,可能后续会有,当然我这里说的代码实现不是指掉包使用,掉包使用很简单,这个分享留在后面一点发,今天我只和大家分享Bagging的思想与随机森林的设计思想。

​ 首先我们先来讲一点预备知识,机器学习有很多进行分类和回归的预测方法(模型),而例如分类的KNN、逻辑回归与进行回归的线性回归以及可以做回归也可以做分类的CART等都是一个比较单一的模型。而为了使得模型的泛化性能比较强(泛化性大致理解为模型对现实数据的预测效果),因此,集成学习出现了。集成学习的出现实际上很好理解,例如有这样一个例子。

​ 小时候某一天,翔宇正在地里挖土,突然挖到了一个“宝贝”,这玩意长得像一个碗,但又像一个茶杯,翔宇傻傻分不清,由于分不清是碗还是杯子,因此,翔宇找妈妈看了一下,妈妈根据自身经验看了就说是杯子,翔宇觉得妈妈说的可能不是那么准,于是到村子里面找了很多邻居和亲戚都看了一遍,最后,有80%的人都说是杯子,有20%的人说是碗,最终翔宇得到了结果----它是碗。

那么,从例子中,有这么几个点值得注意,

第一、翔宇分不清”宝贝“是杯子还是碗,于是问了妈妈,妈妈进过经验预测是碗,这个过程便是机器学习的一个“分类预测”在日常生活中的体现,所用到的数据集便是‘经验”。

第二、翔宇觉得只问妈妈可能不是那么“准确”,于是又问了村子里很多人,采用“投票”少数服从多数进行确定结果。这个时候,整体的策略就像是一个集成学习器,而每个人就是一个”基学习器“。

经过这样一个小例子,我相信你进行对机器学习和机器学习中的集成学习有了一定的认识。那么,下面你就能很好的Bagging思想何随机森林了。

1、Bagging思想

补充:欲得到泛化性能比较强的集成,集成中的个学习器应尽可能相互独立,但在现实任务中无法做到,于是只能设法尽可能具有较大的差异。(深入理解这句话建议参考“西瓜书8.1节”,添加翔宇微信,翔宇可以分享电子版“西瓜书”)

欲得到泛化性能比较强的集成,应尽可能使得集成中的个学习器相互独立。基于这一点,Bagging采用“扰动”样本集的策略,这个思想分为这样两步进行:

1.通过对样本集的”扰动“产生有差异的基学习器;

2.基学习器进行学习后,结合所有集学习器的结果得到最终结果(输出)。

那么最重要的点在于样本集的扰动

1.1 样本集的扰动

样本集的扰动是将样本进行有放回抽样,这里基于的是自助采样法,过程是:

对m个样本进行有放回抽样,同时建立一个采样集,采样集是用来放抽出来的样本的,一开始采样集是空的,每次抽出一个样本放入采样集中做记录,然后放回原始数据集中,保证下次还可能抽到。进行m次抽样后便得到一个基学习器的训练集。将这样的采样进行T次给基学习器训练,便得到T个集学习器的预测结果。

1.2 基学习器的结果的结合

对于分类来说,采用最简单的“投票法”,即是“少数服从多数进行确定结果”,而对于回归,采用计算均值作为最终结果。

最后需要补充的是,由于进行有放回的抽样,最终每个基学习器只能抽取到初始数据集的63.2%的数据样本出现在采样集中,于是可以采用没有被抽取到的数据样本作为验证集进行验证。

2、随机森林(Random Forest,简称RF)

明白了上面的Bagging思想后,接下来我们要讨论的是随机森林(Bagging的一个扩展),我们从两个方面来进行讨论。

2.1 为什么叫森林?

首先,森林由什么组成?是树,对不对?随机森林名字“森林”的也可以理解了了,因为随机森林这个集成学习器的基学习器是决策树(在上一篇文章我们讲过决策树,链接,这里不再赘述)

2.2 为什么叫随机?

由于随机森林是基于Bagging的思想,于是在决策树(每一个基学习器)的构建时,也同样使用了样本扰动。但是不同的是,同时还做了“属性扰动”,于是随机就体现在了这样两个方面。

第一个数据便是体现在样本扰动的随机性,不赘述,第二个随机让我们来看决策随机森林里面的决策树的不同之处。

我们知道,传统决策树的构建划分属性是从所有的属性中挑选出最优的属性(特征)进行划分。而这里的决策树(基学习器)在划分属性时,随机挑选出k个属性进行开始划分,这里的k<=原始数据全部属性d,若k=d,这里的决策树便和传统决策树没有区别。通常推荐 k = l o g 2 d k=log_2d k=log2d

于是,简单来说,随机森林就是一个将决策树作为基学习器基于Bagging思想结合而成得到的集成学习器(强学习器),于是,随机森林既可以用来做分类,同样也可以用来做回归。因此,想要了解随机森林,就必须要了解Bagging思想。

好了,今天的内容就分享到这里。如果对你有帮助,不要忘记关注加收藏和点赞哦!

我是翔宇,我的公众号是“Python和数据分析”,我们下期再见!

参考:《机器学习》作者 周志华

你可能感兴趣的:(数据分析必经之路,机器学习,Bagging,随机森林)