4.系统学习-集成学习

news2024/12/27 10:26:57

集成学习

  • 前言
  • Bias and Variance
  • 过拟合(overfitting)与欠拟合(underfitting)
  • 集成学习为什么有效?
  • Blending 模型集成
  • Stakcing 模型集成
  • Bagging模型集成
  • Bagging 模型集成算法流程:
  • Boosting模型集成
  • 作业

前言

比赛中集成学习,但要用好模型集成可能并不是那么简单,本文将讨论讨论:

  1. 模型总体误差分解,过拟合,欠拟合
  2. 为什么集成学习能降低总体误差
  3. Blending
  4. Stacking
  5. Bagging
  6. Boosting

Bias and Variance

在这里插入图片描述
假设有训练数据集 D D D,包含样本点 ( x 1 , y 1 ) , … , ( x n , y n ) (x_1, y_1), \ldots, (x_n, y_n) (x1,y1),,(xn,yn)
存在一个带噪音的真实函数 y = f ( x ) + ϵ y = f(x) + \epsilon y=f(x)+ϵ,噪音 ϵ \epsilon ϵ 均值为 0 0 0,方差为 σ 2 \sigma^2 σ2,我们希望通过数据集 D D D 训练模型 f ^ ( x ; D ) \hat{f}(x; D) f^(x;D) 尽可能逼近真实函数 f f f,使得任意训练数据集以外的样本误差最小化,即最小化误差函数 MSE:

E D , ϵ [ ( y − f ^ ( x ; D ) ) 2 ] = ( Bias D [ f ^ ( x ; D ) ] ) 2 + Var D [ f ^ ( x ; D ) ] + σ 2 \mathbb{E}_{D,\epsilon}\left[(y - \hat{f}(x; D))^2\right] = \left(\text{Bias}_D\left[\hat{f}(x; D)\right]\right)^2 + \text{Var}_D\left[\hat{f}(x; D)\right] + \sigma^2 ED,ϵ[(yf^(x;D))2]=(BiasD[f^(x;D)])2+VarD[f^(x;D)]+σ2

where 偏差 (bias) 部分:

Bias D [ f ^ ( x ; D ) ] = E D [ f ^ ( x ; D ) ] − f ( x ) \text{Bias}_D\left[\hat{f}(x; D)\right] = \mathbb{E}_D\left[\hat{f}(x; D)\right] - f(x) BiasD[f^(x;D)]=ED[f^(x;D)]f(x)

and 方差 (variance) 部分:

Var D [ f ^ ( x ; D ) ] = E D [ ( E D [ f ^ ( x ; D ) ] − f ^ ( x ; D ) ) 2 ] . \text{Var}_D\left[\hat{f}(x; D)\right] = \mathbb{E}_D\left[\left(\mathbb{E}_D[\hat{f}(x; D)] - \hat{f}(x; D)\right)^2\right]. VarD[f^(x;D)]=ED[(ED[f^(x;D)]f^(x;D))2].
这里我们已经通过公式推导将目标函数分解成三项:

a) 偏差项 (bias) 是采用不同训练数据集 D D D 时,模型预测和真值的偏差,可以看成由不同的模型假设带来的误差。比如真实函数是一个非线性函数 f f f,而我们采用线性回归模型 f ^ \hat{f} f^ 进行建模,由于这一假设,估计我们的线性模型 f ^ \hat{f} f^ 将存在误差。通常越复杂的模型偏差更小,复杂模型的假设空间更大,对真实函数逼近能力更强,偏差更小。

b) 方差项 (variance) 为采用不同训练数据集 D D D 训练模型时,模型对同一个样本预测值的波动大小,通常越复杂的模型越敏感,这意味着采用不同数据训练的模型差异会很大,导致对同一个样本预测值的波动较大,即方差很大。

c) 为随机误差,无法预测。

过拟合(overfitting)与欠拟合(underfitting)

  1. Overfitting,当我们的模型太复杂(比如很深的决策树、非常多的特征工程、大型深度学习网络等),模型偏差较低,方差较大;
  2. Underfitting,当我们的模型太简单(线性回归、无特征工程、浅层感知机等),模型偏差较大,方差较小;过拟合和欠拟合都不是我们想要的模型状态,如下图所示,最好的状态时偏差和方差都处于比较小的均衡状态,这时候总体误差最小。
    在这里插入图片描述

集成学习为什么有效?

集成学习指建模时训练多个基模型,预测时候融合多个模型预测结果,降低总体误差的学习方法。集成学习方法有很多,总体上可以分为三类:Stacking,Bagging 及 Boosting.
在这里插入图片描述
降低模型方差

可以看出不管是哪种模型集成方法,都有一个共同特点:融合多个模型预测结果。由统计知识可知,多个独立同分布随机变量满足:

X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1,X2,,Xn 是独立同分布的,满足 E ( X i ) = μ , D ( X i ) = σ 2 , i = 1 , 2 , 3 , … , n E(X_i) = \mu, D(X_i) = \sigma^2, i = 1, 2, 3, \ldots, n E(Xi)=μ,D(Xi)=σ2,i=1,2,3,,n

则随机变量 X ‾ = 1 n ∑ i = 1 n X i \overline{X} = \frac{1}{n}\sum_{i=1}^n X_i X=n1i=1nXi,满足 E ( X ‾ ) = μ , D ( X ‾ ) = σ 2 n E(\overline{X}) = \mu, D(\overline{X}) = \frac{\sigma^2}{n} E(X)=μ,D(X)=nσ2

下证:

E ( X ‾ ) = E ( 1 n ∑ i = 1 n X i ) = 1 n ∑ i = 1 n E ( X i ) = 1 n ⋅ n μ = μ E(\overline{X}) = E\left(\frac{1}{n} \sum_{i=1}^n X_i\right) = \frac{1}{n} \sum_{i=1}^n E(X_i) = \frac{1}{n} \cdot n\mu = \mu E(X)=E(n1i=1nXi)=n1i=1nE(Xi)=n1nμ=μ

D ( X ‾ ) = D ( 1 n ∑ i = 1 n X i ) = 1 n 2 ∑ i = 1 n D ( X i ) = 1 n 2 ⋅ n σ 2 = σ 2 n D(\overline{X}) = D\left(\frac{1}{n} \sum_{i=1}^n X_i\right) = \frac{1}{n^2} \sum_{i=1}^n D(X_i) = \frac{1}{n^2} \cdot n \sigma^2 = \frac{\sigma^2}{n} D(X)=D(n1i=1nXi)=n21i=1nD(Xi)=n21nσ2=nσ2

其中随机变量的简单算术平均可以看成模型融合结果,只要不同模型预测结果满足独立同分布,模型预测方差将从原本的 σ 2 \sigma^2 σ2 变为 σ 2 n \frac{\sigma^2}{n} nσ2,大幅度降低了总体误差中的方差部分。当然这是最理想情况了,一般来说模型间都存在一定的相关性,相关性越弱,融合后预测方差越低。

因此在集成学习中,构造模型间的差异化是重中之重。在 bagging 中,我们通过采用不同的训练数据构造差异化。

降低模型偏差
在这里插入图片描述从上图可以看出,融合多个弱模型(相对概念,指复杂度比较低的模型),可以降低模型偏差,获得更高的模型精度。

Blending 模型集成

将数据划分为训练集和验证集
在这里插入图片描述

在这里插入图片描述

  1. 在训练集上训练模型(m1, m2, m3, …)

  2. 在验证集上预测,得到模型(m1, m2, m3, …)的预测结果

  3. 使用模型验证集预测结果作为特征,训练分类(例如逻辑回归)或回归(例如线性回归)模型,也可以人工指定权重,对模型(m1, m2, m3, …)的预测结果进行加权平均。例如在分类问题中将(m1, m2, m3, …)的预测概率进行加权,权重和为1。

Stakcing 模型集成

在这里插入图片描述
Stacking 模型集成方法和 Blending 方法非常类似,通过一个 meta model 对不同类别的基模型预测结果进行集成。Stacking 采用的基模型通常是不同种类的,算法流程如下:

  1. 将数据集划分成3部分:subset1, subset2, subset3。

  2. 在 subset1 上训练不同种类的基模型(比如:逻辑回归、决策树等)。

  3. 在 subset2 上,基模型进行预测

  4. 在 subset2 上,使用第3步中的预测结果作为输入,训练一个 meta 模型,通常 meta 模型我们尽量采用复杂度较低的简单模型,比如线性回归或逻辑回归,避免过拟合。

  5. 在 subset3 上,基模型进行预测,预测结果输入到 meta 模型进行预测,得到最终预测结果,测试模型精度。

Stacking 简化变体 Average / Weighted

很多时候,为了简化 stacking 模型集成或降低过拟合,我们不需要训练 meta 模型,可以直接将基模型预测值进行平均或加权平均即可。这时候我们的工作流变成:

  1. 将数据集划分成两部分:subset1 和 subset2。
  2. 在 subset1 上训练不同种类的基模型(比如:逻辑回归、决策树等)。
  3. 在 subset2 使用基模型进行预测,并对所有基模型预测的结果计算平均值(或进行加权平均)得到最终预测结果,测试模型精度。

如果采用加权平均,一般建议精度更高的模型更高的权重。例如有模型 A/B/C,精度模型 A > B > C,可以给予权重 A: 0.5, B: 0.3, C: 0.2。如果你不想调整权重而求最优权重,这时候可以等价于引入一个线性模型,在搜索线性模型参数时,来防止过拟合。这个时候建议采用完整 stacking 模型集成方案。

需要注意的是,在进行分类问题建模时通常进行概率融合。例如在使用逻辑回归进行分类时,使用 predict_proba 方法可以得到预测概率结果,预测结果为 N x 2 维度,2 为类别数量,分别代表输入样本和正确类别的概率。概率值融合后,使用 np.argmax(pred_result, axis=1) 即可得到每个样本最高概率的类别。

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :])
array([[9.8...e-01, 1.8...e-02, 1.4...e-08],
       [9.7...e-01, 2.8...e-02, 2.2...e-08]])
>>> clf.score(X, y)
0.97

Bagging模型集成

在这里插入图片描述

Bagging 模型集成算法流程:

  1. 通过 放回抽样 得到多个训练集
  2. 在不同的训练集上训练基模型(一般采用相同类型的模型)
  3. 对模型预测结果进行融合

一般的,我们将使用决策树作为基模型的 Bagging 集成学习方法叫做 随机森林,同时由于决策树本身是一种拟合能力比较强的模型,为了最大化模型差异化,在训练每棵决策树时进行特征采样,使得不同子模型使用的数据集不仅样本不同,同时使用的特征也不完全一致。在 sklearn 库中已经有成熟的随机森林实现,可以直接调用。

from sklearn.ensemble import RandomForestClassifier

RandomForestClassifier(
    n_estimators=100,
    max_depth=None,
    max_features='auto',
    max_leaf_nodes=None,
)

参数解释:

参数解释
n_estimators设置基模型数量
max_depth树的最大深度
max_features寻找最佳分割时要考虑的特征数量
max_leaf_nodes允许的最大叶子节点数量

随机森林的特点:

  1. 并行的集成框架,适合并行训练,训练速度快。
  2. 特征随机采样使得在样本特征维度很高的时候,仍然能有效的训练模型。
  3. 数据集随机采样 & 特征随机采样的引入,使得随机森林的基模型能构造较大的差异化,降低融合模型方差,提升泛化能力,避免过拟合。
  4. 因为 Bagging 主要降低模型方差,因此一般选择偏差较小的大型决策树(深度较深,叶子节点数量高)作为基模型,来平衡偏差和方差。

Boosting模型集成

与Bagging相反,Boosting采用串行的集成框架,常见的算法流程如下图所示:

  1. 从数据集中均匀采样一个子集
  2. 在子集上训练模型并对整个数据集进行预测
  3. 计算每个样本误差
  4. 根据误差大小对数据集样本赋权(误差越大,权重越大),并使用新的权重对数据集进行采样,得到一个新的子集
  5. 重复2~4,直到达到预设的迭代次数在这里插入图片描述
    Boosting集成学习通过迭代训练,逐步降低模型偏差,因此我们一般采用比较简单的基模型(浅层决策树),
    避免过拟合发生。
    sklearn已经实现了Boosting集成学习方法,可以通过
    sklearn.ensemble.AdaBoostClassifier直接调用,使用方法和参数与随机森林类似。
    Boosting模型集成特点:
  6. 串行集成方法,比较难并行化,速度较慢
  7. 能有效降低偏差,适合采用简单的基模型

作业

  1. 回答在进行平均融合时,基模型具有怎样的特点能够最大化提升模型性能?
  2. 在链接: Kaggle泰坦尼克竞赛中使用逻辑回归、决策数、随机森林建模,对模型预测概率采用加权平均的方式进行模型融合,观察融合效果,是否较单模型有提升

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

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

相关文章

电商项目高级篇07-redisson分布式锁

redisson分布式锁 1、引入maven依赖2、config类3、可重入锁设计 1、引入maven依赖 <!--引入redisson--><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.12.0</version></depend…

Nginx的性能分析与调优简介

Nginx的性能分析与调优简介 一、Nginx的用途二、Nginx负载均衡策略介绍与调优三、其他调优方式简介四、Nginx的性能监控 一、Nginx的用途 ‌Nginx是一种高性能的HTTP和反向代理服务器&#xff0c;最初作为HTTP服务器开发&#xff0c;主要用于服务静态内容如HTML文件、图像、视…

递归算法常见问题(Java)

问题&#xff1a;斐波那契数列,第1项和第2项都为1&#xff0c;后面每一项都为相邻的前俩项的和,求第n个数 解法&#xff1a;每一个数都为前俩个数之和&#xff0c;第1项和第2项都为1&#xff0c;所以写 方法f1(n)即为求第n个数&#xff0c;那么f1(n-1)为求第n-1个数&#xff0…

SpringBoot + HttpSession 自定义生成sessionId

SpringBoot HttpSession 自定义生成sessionId 业务场景实现方案 业务场景 最近在做用户登录过程中&#xff0c;由于默认ID是通过UUID创建的&#xff0c;缺乏足够的安全性&#xff0c;决定要自定义生成 sessionId。 实现方案 正常的获取session方法如下&#xff1a; HttpSe…

【流量、洪水数据下载】网站介绍和下载经验....不断更新!

EarthData 介绍 NASA:链接 数据下载 视频教程:Discover and Access Earth Science Data Using Earthdata Search 数据下载需要注册,已经被卡在邮箱验证上【2024-12-26】… Essential Climate Variables——【The Global Climate Observing System(GCOS) 介绍 其是支…

Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CI…

少儿编程在线培训系统:客户服务与学习支持

2.1 VUE技术 VUE它是由HTML代码&#xff0c;配上嵌入在HTML代码里面的Java代码组成的应用于服务器端的语言&#xff0c;使用VUE进行开发能够更加容易区分网页逻辑以及网页设计内容&#xff0c;让程序员开发思路更加清晰化&#xff0c;VUE在设计组件时&#xff0c;它是可以重用的…

流批一体向量化计算引擎 Flex 在蚂蚁的探索和实践

编者按&#xff1a;Flex是蚂蚁数据部自研的一款流批一体的向量化引擎&#xff0c;Flex是Fink和Velox的全称&#xff0c;也是Flexible的前缀&#xff0c;被赋予了灵活可插拔的寓意。本文将重点从向量化技术背景、Flex架构方案和未来规划三个方面展开论述。 作者介绍&#xff1a;…

upload-labs关卡记录11

先上传一个一句话木马试试&#xff0c;居然可以上传成功&#xff0c;复制图片链接&#xff0c;在另一个窗口打开&#xff1a; 会发现&#xff0c;我们明明上传的是shell.php&#xff0c;但是这里就是没有了php,这样我们在执行我们相关的语句的时候就无法执行了&#xff1a; 就…

WebRTC服务质量(08)- 重传机制(05) RTX机制

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…

借助 obdiag,让 OceanBase 参数和变量的对比更简单

本文将介绍 obdiag 工具中参数对比和变量对比功能的适用场景和试用方法。​​​​​​​ obdiag 参数和变量对比功能的适用场景 参数对比功能适用场景 不同observer对于同一参数允许配置不同的值&#xff0c;实际生产环境中&#xff0c;用户可能因多种原因在不同observer上为同…

Net9解决Spire.Pdf替换文字后,文件格式乱掉解决方法

官方文档 https://www.e-iceblue.com/Tutorials/Spire.PDF/Program-Guide/Text/Find-and-replace-text-on-PDF-document-in-C.html C# 在 PDF 中查找替换文本 原文件如下图&#xff0c;替换第一行的新编码&#xff0c;把41230441044替换为41230441000 替换代码如下&#xff…

VBA技术资料MF246:将工作表中形状复制到WORD文档

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

一次医院RIS系统的升级

2020-03-11 目录 数据库升级... 1 数据结构升级... 1 系统配置... 2 WEB服务器准备... 3 启动ASP.NET State Service服务... 3 检查IIS. 4 发布站点... 4 添加应用程序池... 4 发布网站... 5 处理打印模板... 6 web.config的配置... 6 处理图片文件目录... 6 修改W…

显示 Windows 任务栏

显示 Windows 任务栏 1. 取消勾选自动隐藏任务栏2. 重启 Windows 资源管理器References 1. 取消勾选自动隐藏任务栏 Windows 任务栏具有自动隐藏功能&#xff0c;不使用时自动隐藏&#xff0c;使用时显示。 鼠标右键单击桌面上的空白区域&#xff0c;个性化 -> 任务栏。不…

【Unity3D】Jobs、Burst并行计算裁剪Texture3D物体

版本&#xff1a;Unity2019.4.0f1 PackageManager下载Burst插件(1.2.3版本) 利用如下代码&#xff0c;生成一个Texture3D资源&#xff0c;它只能脚本生成&#xff0c;是一个32*32*32的立方体&#xff0c;导出路径记得改下&#xff0c;不然报错。 using UnityEditor; using Uni…

轻量级安全云存储方案Hoodik

什么是 Hoodik &#xff1f; Hoodik 是一款轻量级、安全且自托管的云存储解决方案。它采用 Rust 和 Vue 设计和构建&#xff0c;专注于端到端加密&#xff0c;保护您的数据免受窥探和黑客的侵害。Hoodik 支持文件上传和下载&#xff0c;让您可以轻松地与其他用户共享文件。简单…

[WASAPI]音频API:从Qt MultipleMedia走到WASAPI,相似与不同

[WASAPI] 从Qt MultipleMedia 来看WASAPI 最近在学习有关Windows上的音频驱动相关的知识&#xff0c;在正式开始说WASAPI之前&#xff0c;我想先说一说Qt的Multiple Media&#xff0c;为什么呢&#xff1f;因为Qt的MultipleMedia实际上是WASAPI的一层封装&#xff0c;它在是线…

Linux 大文件管理与 Hugging Face 模型下载实践:解决磁盘空间与大文件传输的全攻略20241226

Linux 大文件管理与 Hugging Face 模型下载实践&#xff1a;解决磁盘空间与大文件传输的全攻略 引言 在 Linux 系统中管理大文件是一项常见但不容忽视的任务&#xff0c;尤其是在处理复杂场景时&#xff0c;比如磁盘空间不足、断点续传下载模型文件、管理日志文件等。通过实际…

TOGAF之架构标准规范-业务架构

TOGAF标准规范中&#xff0c;业务架构阶段的主要工作是开发支持架构愿景的业务架构。 如上所示&#xff0c;业务架构&#xff08;Business Architecture&#xff09;在TOGAF标准规范中处于B阶段&#xff0c;该阶段的主要内容包括阶段目标、阶段输入、流程步骤、架构方法。 阶段…