集成算法:Bagging模型、AdaBoost模型和Stacking模型

概述

目的:让机器学习效果更好,单个不行,集成多个
集成算法
Bagging:训练多个分类器取平均
f ( x ) = 1 / M ∑ m = 1 M f m ( x ) f(x)=1/M\sum^M_{m=1}{f_m(x)} f(x)=1/Mm=1Mfm(x)
Boosting:从弱学习器开始加强,通过加权来进行训练
F m ( x ) = F m − 1 ( x ) + a r g m i n h ∑ i = 1 n L ( y i , F m − 1 ( x i ) + h ( x i ) ) F_m(x)=F_{m-1}(x)+argmin_h\sum^n_{i=1}L(y_i,F_{m-1}(x_i)+h(x_i)) Fm(x)=Fm1(x)+argminhi=1nL(yi,Fm1(xi)+h(xi))
(加入一棵树,新的树更关注之前错误的例子)
Stacking:聚合多个分类或回归模型(可以分阶段来做)

Bagging模型(随机森林)

全称: bootstrap aggregation(说白了就是并行训练一堆分类器)
最典型的代表就是随机森林,现在Bagging模型基本上也是随机森林。
image.png
随机:数据采样随机,每棵树只用部分数据;数据有多个特征(属性)组成,每棵树随机选择部分特征。随机是为了使得每个分类器拥有明显差异性。
森林:很多个决策树并行放在一起
如何对所有树选择最终结果?分类的话可以采取少数服从多数,回归的话可以采用取平均值。

构造树模型

image.png
由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样。
树模型:
image.png

随机性

之所以要进行随机,是要保证泛化能力,如果树都一样,那就没意义了!
如下图所示,当每个弱分类器分类错误的样本各不相同时,则能得到一个效果优异的集成模型。
image.png

随机森林优势

它能够处理很高维度的数据,即数据拥有很多特征(属性),并且不用做特征选择(集成算法自动选择了重要的特征)。
在训练完后,它能够给出哪些feature比较重要。
image.png
可以进行可视化展示,便于分析。
容易做成并行化方法,速度比较快。
解答为什么随机森林能够给出哪些feature比较重要。
假如有四个分类器 A , B , C , D A,B,C,D A,B,C,D,他们对应关注(随机选择到)的属性为 a , b , c , d a,b,c,d a,b,c,d
A , B , C , D A,B,C,D A,B,C,D的结果并且按少服从多数(也可以去平均等决策策略)得到错误了 e r r o r 1 error_1 error1
之后我们给 B B B制作假数据,把之前真的数据结果打乱或者换成不合理的值,得到 B ′ B' B,之后
A , B ′ , C , D A,B',C,D A,B,C,D的结果并且按少服从多数(也可以去平均等决策策略)得到错误了 e r r o r 2 error_2 error2
如果 e r r o r 2 ≈ e r r o r 1 error_2\approx error_1 error2error1,则说明属性 B B B并不重要。
如果 e r r o r 2 ≫ e r r o r 1 error_2 \gg error_1 error2error1,则说明属性 B B B非常重要,对结果造成了巨大影响。

关于树的个数

image.png
理论上越多的树效果会越好,但实际上基本超过一定数量就差不多上下浮动了。

Boosting模型(提升算法模型)

概述:
F m ( x ) = F m − 1 ( x ) + a r g m i n h ∑ i = 1 n L ( y i , F m − 1 ( x i ) + h ( x i ) ) F_m(x)=F_{m-1}(x)+argmin_h\sum^n_{i=1}L(y_i,F_{m-1}(x_i)+h(x_i)) Fm(x)=Fm1(x)+argminhi=1nL(yi,Fm1(xi)+h(xi))
假如有三个分类器 A , B , C A,B,C A,B,C,这个时候正如公式所示, A , B , C A,B,C A,B,C有种串联的感觉。
假如有1000条数据, A A A仅分类正确900条,之后 B B B就关注错误的100条数据,仅那100条作为数据预测(这个做法有点极端,也可以拿小部分900条里面的数据),之后 B B B正确预测出50条,那么 C C C就那拿剩下的50条错误的数据用来给 C C C预测。
典型代表: AdaBoost, Xgboost

AdaBoost模型

Adaboost会根据前一次的分类效果调整数据权重,如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重
最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合并结果。
Adaboost工作流程
每一次切一刀,最终合在一起,弱分类器效果就更好了
image.png

Stacking模型

堆叠:很暴力,拿来一堆分类器直接上
可以堆叠各种各样的分类器( KNN,SVM,RF等等)
为了刷结果,不择手段!
分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练
image.png
堆叠在一起确实能使得准确率提升,但是速度是个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/21123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

插入排序以及希尔排序; 先学会插入,希尔会更简单喔

1.前言 首先肯定是要学会插入排序再学习希尔排序会更简单,因为代码部分有很多相似之处;如果你觉得你很强,可以直接看希尔排序的讲解。哈哈哈!,每天进步一点点,和昨天的自己比 2.插入排序 让我们先来看看…

鸿蒙Ability Kit(程序框架服务)【UIAbility组件与UI的数据同步】

UIAbility组件与UI的数据同步 基于当前的应用模型,可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 [使用EventHub进行数据通信]:在基类Context中提供了EventHub对象,可以通过发布订阅方式来实现事件的传递。在事件传递前&am…

Rustdesk 自建服务器教程

一、环境 阿里云轻量服务器、debian11 系统 二、服务端搭建 2.1、开放防火墙指定端口 TCP(21115, 21116, 21117, 21118, 21119)UDP(21116) 2.2、安装 rustdesk 服务器文件 在 github 下载页https://github.com/rustdesk/rustdesk-server/releases/,下载 rustde…

【自撰写,国际象棋入门】第1课、棋盘和棋子

第1课 棋盘和棋子 一、国际象棋的棋盘 国际象棋的棋盘为一8乘8的黑、白格相间的棋盘,8条竖线的编号分别为A-H,8条横线的编号分别为1-8,在记谱时用竖线编号横线编号的方式表示棋盘上的格子,例如a1格、h8格等.棋盘上有几条重要的大…

c++程序员为什么要做自己的底层库

五一期间,在家里翻到之前上学时候用的电脑和工作日志,粗略浏览一番,感慨10年岁月蹉跎,仍然没有找到自己技术方向的“道”。遂有感而发,写下此文。 算起来,接触软件开发也有10年时间了,最开始是…

Java——异常

1.什么是异常 将程序执行过程中发生的不正常行为称为异常。 常见的异常有:算数异常,空指针异常,数组越界异常 每一种异常都有对应的类对齐描述 为了对每一种异常进行管理,Java内部实现了一个对异常的体系结构 1. Throwable&#x…

CS2游戏30万挂箱账号被封,饰品市场要变天

Steam游戏平台上CS2的玩家在线人数常年位于第一位,即便偶尔会被爆款游戏挤下来,但一切都是暂时的。饰品交易作为CS2的重要组成部分,早已成为了维系游戏热度的不二法门。可相对应的,各种挂箱子的工作室及个人也孕育而生。 但近来V社…

【Docker学习】docker pull详细说明

docker pull是我们经常用到的一个命令。我们使用一些官方镜像,如MySql、Nginx等都需要用docker pull下载。不过不用的话,也可以。比如使用docker run,要是找不到镜像,会自动下载。 命令: docker image pull 描述&am…

Uniapp写一个简单的商品瀑布流界面+商品详情

最终效果: 整体内容比较简单,参考了一篇瀑布流文章和一篇商品详情文章随便修改整了下,主要是给想做这方便面的新人一个简单逻辑的展示(其实我也是第一次写这个emmm) 一.组件下载: uni-icon uni-goods-nav…

什么是ACP?

前言 ACP指的是应用程序控制平面,是微服务架构中的一个关键组成部分。它负责管理微服务架构中的各个微服务,包括服务发现和注册、负载均衡、服务路由、熔断和降级、配置管理等方面的功能。 A:可用性 所有请求都有响应。C:强一致…

[DDR5 Jedec 3-4] 模式寄存器 Mode Register MRR/MRW

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 1. 概念 模式寄存器用于定义各种操作模式。在初始化过程中,可以通过重新执行MRS命令来更改模式寄存器的内容。即使用户只想修改模式寄存器变量的一个子集,在发出MRS命令时也必须编程所有变量。 只有当所有ban…

现实残酷!存款百万只是少数人的游戏,普通家庭能存多少?

近期,网络上掀起了一股关于普通家庭终身存款上限的热烈讨论。一位网友通过简单的算术方式提出了一个假设:如果一对夫妻每年收入15万,并成功将6万存入银行,那么从25岁步入社会至60岁退休,他们理论上能积累到210万的存款…

Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)

前言 本来是想着写多表关系的,不过写了一半发现重复的部分太多了,想了想与其做一些重复性工作,不如把一些当时觉得抽象的东西记录一下,就当用一篇杂记完成专栏的最后一篇文章吧。 预加载 简单示例 预加载主要用于在多表关系中…

谷歌浏览器的平替,内置开挂神器,我已爱不释手!

油猴浏览器正式版是一款基于谷歌Chromium源码开发的浏览器,它集成了集成了强大的油猴扩展(Tampermonkey),使得用户可以轻松安装各种脚本,从而增强网页浏览体验。提供了一个更加个性化和高效的浏览体验。 油猴扩展&…

git使用流程

1.下载git 搜索下载 2.注册github账号(打开爬墙工具) 创建一个仓库 3.配置邮箱和密码 4.所以找一个文件夹 鼠标右键 选择 open Git Bash here(当前文件夹下打开命令行) 输入命令 配置用户名和邮箱 5.将建的仓库克隆下来 …

【JS实战案例汇总——不定时更新版】

一:转换时间案例 1 需求: 用户输入秒数,系统会自动将秒数转变为小时、分钟、秒,并且不满10的要在前面补零 2 算法: 小时:hour parseInt(总秒数/60/60%24) 分钟:minute parseInt(总秒数/60%60) 秒数:second pa…

测试基础09:缺陷(bug)生命周期、定位方式和管理规范

课程大纲 1、缺陷(bug)生命周期 2、缺陷(bug)提交规范 2.1 宗旨 简洁、清晰、可视化,减少沟通成本。 2.2 bug格式和内容 ① 标题:一级功能-二级功能-三级功能_(一句话描述bug:&…

---初始Linux---

一、认识计算机 计算机 硬件 软件 硬件:就是计算机系统中由电子、机械和光电元件等组成的各种物理装置的总称(CPU\GPU\...) 软件:是用户和计算机硬件之间及进行交流的工具 然而一个简单的计算机或者说基本的计算机就是有两大…

C++ A (1020) : 幂运算

文章目录 一、题目描述二、参考代码 一、题目描述 二、参考代码 #include<bits/stdc.h> using namespace std; typedef long long ll;void qq(ll a, ll b, ll m) {if (a 0) cout << 0 << endl;;ll out 1;a % m;while (b > 0){if (b & 1)//奇数的最…

lux和ffmpeg进行下载各大主流自媒体平台视频

1、lux下载&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1WjGbouL3KFTU6LeqZmACpA?pwdagpp 提取码&#xff1a;agpp 2、ffmpeg下载&#xff0c;跟lux放在同一个目录&#xff1b; 3、为lux、ffmpeg设置环境变量&#xff1b; 4、WINR&#xff0c;打开运行&#xff0…