7 种模型加权集成方法

news2024/11/25 23:01:12

在这里插入图片描述# 7 种模型加权集成方法

不同任务 -> 不同加权方法

分类

  • 类别投票
  • 概率值加权

回归

  • 预测值加权

排序

  • 排序次序加权

目标检测

  • 预测结果NMS

语义分割

  • 像素类别投票
  • 加权

集成学习

考虑

  • 模型的多样性

    • 多样性不足 -> 最终预测结果和单个模型类似。
  • 模型的精度差异

    • 精度差异很大 -> 最终集成的效果也不会很好

Out of fold

中文:袋外预测

就是交叉验证

Blend操作

最常见的分类 & 回归任务的结果加权方法

方法1:均值加权

  • 原理

    • 对所有模型的预测结果计算均值;
  • 优点

    • 简单,过拟合可能性低;
  • 缺点

    • 会受到模型原始精度差异的影响;
  • 代码

oof_preds = []
for col in oofCols:
    oof_preds.append(oof_df[col])

y_avg = np.mean(np.array(oof_preds), axis=0)

方法2:权重加权

  • 原理

    • 对所有模型的预测结果加权求和;
  • 优点

    • 比均值更加可控;
  • 缺点

    • 权重需人工设置,更容易过拟合;
  • 代码

weights = [1,2,3]
y_wtavg = np.zeros(len(oof_df))

for wt, col in zip(weights, oofCols):
    y_wtavg += (wt*oof_df[col])

y_wtavg = y_wtavg / sum(weights)

方法3:排序加权

  • 原理

    • 预测结果进行排序

      • 使用次序代替原始取值
  • 优点

    • 适合分类任务
    • 对概率进行集成
  • 缺点

    • 会受到模型原始精度差异的影响
  • 代码

rankPreds = []
for i, col in enumerate(oofCols):
    rankPreds.append(oof_df[col].rank().values)

y_rankavg = np.mean(np.array(rankPreds), axis=0)

方法4:排序权重加权

  • 原理

    • 预测结果进行排序

      • 使用次序代替原始取值
  • 优点

    • 比均值更加可控;
  • 缺点

    • 权重需人工设置
    • 更容易过拟合
  • 代码

rankPreds = []
weights = [1,2,3]

for i, col in enumerate(oofCols):
    rankPreds.append(oof_df[col].rank().values * weights[i])


y_rankavg = np.mean(np.array(rankPreds), axis=0)

y_rankavg = np.mean(np.array(rankPreds), axis=0)

方法5:爬山法加权

  • 原理

    • 权重进行搜索
    • 保留最优的权重
  • 优点

    • 可以自动权重权重大小
  • 缺点

    • 更容易过拟合
  • 代码

for w1 in np.linspace(0, 1, 100):
  for w2 in np.linspace(0, w2, 100):
    w3 = 1 - w1 - w3
    
    如果 w1, w2, w3取得更好的精度,保留权重
    否则尝试下一组权重组合

方法6:线性回归加权

  • 原理

    • 使用线性回归确定权重
  • 优点

    • 可以自动权重权重大小
  • 缺点

    • 需要额外训练
    • 容易过拟合
  • 代码

from sklearn.linear_model import LinearRegression

lr = LinearRegression(fit_intercept=False)
lr.fit(
   三个模型对训练集预测结果,
   训练集标签
)

lr.coef_ # 线性回归的权重

方法7:参数优化加权

  • 原理

    • 使用优化方法搜索权重
  • 优点

    • 可以自动权重权重大小;
  • 缺点

    • 需要额外训练,容易过拟合;
  • 代码

def f(x):
    return x[0]**2 + x[1]**2 + (5 - x[0] - x[1])
    
from scipy import optimize
minimum = optimize.fmin(f, [1, 1])

参考文献

[1] https://mp.weixin.qq.com/s/a77kNwNCAsHCvnfpKUvQYQ

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

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

相关文章

基于MATLAB开发AUTOSAR软件应用层模块-part12.AUTOSAR Dictionary-3 AUTOSAR dictionary界面介绍

本篇我们讲解下AUTOSAR工具箱的Dictionary界面,以及如何使用Dictionary编辑AUTOSAR的元素。 初识界面 打开AUTOSAR Dictionary方式见下图, 点击这个按钮,打开界面, 上图就是AUTOSAR Dictionary的便捷界面 1)AtomicComponnet,是SWC软件组件,一个模型就对应一个

作业-12.12【写注释,QT项目和对象对象树模型】

将QT项目中每个文件的每行代码自行注释一遍 #项目过程管理文件 QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgets #所需的类库,超过4版本要加widgets CONFIG c11 #支持c11 # The following define makes your compiler emit warnings if you use…

MySQL 自定义函数一文读懂

MySQL函数 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1、提高代码的重用性 2、简化操作 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。 存储过程与函数区别: 存储过程:可以有0个返…

内部群炸锅了,同事又删库了

事件起因 我们的系统中有数据导入的功能,可以把特定的格式的excel数据导入到系统中来 由于客户电脑的文件比较多,很多文件的名字也比较相近,客户在导入excel时选错了文件 这个错误的excel文件的格式恰好能被系统解析,客户也没及…

【专栏】实践篇08| All in docker!动手搭建Redis集群

关注公众号:【离心计划】,一起逃离舒适圈 Redis专栏合集 【专栏】01| Redis夜的第一章 【专栏】基础篇02| Redis 旁路缓存的价值 【专栏】基础篇03| Redis 花样的数据结构 【专栏】基础篇04| Redis 该怎么保证数据不丢失(上&#xff09…

(附源码)Spring Boot的网上作业管理系统 毕业设计 612317

基于Spring Boot的网上作业管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现…

【正点原子FPGA连载】第三十三章OV5640摄像头HDMI显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第三十三章OV564…

02-Neo4j-CQL

02-Neo4j-CQL: 1、CQL简介 CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。 Neo4j CQL 它是Neo4j图形数据库的查询语言。它是一种声明性模式匹配语言它遵循SQL语法。它的语法是非常简单且人性化、可读的格式。 …

具有成本效益的深度信任网络的智能LEACH的多级动态优化(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 能量利用率是能量受限无线传感器网络(WSN)的关键属性,它直接影响网络的寿命。LEACH&#x…

C++入门篇之 注释语法什么写

📒博客主页: ​​开心档博客主页​​ 🎉欢迎关注🔎点赞👍收藏⭐留言📝 📌本文由开心档原创! 📆51CTO首发时间:🌴2022年12月12日🌴 ✉…

python+requests接口自动化测试框架实例详解教程

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的…

windows下Qt 5的安装与编译打包

环境与版本 操作系统:windows 10 Qt版本:5.14.2,最后一个有独立安装包的版本,下载地址:archive/qt/5.14/5.14.2 IDE:自带的qt-creator 4.11.1,也可以自行下载其他版本4.14.2,下载…

Mybatis实现增删改查

准备工作:建立项目,连接数据库MySQL,安装Mybatix插件 数据库代码准备: -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主键id int primary key auto_increment,…

itop3568开发板旋转uboot logo和内核logo

修改设备树 rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi 文件。如果配套的屏幕是 LVDS 7 寸屏幕或者 LVDS10.1 寸 1024*600 屏幕或者 LVDS10.1 寸 1280*800 屏幕,修改如下所示。 &route_lvds{ status "okay"; …

使用Postman+JMeter进行简单的接口测试

以前每次学习接口测试都是百度,查看相关人员的实战经验,没有结合自己公司项目接口真正具体情况。 这里简单分享一下公司项目Web平台的一个查询接口,我会使用2种工具Postman和JMeter如何对同一个接口做调试。 准备工作 首先,登录公…

GATK Germline_SNP_INDEL_2.0 分析遗传病(耳聋)

GATK Germline_SNP_INDEL_2.0 分析遗传病(耳聋) 一、本文是Gatk Germline spns-indels Pipeline 分析遗传病(耳聋)的升级版,目的是提供开箱即用的分析流程,尽可能简化部署和迁移。 更新内容如下: 人类参考基因组以及…

RTSP 媒体协议流的录制方案及其覆盖策略详解

前言 在安防和监控领域,RTSP 媒体协议流有很广泛的使用。本文将介绍一种针对 RTSP 媒体流的录制方案及其相应的覆盖策略。据我所知,声网的实时录制功能支持三种模式,分别是云端录制、本地服务端录制和页面录制,今天我们介绍的录制…

[基因遗传算法]进阶之六:VRP的进阶经典问题的解码如何写

文章目录一、CVRP二、MDCVRP2.1 解的编码分析2.2 代码2.3 分割展示三、VRPTW四、MDVRPTW4. 1 解的编码分析4.2 解的代码4.3 结果展示4. 4 MDVRPTW的计算适应度4.5 MDVRPTWd的结果展示图一、CVRP 见博文《[基因遗传算法]进阶之三:实践CVRP》 二、MDCVRP 参考资料:《Python实现…

Qt的场景图Scene Graph

叫场景树更合适,本质不是图。QML场景中的Qt Quick项目将填充QSGNode实例树。 场景图是Qt Quick 2.0引入的,建立在要绘制的内容是已知的基础上。所有QML项目均使用场景图进行渲染,场景图的默认实现是与OpenGL紧密相关的低级高性能渲染堆栈。 …

谈谈前端性能优化-面试版

前言 当我们去面试的时候,很大概率会被面试官问这么一个问题:你有尝试过对项目做性能优化吗?或者你了解哪些性能优化的方法?听到这个问题的你可能是这样的: 似曾相识但又说不清楚,往往只能零散地说出那么几…