当前位置: 首页 > news >正文

集成算法: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.lryc.cn/news/360906.html

相关文章:

  • DW怎么Python:探索Dreamweaver与Python的交织世界
  • 算法(十三)回溯算法---N皇后问题
  • 论文阅读:Correcting Motion Distortion for LIDAR HD-Map Localization
  • Git操作笔记
  • 使用Python进行数据分析的基本步骤
  • NGINX优化
  • 【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
  • 《Python学习》-- 实操篇一
  • C# 集合(二) —— List/Queue类
  • 【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC
  • 知乎x-zse-96、x-zse-81
  • 【Linux】Linux工具——yum,vim
  • ES 生命周期管理
  • 【JavaScript脚本宇宙】揭秘HTTP请求库:深入理解它们的特性与应用
  • 【强化学习】DPO(Direct Preference Optimization)算法学习笔记
  • vue3 todolist 简单例子
  • Linux项目编程必备武器!
  • AndroidStudio编译很慢问题解决
  • PHAR反序列化
  • Rust安装
  • 513.找树左下角的值
  • docker基础,docker安装mysql,docker安装Nginx,docker安装mq,docker基础命令
  • MyBatis二、搭建 MyBatis
  • 昵称生成器
  • mysql仿照find_in_set写了一个replace_in_set函数,英文逗号拼接字符串指定替换
  • 机械设计手册第一册:公差
  • 如何把图片保存成16位png格式?
  • vue 关闭页面前释放资源
  • 堡垒机,日志审计系统,行为管理,漏洞扫描的作用
  • JVM学习-自定义类加载器