热门标签 | 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. 【机器学习】模型融合方法概述


推荐阅读
  • 支持向量机(SVM)算法综述
    支持向量机(Support Vector Machine, SVM)是由Cortes和Vapnik于1995年首次提出的一种机器学习算法。SVM在处理小样本、非线性及高维模式识别问题上表现出显著的优势,并广泛应用于函数拟合等其他机器学习任务中。 ... [详细]
  • 解决getallheaders函数导致的500错误及8种服务器性能优化策略
    本文探讨了解决getallheaders函数引起的服务器500错误的方法,并介绍八种有效的服务器性能优化技术,包括内存数据库的应用、Spark RDD的使用、缓存策略的实施、SSD的引入、数据库优化、IO模型的选择、多核处理策略以及分布式部署方案。 ... [详细]
  • 大数据核心技术解析
    本文深入探讨了大数据技术的关键领域,包括数据的收集、预处理、存储管理、以及分析挖掘等方面,旨在提供一个全面的技术框架理解。 ... [详细]
  • 全面解读Apache Flink的核心架构与优势
    Apache Flink作为大数据处理领域的新兴力量,凭借其独特的流处理能力和高效的批处理性能,迅速获得了广泛的关注。本文旨在深入探讨Flink的关键技术特点及其应用场景,为大数据处理提供新的视角。 ... [详细]
  • 本文档提供了数据结构在C语言中的实现示例,特别是解决二次方程的代码片段,以及《数据结构(用面向对象方法与C++语言描述)第二版》的部分习题答案。 ... [详细]
  • ANSI最全介绍linux终端字体改变颜色等ANSI转义序列维基百科,自由的百科全书由于国内不能访问wiki而且国内关于ANSI的介绍都是简短的不能达到,不够完整所以转wiki到此 ... [详细]
  • 利用Dlib进行高效的人脸特征提取与识别
    本文介绍了Dlib库,一个集成了多种机器学习算法的C++工具包,特别适用于需要处理复杂任务的应用场景。Dlib不仅支持机器人技术、嵌入式系统开发、移动应用及高性能计算环境,还提供了强大的人脸检测与特征提取功能。 ... [详细]
  • 专注于模式识别与机器学习的研究生,对于该领域内的就业方向及具体职位要求有着浓厚的兴趣。本文将探讨智能图像/视频处理工程师的岗位要求,并为相关专业的学生提供学习建议。 ... [详细]
  • 计算机视觉初学者指南:如何顺利入门
    本文旨在为计算机视觉领域的初学者提供一套全面的入门指南,涵盖基础知识、技术工具、学习资源等方面,帮助读者快速掌握计算机视觉的核心概念和技术。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 深度学习与神经网络课程总结
    本文档总结了神经网络和深度学习课程中的关键概念和理论,包括机器学习的基本要素、算法类型以及数据特征表示等。 ... [详细]
  • 尤洋:夸父AI系统——大规模并行训练的深度学习解决方案
    自从AlexNet等模型在计算机视觉领域取得突破以来,深度学习技术迅速发展。近年来,随着BERT等大型模型的广泛应用,AI模型的规模持续扩大,对硬件提出了更高的要求。本文介绍了新加坡国立大学尤洋教授团队开发的夸父AI系统,旨在解决大规模模型训练中的并行计算挑战。 ... [详细]
  • 本文介绍了推荐系统的基本概念及其在个性化服务中的重要作用,重点探讨了协同过滤算法的工作原理,包括基于用户的协同过滤和基于物品的协同过滤两种方式,并详细解释了几种常见的相似度计算方法。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 新型量子内核助力机器学习分类
    国际科研团队开发出一种创新的量子机器学习分类方法,利用非线性量子内核显著提升了分类精度,为未来量子计算技术的发展开辟了新路径。 ... [详细]
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社区 版权所有