【机器学习】集成学习(Bagging)——随机森林(RandomForest)(理论+图解+公式推导)

简介: 【机器学习】集成学习(Bagging)——随机森林(RandomForest)(理论+图解+公式推导)

2021人工智能领域新星创作者,带你从入门到精通,该博客每天更新,逐渐完善机器学习各个知识体系的文章,帮助大家更高效学习。


一、引言

集成学习方式大致分为两种,一种是Boosting架构,采用模型之间串行的方式,典型算法代表为AdaBoost、GBDT等,第二种为Bagging,它是采用模型独立并行的架构,典型算法代表随机森林。

我们集成模型是为了提高模型的泛化能力,希望每个学习器能够有各自的特点,而且不同的学习器之间尽可能地独立,但是我们的数据只有一份,所以想要每个算法不想关是很难办到的,我们希望能够从原始数据集衍生n个数据集共给不同的基学习器进行学习,这样不但可以降低模型之间的独立性而且还能够使每个基学习器尽可能不同。

这里产生n个数据集的原因是我们要使每个基学习器尽量不同,所以需要喂不同的数据进行拟合,如果我们每个基学习器都是拟合原始数据,那么每个基学习器都是大体一样的,这样集成学习就没意义了。

二、随机森林

Bagging架构最著名的算法就属随机森林了,随机森林是Bagging+决策树构成的,也就是我们每个基学习器使用cart决策树,根据上面所述,为了提高模型的泛化能力,我们要根据原始数据构造n棵不同的决策树。

1.数据抽样

为了使每棵树不同,所以我们需要构造n个数据集来给基学习器训练,那么我们就可以使用抽样的方法构造新的数据集,但是抽样分为又放回和无放回抽样,如果采用无放回抽样的化,构造的数据集虽然是独立的,但是如果数据集不够的话,会导致每个学习器训练的数据非常少,导致模型欠拟合的风险,所以随机森林采用了有放回抽样。

每个数据都有可能被重复抽到,我们又放回采样n次,这样就构成了n个不同的数据集供给每个基学习器进行训练。

这里假设每个样本被抽到的概率为 1 m \frac{1}{m}m1 ,那么没有被抽打的概率就为 1 − 1 m 1-\frac{1}{m}1m1 ,我们需要抽取m次,所以针对一个样本m次都没有被抽到的概率为 ( 1 − 1 m ) m (1-\frac{1}{m})^m(1m1)m ,当m区域无穷大时,该概率值近似为 1 e = 0.368 \frac{1}{e}=0.368e1=0.368 ,那么也就是说我们数据集中经过m次抽样大概会有 36.8 36.836.8%的数据不会被抽到,这些数据一般被称作袋外数据,针对于这个特性有时候可以使用它们作为验证集使用。

2.集成模型结果

Bagging架构是多个模型独立的,所以每个模型的输出结果无关,最终我们需要参考每棵树的结果生成最终结果。

一般针对于分类问题,每个树输出的为目标类别,此时我们可以使用投票的方式,少数服从多数的方式,类似于专家评选一样,如果出现票数相同那么就随机挑选一个。

如果是回归问题,每棵树输出的为连续值,所以此时可以使用加权平均的方式作为最终预测结果。

3.生成单棵树

针对于每棵树的训练其实是和单棵决策树差不多的,都是按照特征计算信息增益,然后选取最优特征进行区分样本,但是随机森林还改进了一个地方就是选取最优特征时,对于普通的决策树是计算所有特征的信息增益选取最大的,但是随机森林采用的是不适用所有的特征,而是从所有特征中随机选取n个特征作为特征子集,然后基于这个特征子集计算信息增益。

举个例子,一个样本集有100个特征,如果针对于普通的决策树,它会分别计算这100个特征的信息增益,然后选取最优特征,而随机森林在初期我们可以设定一个值作为特征子集的数量,比如我们设定该数值为50,那么我们建树之前,会从100个特征中随机选取50个特征作为特征子集,之后这颗树的生成都时基于这个特征子集,只需要计算这50个特征的信息增益。

随机森林增加特征随机选取是为了提高模型泛化能力,不仅从样本抽样上而且还从特征选取上,这样就会使每个学习器之间的差异度进一步提升,模型的泛化能力进一步提高。

这样也会有一定后果,每个基学习器的精度会有所下降,因为加入了属性扰动,没有考虑所有的特征,但是随着基学习器个数的增大,模型的总体误差会更低,单个学习器的降低不会大幅度降低模型的能力。

三、学习器多样性增强

针对于集成学习,我们需要每个基学习器好而不同,对于集成更关注的是不同,也就是每个基学习器都会有自己的一些特性,这样模型的泛化能力才会高,对于未知的数据集拟合的才会更好,下面给出几种方式增加学习器的多样性。

1.数据样本扰动

所谓的数据样本扰动就是我们要给每个基学习器训练不同的数据集,对于随机森林来说,采用的是通过采样的方式来构造不同的样本子集,像AdaBoost采用的就是通过改变样本权重的方式生成不同的样本集。

但是有些模型使用数据扰动不太管用,你比如说SVM、线性模型等,这些模型一般是不会随着数据的变动发生较大的变化的,这些一般称为稳定学习器,像决策树这种模型,如果样本稍加变化就会导致模型大幅度变化,这种称为不稳定学习器,对于不稳定学习器使用数据样本扰动很管用,如果是稳定学习器,那么就需要使用特征扰动。

2.特征属性扰动

特征扰动就是我们在构造模型时只是使用一部分特征,这样每个基学习器就会学习到不同的特征集,那么生成的模型自然不同,这种方法对于哪些稳定学习器较为管用。

比如本篇文章讲的随机森林,在构建每棵树时,采用随机采集特征子集的方式进行建模,一方面这样不但可以使获得不同的学习器,而且还因为特征数的减少,模型的训练效率大大提高,尽管这样可能造成一定精度损失。

3.模型参数扰动

一般的模型中都会有参数的设置,将不同的学习器初始参数设置的不一样,一般情况下也会获得不同的模型,你比如说,随机森林中每个树我设定每棵树的最大深度不同,或者分割最小样本数,修改每个基学习器模型的参数也会导致获得不同的基学习器。


目录
相关文章
|
10月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
586 3
|
11月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
1768 1
|
11月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
645 0
|
11月前
|
机器学习/深度学习 算法 前端开发
集成学习任务七和八、投票法与bagging学习
集成学习任务七和八、投票法与bagging学习
227 0
|
4月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
|
10月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1040 6
|
5月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
220 6
|
7月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
|
8月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
1443 13
机器学习算法的优化与改进:提升模型性能的策略与方法