热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

【机器学习】Stacking与K折交叉验证

其他机器学习系列文章见于专题:机器学习进阶之路——学习笔记整理,欢迎大家关注。1.Stacking定义Stacking并不是简单地对个体学习器的结果做

其他机器学习系列文章见于专题:机器学习进阶之路——学习笔记整理,欢迎大家关注。


1. Stacking定义

  Stacking并不是简单地对个体学习器的结果做简单逻辑处理,而是先从初始数据集训练出初级学习器,将初级学习器的输出当成特征,初始样本的标记仍被当作标记,由此生成一个新数据集用于训练学习器。




Stacking结构图

2. Stacking原理

  假设我们有两个初级学习器Model1Model1Model1,Model2Model2Model2

  (1)对初级学习器Model1Model1Model1,利用训练集DDD进行训练,然后用训练好的Model1Model1Model1预测训练集DDD和测试集TTT的标签列,结果分别为P1P1P1T1T1T1

  (2)对初级学习器Model2Model2Model2,重复步骤(1),得到预测标签结果P2P2P2T2T2T2

  (3)将两个初级学习器的结果合并,得到次级学习器Model3Model3Model3的训练集P3=(P1,P2)P3=(P1, P2)P3=(P1,P2)和测试集T3=(T1,T2)T3=(T1, T2)T3=(T1,T2)。也就是说,有多少个初级学习器,次级学习器的训练集和测试集就有多少列(特征)。

  (4)用P3P3P3训练次级学习器Model3Model3Model3,并预测T3T3T3,得到最终的预测结果。


3. Stacking算法描述

  输入:训练集DDD,初级学习算法L1,L2,...,LT{\mathfrak{L}}_1,{\mathfrak{L}}_2,...,{\mathfrak{L}}_TL1,L2,...,LT,次级学习算法L\mathfrak{L}L

  过程:

    (1)对i=1,2,…,m{i = 1,2, \ldots ,m}i=1,2,,m,使用初级学习算法Lt\mathfrak{L}_tLt产生初级学习器ht=Lt(D)h _ { t } = \mathfrak { L } _ { t } ( D )ht=Lt(D);

    (2)生成次级训练集:

      D′=∅D ^ { \prime } = \emptysetD=

      fori=1,2,…,mdo{{for\quad }i = 1,2, \ldots ,m\quad do}fori=1,2,,mdo

        fort=1,2,…,Tdo{{for\quad }t = 1,2, \ldots ,T\quad do}fort=1,2,,Tdo

          zit=ht(xi){{z_{it}} = {h_t}\left( {{x_i}} \right)}zit=ht(xi)

        endfor{{ end\quad for}}endfor

        D′=D′∪((zi1,zi2,…,ziT),yi){{D^\prime } = {D^\prime } \cup \left( {\left( {{z_{i1}},{z_{i2}}, \ldots ,{z_{iT}}} \right),{y_i}} \right)}D=D((zi1,zi2,,ziT),yi)

      endfor{{ end\quad for}}endfor

    (3)在D′{D'}D上用次级学习算法L\mathfrak{L}L产生次级学习器h′=L(D′){h'} = {\mathfrak{L}}\left( {D'} \right)h=L(D)

  输出:H(x)=h′(h1(x),h2(x),…,hT(x))H\left( x \right) = h'\left( {{h_1}\left( x \right),{h_2}\left( x \right), \ldots ,{h_T}\left( x \right)} \right)H(x)=h(h1(x),h2(x),,hT(x))


4. K折交叉验证

  但是,上述这种做法直接利用训练集训练得到的模型去预测训练集的标签,过拟合风险比较大。因此,一般通过k折交叉验证来缓解这种做法的过拟合问题。




Stacking的5折交叉验证流程图

  以5折交叉验证为例,做法如下:

  (1)原始训练集DDD被随机划分5个大小相似的子集D1,D2,…,D5{D_1},{D_2}, \ldots ,{D_5}D1,D2,,D5,令DjD_jDjD‾j=D\Dj{\overline D _j} = D\backslash {D_j}Dj=D\Dj分别表示第jjj折的测试集和训练集。

  (2)D1D_1D1训练Model1Model1Model1,然后在D1D_1D1上进行预测得到P11P_{11}P11;用D2D_2D2训练Model1Model1Model1,然后在D2D_2D2上进行预测得到P12{P_{12}}P12,重复5次将预测得到的P1=(P11⋮P15)P 1 = \left( \begin{array} { c } { P _ { 11 } } \\ { \vdots } \\ { P _ { 15 } } \end{array} \right)P1=P11P15P1P1P1的训练集样本数等于原始训练集DDD中的样本数。

  (3)在每次5折交叉验证中,都利用训练好的Model1Model1Model1对整个测试集TTT进行预测,然后将5次预测结果求平均得到T1T1T1

  (4)对初级学习器Model2Model2Model2,重复步骤(2)(3),得到标签预测结果P2P2P2T2T2T2

  (5)拼接得到次级学习器Model3Model3Model3的训练集P3=(P1,P2)P3=(P1,P2)P3=(P1,P2)和测试集T3=(T1,T2)T3=(T1,T2)T3=(T1,T2)

  (6)用P3P3P3训练次级学习器Model3Model3Model3,并预测T3T3T3,得到最终的预测结果。


参考文献:

  1. 《机器学习》第八章集成学习——周志华
  2. Kaggle机器学习之模型融合(stacked)心得
  3. 【机器学习】模型融合方法概述


推荐阅读
  • 线性Kalman滤波器在多自由度车辆悬架主动控制中的应用研究
    本文探讨了线性Kalman滤波器(LKF)在不同自由度(2、4、7)的车辆悬架系统中进行主动控制的应用。通过详细的仿真分析,展示了LKF在提升悬架性能方面的潜力,并总结了调参过程中的关键要点。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 深入理解K近邻分类算法:机器学习100天系列(26)
    本文详细介绍了K近邻分类算法的理论基础,探讨其工作原理、应用场景以及潜在的局限性。作为机器学习100天系列的一部分,旨在为读者提供全面且深入的理解。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 随着生活节奏的加快和压力的增加,越来越多的人感到不快乐。本文探讨了现代社会中导致人们幸福感下降的各种因素,并提供了一些改善建议。 ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • LambdaMART算法详解
    本文详细介绍了LambdaMART算法的背景、原理及其在信息检索中的应用。首先回顾了LambdaMART的发展历程,包括其前身RankNet和LambdaRank,然后深入探讨了LambdaMART如何结合梯度提升决策树(GBDT)和LambdaRank来优化排序问题。 ... [详细]
  • 在互联网信息爆炸的时代,当用户需求模糊或难以通过精确查询表达时,推荐系统成为解决信息过载的有效手段。美团作为国内领先的O2O平台,通过深入分析用户行为,运用先进的机器学习技术优化推荐算法,提升用户体验。 ... [详细]
  • 机器学习公开课备忘录(三)机器学习算法的应用与大数据集
    机器学习公开课备忘录(三)机器学习算法的应用与大数据集对应机器学习公开课第六周和第10周机器学习算法模型的选择与评价1、对于一个data,可以将data划分为trainingset、t ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
author-avatar
雨之夜惊恐_136
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有