计算机系统应用教程网站

网站首页 > 技术文章 正文

金母鸡量化教学场:常用的模型集成方法介绍—stacking

btikc 2024-10-01 08:43:21 技术文章 11 ℃ 0 评论

我们都知道,自助聚合(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折数据上进行训练,从而对剩下的一折数据进行预测。迭代地重复这个过程,就可以得到对任何一折观测数据的预测结果。这样一来,我们就可以为数据集中的每个观测数据生成相关的预测,然后使用所有这些预测结果训练元模型。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表