网站首页 > 技术文章 正文
我们都知道,自助聚合(bagging)的重点在于获得一个方差比其组成部分更小的集成模型,而提升法(boosting)和堆叠法(stacking)则将主要生成偏置比其组成部分更低的强模型。
这其中堆叠法(stacking)通常考虑的是异质弱学习器,并行地学习它们,并通过训练一个“元模型”将它们组合起来,根据不同弱模型的预测结果输出一个最终的预测结果。今天我们就来认识一下堆叠法(stacking)。
一、Stacking 概述
Stacking与bagging和boosting主要存在两方面的差异。
首先,Stacking通常考虑的是异质弱学习器(不同的学习算法被组合在一起),而bagging和boosting主要考虑的是同质弱学习器。
其次,stacking 学习用元模型组合基础模型,而bagging和boosting则根据确定性算法组合弱学习器。
二、堆叠法(Stacking)
正如前面已经提到的,stacking的概念是学习几个不同的弱学习器,并通过训练一个元模型来组合它们,然后基于这些弱模型返回的多个预测结果输出最终的预测结果。
因此,为了构建stacking模型,需要定义两个东西:想要拟合的 L 个学习器以及组合它们的元模型。
例如,对于分类问题来说,我们可以选择 KNN 分类器、logistic 回归和SVM 作为弱学习器,并决定学习神经网络作为元模型。然后,神经网络将会把三个弱学习器的输出作为输入,并返回基于该输入的最终预测。
所以,假设我们想要拟合由 L 个弱学习器组成的 stacking 集成模型。我们必须遵循以下步骤:
1、将训练数据分为两组
2、选择 L 个弱学习器,用它们拟合第一组数据
3、使 L 个学习器中的每个学习器对第二组数据中的观测数据进行预测
4、在第二组数据上拟合元模型,使用弱学习器做出的预测作为输入
在前面的步骤中,我们将数据集一分为二,因为对用于训练弱学习器的数据的预测与元模型的训练不相关。因此,将数据集分成两部分的一个明显缺点是,我们只有一半的数据用于训练基础模型,另一半数据用于训练元模型。
为了克服这种限制,我们可以使用某种“k-折交叉训练”方法(类似于 k-折交叉验证中的做法)。这样所有的观测数据都可以用来训练元模型:对于任意的观测数据,弱学习器的预测都是通过在k-1折数据(不包含已考虑的观测数据)上训练这些弱学习器的实例来完成的。
换句话说,它会在k-1折数据上进行训练,从而对剩下的一折数据进行预测。迭代地重复这个过程,就可以得到对任何一折观测数据的预测结果。这样一来,我们就可以为数据集中的每个观测数据生成相关的预测,然后使用所有这些预测结果训练元模型。
猜你喜欢
- 2024-10-01 机器学习100天-Day1803随机森林 随机森林算法详解
- 2024-10-01 「机器学习」自动调参器设计实现 自动调参法
- 2024-10-01 boosting 原理 boost模型原理
- 2024-10-01 机器学习入门精讲,这40个知识点不可错过(一)
- 2024-10-01 Python 数据分析实例——集成方法
- 2024-10-01 机器学习入门精讲,这40个知识点不可错过(1)
- 2024-10-01 集成学习,集成算法 Ensemble methods
- 2024-10-01 人工智能科普|机器学习入门精讲,这40个知识点不可错过(1)
- 2024-10-01 「五分钟机器学习」集成学习——Ensemble Learning
- 2024-10-01 Day95:集成学习(Ensemble Learning)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)