台湾国立大学(林轩田)《机器学习技法》(第7讲)blending and bagging

article/2025/6/20 15:35:12

课程地址:https://class.coursera.org/ntumlone-001/class
课件讲义:http://download.csdn.net/download/malele4th/10212756
注明:文中图片来自《机器学习技法》课程和部分博客
建议:建议读者学习林轩田老师原课程,本文对原课程有自己的改动和理解

Lecture 7 blending and bagging

翻译:(混合、自举)或(混合、装袋)

上节课我们主要介绍了Support Vector Regression,将kernel model引入到regression中。首先,通过将ridge regression和representer theorem结合起来,得到kernel ridge regression。但是其解是dense的,即部分不为零。为了得到sparse解,我们将regularized tube error和Lagrange dual结合起来,利用SVM dual的推导方法,得到support vector regression的sparse解。

本系列1-6节课主要介绍Kernel Models及其应用,从本节课开始,讲介绍Aggregation Models,即如何将不同的hypothesis和features结合起来,让模型更好。

本节课将介绍其中的两个方法,一个是Blending,一个是Bagging。

目录

  • Lecture 7 blending and bagging
  • 目录
    • Motivation of aggregation聚合
    • uniform blending
    • linear and any blending
    • BaggingBootstrap Aggregation
    • 总结

1 Motivation of aggregation(聚合)

首先举个例子来说明为什么要使用Aggregation。假如你有T个朋友,每个朋友向你预测推荐明天某支股票会涨还是会跌,对应的建议分别是g1,g2,⋯,gT,那么你该选择哪个朋友的建议呢?即最终选择对股票预测的gt(x)是什么样的?

第一种方法是从T个朋友中选择一个最受信任,对股票预测能力最强的人,直接听从他的建议就好。这是一种普遍的做法,对应的就是validation思想,即选择犯错误最小的模型。

第二种方法,如果每个朋友在股票预测方面都是比较厉害的,都有各自的专长,那么就同时考虑T个朋友的建议,将所有结果做个投票,一人一票,最终决定出对该支股票的预测。这种方法对应的是uniformly思想。

第三种方法,如果每个朋友水平不一,有的比较厉害,投票比重应该更大一些,有的比较差,投票比重应该更小一些。那么,仍然对T个朋友进行投票,只是每个人的投票权重不同。这种方法对应的是non-uniformly的思想。

第四种方法与第三种方法类似,但是权重不是固定的,根据不同的条件,给予不同的权重。比如如果是传统行业的股票,那么给这方面比较厉害的朋友较高的投票权重,如果是服务行业,那么就给这方面比较厉害的朋友较高的投票权重。

以上所述的这四种方法都是将不同人不同意见融合起来的方式,接下来我们就要讨论如何将这些做法对应到机器学习中去。
Aggregation的思想与这个例子是类似的,即把多个hypothesis结合起来,得到更好的预测效果。
这里写图片描述

将刚刚举的例子的各种方法用数学化的语言和机器学习符号归纳表示出来,其中G(x)表示最终选择的模型。
这里写图片描述
这里写图片描述
注意这里提到的第一种方法是通过验证集来选择最佳模型,不能使用 Ein(gt) E i n ( g t ) 来代替 Eval(gt) E v a l ( g t − ) 。经过Validation,选择最小的Eval,保证Eout最小,从而将对应的模型作为最佳的选择。

但是第一种方法只是从众多可能的hypothesis中选择最好的模型,并不能发挥集体的智慧。而Aggregation的思想是博采众长,将可能的hypothesis优势集合起来,将集体智慧融合起来,使预测模型达到更好的效果。

下面先来看一个例子,通过这个例子说明为什么Aggregation能work得更好。
这里写图片描述
如上图所示,平面上分布着一些待分类的点。如果要求只能用一条水平的线或者垂直的线进行分类,那不论怎么选取直线,都达不到最佳的分类效果。这实际上就是上面介绍的第一种方法:validation。但是,如果可以使用集体智慧,比如一条水平线和两条垂直线组合而成的图中折线形式,就可以将所有的点完全分开,得到了最优化的预测模型。

这个例子表明,通过将不同的hypotheses均匀地结合起来,得到了比单一hypothesis更好的预测模型。这就是aggregation的优势所在,它提高了预测模型的power,起到了特征转换(feature transform)的效果。
这里写图片描述

我们再从另外一方面来看,同样是平面上分布着一些待分类的点,使用PLA算法,可以得到很多满足条件的分类线,如下图所示:
这里写图片描述
这无数条PLA选择出来的直线对应的hypothesis都是满足分类要求的。但是我们最想得到的分类直线是中间那条距离所有点都比较远的黑色直线,这与之前SVM目标是一致的。如果我们将所有可能的hypothesis结合起来,以投票的方式进行组合选择,最终会发现投票得到的分类线就是中间和黑色那条。这从哲学的角度来说,就是对各种效果较好的可能性进行组合,得到的结果一般是中庸的、最合适的,即对应图中那条黑色直线。

所以,aggregation也起到了正则化(regularization)的效果,让预测模型更具有代表性。

这里写图片描述

基于以上的两个例子,我们得到了aggregation的两个优势:feature transform和regularization。

我们之前在机器学习基石课程中就介绍过,feature transform和regularization是对立的,还把它们分别比作踩油门和踩刹车。如果进行feature transform,那么regularization的效果通常很差,反之亦然。也就是说,单一模型通常只能倾向于feature transform和regularization之一,在两者之间做个权衡。但是aggregation却能将feature transform和regularization各自的优势结合起来,好比把油门和刹车都控制得很好,从而得到不错的预测模型。

2 uniform blending

那对于我们已经选择的性能较好的一些矩gt,如何将它们进行整合、合并,来得到最佳的预测模型呢?这个过程称为blending。

最常用的一种方法是uniform blending,应用于classification分类问题,做法是将每一个可能的矩赋予权重1,进行投票,得到的G(x)表示为:
这里写图片描述
这种方法对应三种情况:
第一种情况是每个候选的矩gt都完全一样,这跟选其中任意一个gt效果相同;
第二种情况是每个候选的矩gt都有一些差别,这是最常遇到的,大都可以通过投票的形式使多数意见修正少数意见,从而得到很好的模型,如下图所示;
第三种情况是多分类问题,选择投票数最多的那一类即可
这里写图片描述

如果是regression回归问题,uniform blending的做法很简单,就是将所有的矩gt求平均值:
这里写图片描述

uniform blending for regression对应两种情况:第一种情况是每个候选的矩gt都完全一样,这跟选其中任意一个gt效果相同;第二种情况是每个候选的矩gt都有一些差别,有的 gt>f(x) g t > f ( x ) ,有的 gt<f(x) g t < f ( x ) ,此时求平均值的操作可能会消去这种大于和小于的影响,从而得到更好的回归模型。因此,从直觉上来说,求平均值的操作更加稳定,更加准确。
这里写图片描述
对于uniform blending,一般要求每个候选的矩gt都有一些差别。这样,通过不同矩gt的组合和集体智慧,都能得到比单一矩gt更好的模型。

刚才我们提到了uniform blending for regression中,计算gt的平均值可能比单一的gt更稳定,更准确。下面进行简单的推导和证明。

这里写图片描述
这里写图片描述

这里写图片描述
当T趋于无穷大的时候,G=g¯,则有如下等式成立:
这里写图片描述
上述等式中左边表示演算法误差的期望值;右边第二项表示不同gt的平均误差共识,用偏差bias表示;右边第一项表示不同gt与共识的差距是多少,反映gt之间的偏差,用方差variance表示。也就是说,一个演算法的平均表现可以被拆成两项,一个是所有gt的共识,一个是不同gt之间的差距是多少,即bias和variance。而uniform blending的操作时求平均的过程,这样就削减弱化了上式第一项variance的值,从而演算法的表现就更好了,能得到更加稳定的表现。

3 linear and any blending

上一部分讲的是uniform blending,即每个gt所占的权重都是1,求平均的思想。下面我们将介绍linear blending,每个gt赋予的权重αt并不相同,其中αt≥0。我们最终得到的预测结果等于所有gt的线性组合。
这里写图片描述
这里写图片描述
这里写图片描述
这种求解αt的方法就像是使用two-level learning,类似于我们之前介绍的probabilistic SVM。这里,我们先计算gt(xn),再进行linear regression得到αt值。总的来说,linear blending由三个部分组成:LinModel,hypotheses as transform,constraints。其中值得注意的一点就是,计算过程中可以把gt当成feature transform,求解过程就跟之前没有什么不同,除了α≥0的条件限制。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


这里写图片描述

除了linear blending之外,还可以使用任意形式的blending。linear blending中,G(t)是g(t)的线性组合;any blending中,G(t)可以是g(t)的任何函数形式(非线性)。这种形式的blending也叫做Stacking。

any blending的优点是模型复杂度提高,更容易获得更好的预测模型;缺点是复杂模型也容易带来过拟合的危险。

4 Bagging(Bootstrap Aggregation)

(引导聚合)
总结一些上面讲的内容,blending的做法就是将已经得到的矩gt进行aggregate的操作。具体的aggregation形式包括:uniform,non-uniforn和conditional。
这里写图片描述

现在考虑一个问题:如何得到不同的gt呢?

可以选取不同模型H;
可以设置不同的参数,例如η、迭代次数n等;
可以由算法的随机性得到,例如PLA、随机种子等;
可以选择不同的数据样本等。这些方法都可能得到不同的gt。

这里写图片描述

那如何利用已有的一份数据集来构造出不同的gt呢?首先,我们回顾一下之前介绍的bias-variance,即一个演算法的平均表现可以被拆成两项,一个是所有gt的共识(bias),一个是不同gt之间的差距是多少(variance)。其中每个gt都是需要新的数据集的。只有一份数据集的情况下,如何构造新的数据集?

这里写图片描述
这里写图片描述
这里写图片描述

下面举个实际中Bagging Pocket算法的例子。如下图所示,先通过bootstrapping得到25个不同样本集,再使用pocket算法得到25个不同的gt,每个pocket算法迭代1000次。最后,再利用blending,将所有的gt融合起来,得到最终的分类线,如图中黑线所示。可以看出,虽然bootstrapping会得到差别很大的分类线(灰线),但是经过blending后,得到的分类线效果是不错的,则bagging通常能得到最佳的分类模型。
这里写图片描述
值得注意的是,只有当演算法对数据样本分布比较敏感的情况下,才有比较好的表现。

5 总结

本节课主要介绍了blending和bagging的方法,它们都属于aggregation,即将不同的gt合并起来,利用集体的智慧得到更加优化的G(t)。Blending通常分为三种情况:Uniform Blending,Linear Blending和Any Blending。其中,uniform blending采样最简单的“一人一票”的方法,linear blending和any blending都采用标准的two-level learning方法,类似于特征转换的操作,来得到不同gt的线性组合或非线性组合。最后,我们介绍了如何利用bagging(bootstrap aggregation),从已有数据集D中模拟出其他类似的样本Dt,而得到不同的gt,再合并起来,优化预测模型。


http://chatgpt.dhexx.cn/article/iTexKbM1.shtml

相关文章

大学有新民之道,则大学生者负新民工作之实际责任者也。

梅贻琦&#xff0c;&#xff08;1889-1962&#xff09;&#xff0c;字月涵&#xff0c;为梅曾臣长子。自1914年由美国吴士脱大学学成归国&#xff0c;即到清华担任教学和教务长等多种职务。1931年&#xff0c;梅贻琦出任清华校长&#xff0c;自此后一直到他在台湾去世&#xff…

【转载】中庸与技术书

2019独角兽企业重金招聘Python工程师标准>>> 转自&#xff1a;图灵社区 原文作者&#xff1a;刘祺 原文地址&#xff1a;http://www.ituring.com.cn/article/213657 本次转载已经过原作者同意&#xff0c;二次转载请自行联系原作者 #中庸与技术书 在我写这篇文章之前…

《大学》《中庸》全文及翻译 (转载)

《大学》全文及翻译 原文&#xff1a; 大学之道&#xff0c;在明明德&#xff0c;在亲民&#xff0c;在止于至善。知止而后有定&#xff0c;定而后能静&#xff0c;静而后能安&#xff0c;安而后能虑&#xff0c;虑而后能得。物有本末&#xff0c;事有终始&#xff0c;知所先后…

[C语言]求一个数是否是2的n次方

设a8&#xff0c;a的二进制数为1000&#xff0c;若为16&#xff0c;则是 0001 0000&#xff0c;2的n次方转为二进制则只保留一个 1 &#xff0c; 其余位置全是0&#xff0c;因此只要判断这个数的二进制是否只有一个 1 &#xff0c;则知道这个数是否是2的n次方。 //求一个数是…

C语言|s1-s0|<=10的-6次方

#include <stdio.h> #include <math.h> double fun(double x) { double s11.0,s00.0; double t1.0; int n1; do { s0s1;//此时s0为s1的上一项 tt*(0.5-n1)*x/n; s1s1t; n; } while(fabs(s1-s0)>1e…

c语言字母能乘10吗,c语言编程中表示a乘以10的n次幂怎么表示

可以参考下面的代码&#xff1a; #include int main() { float a,s,n; sa*mi(10,n); return 0; } float mi(float x,int y) { float a; int i; a1; if(y>0) { for(i1;i<y;i) { aa*x; } } else { for(i-1;i>y;i--) { aa/x; } } return a; } 扩展资料&#xff1a; C语言…

c语言学习-编写函数求x的n次方的值

编写函数求x的n次方的值 程序流程图&#xff1a; 代码&#xff1a; #include<stdio.h> long mul(int j ,int k) { int i; long mu1; for(i0;i<k;i) mumu*j; return mu; } void main() { int x,n; long m; printf("please enter x\tn\t"); scanf("%…

c语言x的n次方怎么写_C语言入门教程(三)进制与操作符

Hello,小伙伴们大家好,今天开始进入C语言第三课时的学习。进入今天正式内容之前呢,先来看一下上次课程中的留下的一道练习题。 练习: 1.编写程序计算半径为任意浮点数的圆周长并把结果打印在屏幕上 1、进制 一个字节分成八段,每段只能记录一个0或者1要想把一个数字记录在一…

c语言n次方怎么输入_C语言中10个经典的算法,学会它,利用它

C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的、更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础。 接下来我们先来看10道: (1) 输出9*9乘法口诀 运行结果: (2…

c语言编程如何进行n次方运算,c语言n次方怎么输入?_后端开发

python编程如何求2000到2500闰年&#xff1f;_后端开发 python编程求2000到2500闰年的方法&#xff1a;首先定义年份【i2000】&#xff1b;然后用while循环判断是否在2500内&#xff1b;接着若年份可被40整除且不被100整除&#xff0c;则是闰年&#xff0c;若年份可被400整除&a…

C语言怎么编辑次方,c语言怎么表示一个数的n次方

2009-01-05 C语言问题从键盘输入8个数,用选择法按由大到小的循序排列并输出,要求用指针来实现。 你应该自己实现这个小程序。 例子,单向链表排序(冒泡): struct student {int num; struct student *next; } struct student *paixu(struct student *head) {struct student *p,…

c语言中e的n次方怎么打,C语言中N次方怎么打

满意答案 lawq0364t 2020.05.11 采纳率&#xff1a;52% 等级&#xff1a;7 已帮助&#xff1a;2761人 有两个函数可以实现&#xff0c;double pow(double x, double y)&#xff0c;double pow10(int p) 下面是这两个函数的使用方法&#xff0c;个人建议用&#xff1a;pow10(…

c语言10的10万次方,在c语言编程中 10的n次方应该怎么表达

满意答案 lvoeshg99 推荐于 2017.09.13 采纳率&#xff1a;56% 等级&#xff1a;9 已帮助&#xff1a;461人 在C语言中10的n次方表示&#xff1a;10^n&#xff0c;或者使用函数&#xff1a;pow(10&#xff0c;n)和pow10(n)。 C语言的幂运算是很耗资源的&#xff0c;10的3次方…

c语言表达式的次方怎么表示,在C语言中,10的n次方怎么表示?

有两个函数可以实现&#xff0c;double pow(double x, double y)&#xff0c;double pow10(int p) 下面是这两个函数的使用方法&#xff0c;个人建议用&#xff1a;pow10(n) 函数名: pow 功 能: 指数函数(x的y次方) 用 法: double pow(double x, double y); 程序例: #include…

最好用的pdf阅读软件 Acrobat Reader DC安装教程(无需破解)

下载在线安装的小文件 直通车 若无法打开&#xff08;FQ&#xff09;可以下载我已经下载好了的 https://pan.baidu.com/s/1jzd8CnB4sHLCCwQvztLmYg 就这个小文件&#xff0c;双击便会在线下载安装。默认安装在C盘 由于我已经安装了&#xff0c;所以只是检测我的是否为最新…

Adobe Acrobat中操作pdf文件被保护,请输入许可口令

文档目录 问题描述解决步骤口令破解工具下载链接 问题描述 Adobe Acrobat中操作pdf时出现此问题&#xff1a; 使用口令破解工具将此pdf破解后方可正常使用。 解决步骤 1、下载PDF Password Remover后将其解压&#xff0c;然后双击PPR.exe 2、选择输出目录&#xff0c;然后…

Adobe的PDF工具Acrobat Pro DC 2023版本下载与安装

目录 前言一、Acrobat Pro DC安装二、使用配置总结 前言 Acrobat Pro DC提供了一系列功能和特性&#xff0c;用于创建、编辑、组织和共享PDF文件。注&#xff1a;文末附有下载链接&#xff01; 一、Acrobat Pro DC安装 1、运行安装程序&#xff0c;如图所示。 2、选择自定义&…

PDF加密、解密、破解和转换软件

本人因下载了一PDF文档&#xff0c;日语的&#xff0c;像转成DOC格式的&#xff0c;从网上找了PDF转DOC软件&#xff0c;发现转换不了&#xff0c;要口令&#xff0c;所以又找破解PDF软件&#xff0c;一次搞定。从网上找的时候都没有一篇完整的文章&#xff0c;所以就有了下文。…

Adobe Acrobat Pro DC软件介绍及其特点详解

Adobe Acrobat Pro DC 2020是Adobe公司出品的一款非常好用且功能强大的PDF编辑和阅读软件。它将全球最佳的PDF解决方案提升到最新的高度&#xff0c;并配有直观触控式界面&#xff0c;通过开发强大的新功能&#xff0c;使用户能在任何地方完成工作。新工具中心可更简单迅速的访…

Acrobat Pro DC 2021 for Mac(专业PDF编辑软件)

卓越的文档体验&#xff0c;随心掌控PDF。利用Adobe Acrobat&#xff0c;随时随地访问 PDF 。了解我们领先的PDF数字签名解决方案&#xff0c;快速处理PDF数字签批工作流程。同时&#xff0c;为个人或企业提供安全、高效的文档管理体验。测试环境&#xff1a;MacOS 11.2.2 注…