机器学习笔记之集成学习(六)Stacking
创始人
2025-06-01 08:02:55
0

机器学习笔记之集成学习——Stacking

  • 引言
    • 回顾:Bagging\text{Bagging}Bagging架构
    • Stacking\text{Stacking}Stacking架构描述
    • Stacking VS Bagging\text{Stacking VS Bagging}Stacking VS Bagging

引言

上一节介绍了基于Gradient Boosting\text{Gradient Boosting}Gradient Boosting架构的经典模型——梯度提升树(Gradient Boosting Decision Tree,GBDT\text{Gradient Boosting Decision Tree,GBDT}Gradient Boosting Decision Tree,GBDT)。本节将介绍另一种集成学习思想——Stacking\text{Stacking}Stacking。

回顾:Bagging\text{Bagging}Bagging架构

给定数据集合D={(x(i),y(i))}i=1N\mathcal D = \{(x^{(i)},y^{(i)})\}_{i=1}^ND={(x(i),y(i))}i=1N​,基于Bagging\text{Bagging}Bagging架构的算法执行过程可表示为如下形式:

  • 使用自助采样法(Boostrapping Sampling\text{Boostrapping Sampling}Boostrapping Sampling)对原始数据集合D\mathcal DD进行操作,每次Boostrapping\text{Boostrapping}Boostrapping均会产生一个新的训练集Dk∈D\mathcal D_k \in \mathcal DDk​∈D,重复执行K\mathcal KK次,最终得到K\mathcal KK个训练集:
    D1,D2,⋯,DK\mathcal D_1,\mathcal D_2,\cdots,\mathcal D_{\mathcal K}D1​,D2​,⋯,DK​
  • 针对每个训练集Dk(k=1,2,⋯,K)\mathcal D_k(k=1,2,\cdots,\mathcal K)Dk​(k=1,2,⋯,K)均安排一个模型hk(x)h_k(x)hk​(x)对其进行独立训练。我们称这些模型为基学习器(Base Learner\text{Base Learner}Base Learner)。相应地,最终会得到K\mathcal KK个基学习器
    h1(x),h2(x),⋯,hK(x)h_1(x),h_2(x),\cdots,h_{\mathcal K}(x)h1​(x),h2​(x),⋯,hK​(x)
  • 此时,得到训练好的模型hk(x)(k=1,2,⋯,K)h_k(x)(k=1,2,\cdots,\mathcal K)hk​(x)(k=1,2,⋯,K)后,针对不同的任务类型,对Bagging\text{Bagging}Bagging输出结果进行描述:
    • 回归任务(Regression Task\text{Regression Task}Regression Task):K\mathcal KK个基学习器预测结果取均值
    • 分类任务(Classification Task\text{Classification Task}Classification Task):对K\mathcal KK个基学习器预测结果进行投票(Voting\text{Voting}Voting),选择投票多的结果作为最终归属分类

Stacking\text{Stacking}Stacking架构描述

同样给定数据集合D={(x(i),y(i))}i=1N\mathcal D = \{(x^{(i)},y^{(i)})\}_{i=1}^ND={(x(i),y(i))}i=1N​,基于Boosting\text{Boosting}Boosting架构的算法执行过程可表示为如下形式:

  • 选择K\mathcal KK种不同类别模型作为基学习器,并使用数据集D\mathcal DD对每一个基学习器进行独立训练。最终得到K\mathcal KK个训练好的基学习器:
    h1(x),h2(x),⋯,hK(x)h_1(x),h_2(x),\cdots,h_{\mathcal K}(x)h1​(x),h2​(x),⋯,hK​(x)
  • 假设关于某样本特征x(i)x^{(i)}x(i),关于某具体任务的预测结果ypred(i)y_{pred}^{(i)}ypred(i)​可以视作:将各基学习器的预测结果h1(x(i)),h2(x(i)),⋯,hK(x(i))h_1(x^{(i)}),h_2(x^{(i)}),\cdots,h_{\mathcal K}(x^{(i)})h1​(x(i)),h2​(x(i)),⋯,hK​(x(i))拼接(Concatenate)(\text{Concatenate})(Concatenate)起来,作为新的数据集D′\mathcal D'D′
    {D′={(z(i),y(i))}i=1Nz(i)=Concatenate[h1(x(i)),h2(x(i)),⋯,hK(x(i))]i=1,2,⋯,N\begin{cases} \mathcal D' = \{(z^{(i)},y^{(i)})\}_{i=1}^N \\ z^{(i)} = \text{Concatenate}\left[h_1(x^{(i)}),h_2(x^{(i)}),\cdots,h_{\mathcal K}(x^{(i)})\right] \quad i=1,2,\cdots,N \end{cases}{D′={(z(i),y(i))}i=1N​z(i)=Concatenate[h1​(x(i)),h2​(x(i)),⋯,hK​(x(i))]i=1,2,⋯,N​
    此时再次对D′\mathcal D'D′重新建模,最终得到关于样本特征x(i)x^{(i)}x(i)预测结果ypred(i)y_{pred}^{(i)}ypred(i)​:
    通常使用全连接层对z(i)z^{(i)}z(i)进行学习。
    ypred(i)=DenseLayer(z(i))\begin{aligned} y_{pred}^{(i)} & = \text{DenseLayer}(z^{(i)}) \\ \end{aligned}ypred(i)​​=DenseLayer(z(i))​

Stacking VS Bagging\text{Stacking VS Bagging}Stacking VS Bagging

通过对Stacking\text{Stacking}Stacking架构的描述,可以发现Stacking\text{Stacking}Stacking架构和Bagging\text{Bagging}Bagging之间存在相似之处,它们本质上均是融合若干个基学习器的预测结果,以降低方差

但关于Stacking\text{Stacking}Stacking的核心区别在于:
再回首:
Bagging\text{Bagging}Bagging是在不同数据集合上训练同一类别模型;
Stacking\text{Stacking}Stacking是在相同数据集合上训练不同类别模型。
其核心思想是:针对不同模型对于相同数据预测结果的差异性,在各预测结果Conbine\text{Conbine}Conbine过程中,起到降低方差的作用 -> 差异性因模型类别的差异而产生的。
相比之下,Bagging\text{Bagging}Bagging关于各预测结果的差异性很‘刻意’。依然以随机森林为例,为了保持各基学习器的差异性,我们设置参数故意让决策树有一定概率选择不到最优解,使其强行学习‘模糊/不够准确’。

  • Stacking\text{Stacking}Stacking架构的基学习器可以存在不同的模型类别;而Bagging\text{Bagging}Bagging架构的基学习器均是同一类型的。例如随机森林(Random Forest,RF\text{Random Forest,RF}Random Forest,RF)。它的基学习器均是决策树(Decision Tree\text{Decision Tree}Decision Tree)。

    相比之下,Stacking\text{Stacking}Stacking可以使用不同的基学习器进行处理。例如随机森林、GBDT\text{GBDT}GBDT、多层感知机(Multilayer Perceptron,MLP\text{Multilayer Perceptron,MLP}Multilayer Perceptron,MLP)等等。

  • 相比于Bagging\text{Bagging}Bagging架构对于数据集合的自助采样法,我们甚至不需要对数据集进行Boostrap\text{Boostrap}Boostrap,直接用原始数据集D\mathcal DD即可。因为各基学习器可能已经执行过采样操作了:
    从泛化的角度观察,Boostrap\text{Boostrap}Boostrap采样本身就是增加基学习器对于特征学习的多样性。而Stacking\text{Stacking}Stacking已经将该多样性转移至不同类别的模型中。并且,该多样性不仅仅体现在模型结构,而且也可能体现在各模型对于特征的选择上。

  • Bagging\text{Bagging}Bagging架构针对不同任务通常使用均值、投票的方式获取结果,原因在于基学习器模型类别相同,对于数据预测的标尺(Scale\text{Scale}Scale)是相似的。

    而Stacking\text{Stacking}Stacking不同类型的基学习器对于预测结果可能存在不同的标尺,那么关于各基学习器的预测结果的Conbine\text{Conbine}Conbine问题,Stacking\text{Stacking}Stacking将每个基学习器的预测结果拼接起来,使用全连接神经网络进行重新学习,最终得到预测结果。

    • 这里关注的点在于,各预测结果Concatenate\text{Concatenate}Concatenate的向量是可以通过神经网络学习的。当然也可以使用投票、均值的方法(均值就意味着各学习器权重相同),不绝对。
    • 从预测结果的角度观察,虽然各预测结果可能存在不同标尺,但是它们的预测方向是相似的。即:某个样本特征的预测标签结果大概率不会出现完全相反的情况。因而不一定需要非常复杂的模型去学习融合特征。
      Stacking架构描述

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...