实战07- 模型融合:利用AdaBoost元算法提高分类性能

2024-06-04 20:32

本文主要是介绍实战07- 模型融合:利用AdaBoost元算法提高分类性能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

元算法(meta-algorithm)是对其他算法进行组合的一种方式,即模型融合。

模型融合主要分为三种:BaggingBoosting和Stacking。
思想:将弱分类器融合成强分类器,融合后比最强的弱分类器更好。
视频导学:https://www.bilibili.com/video/BV1y4411g7ia?p=8
参考:

  • https://www.cnblogs.com/hithink/p/6424508.html
    https://www.cnblogs.com/rongyux/p/5621854.html
    注释https://www.cnblogs.com/zy230530/p/6909288.html

单层决策树(decision stump)分类器 -> 运用Adaboost -》 处理非均衡分类问题。

7.1 基于数据集多重抽样的分类器

多种分类器的组合成为集成方法(ensemble method)或者元算法(meta-algorithm)。集成方式包括:不同算法集成、同一算法不同设置的集成、数据集不同部分分配给不同的分类器的集成。

bagging:基于数据随机重抽样的分类器构建方法
· 自举汇聚法(bootstrap aggregating),也称为bagging方法。
· 各分类器权重相同
· 并行预测
· 有放回抽取得到S个数据集
· 代表方法:随机森林(random forest)

boosting: 关注被已有分类器错分的数据来获得新的分类器。
· 基于所有分类器 结果的加权求和
· 各分类器权重不相同
· 串行顺序预测
· 同一数据集
· 分类器的权重对应于上一轮迭代中的成功度
· 代表方法:AdaBoost, GBDT, XGBoost.

7.2 训练算法:基于错误提升分类器的性能

AdaBoost为例

即 adaptive boosting,自适应boosting。
训练数据中的每个样本,赋予了一个权重,这些权重构成了向量 D D D;
为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器分配了一个权重值 α \alpha α, 这些 α \alpha α值基于每个弱分类器的错误率。

  1. 在每一轮如何改变训练数据的权值或者概率分布?
    提高错分样本的权值,减少分对样本的权值。( D D D)

  2. 通过什么方式组合弱分类器?
    通过加法模型将弱分类器进行线性组合,比如adaboost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器权值。( α \alpha α)
    分类正确的样本,权重更改为: D i t + 1 = D i ( t ) e − α S u m ( D ) D_i^{t+1} = \frac{D_i^{(t)} e^{-\alpha}}{Sum(D)} Dit+1=Sum(D)Di(t)eα
    分类错误的样本,权重更改为: D i t + 1 = D i ( t ) e α S u m ( D ) D_i^{t+1} = \frac{D_i^{(t)} e^{\alpha}}{Sum(D)} Dit+1=Sum(D)Di(t)eα
    可统一为: D i t + 1 = D i ( t ) e − α y t h t S u m ( D ) D_i^{t+1} = \frac{D_i^{(t)} e^{-\alpha y_t h_t}}{Sum(D)} Dit+1=Sum(D)Di(t)eαytht, 预测结果 h t h_t ht是 +1 或 -1。

7.3 基于单层决策树构建弱分类器

单层决策树(decision stump,也称为决策树桩),仅基于单个特征来做决策,属于base algorithm。
三层循环:

  1. 针对每个特征,如x轴特征,y轴特征,每一列都是一种特征。
  2. 针对每个阈值 (步长),(rangeMax - rangeMin)/ numSteps
  3. 针对阈值下的每种情况,即不等式’lt’或者’gt’.

数组过滤: 通过比较predictedVals == labelMat两者是否相等,来赋0值。这里是想把预测错误的位置置为1, 正确置为0。 如此一来, 在后续统计总的error的时候可以直接用weightedError =D.T* errArr 或者更后面用matrix.sum()。最终得到字典、错误率、类别估计值。

7.4 完整AdaBoost算法的实现

基于单层决策树的训练过程,见P122.

numIt 指定迭代次数,这里相当于想要得到多少个相同类型的弱分类器。
m个样本,初始化每个样本的权重为 1/m
np.multiply(x,y)是对应位置相乘,这里 shape(x) == shape(y)
sign() 是符号函数。
观察输出可以看到,在D中,错误的样本权重会增大。

7.5 测试算法:基于AdaBoost的分类

输出类别的估计值乘上该单层决策树的 α \alpha α权重然后累加到aggClassEst上,作为最终结果。

7.6 示例:在一个难数据集上应用AdaBoost

检查数据, 确保标签是+1和-1
数据集默认最后一列是类别标签
是否过拟合?

7.7 非均衡分类问题

混淆矩阵(confusion matrix),不同类别的分类代价并不相等。
错误率: 指在所有测试样例中错分的样例比例。
正确率、召回率
ROC曲线与AUC
基于matplotlib绘图<1.0, 1.0>到<0, 0>

准确率accuracy 和 精确率 precision的区别
在这里插入图片描述

  1. 基于代价函数的分类器决策控制
  2. 欠抽样和过抽样——两种处理非均衡问题的数据抽样方法
    过采样的方法,如SOMTE和ADASYN算法,通常比欠采样效果好。

分类结果是标称值,回归结果是连续值。

下一篇: 利用回归预测数值型数据。

这篇关于实战07- 模型融合:利用AdaBoost元算法提高分类性能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031048

相关文章

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

Java慢查询排查与性能调优完整实战指南

《Java慢查询排查与性能调优完整实战指南》Java调优是一个广泛的话题,它涵盖了代码优化、内存管理、并发处理等多个方面,:本文主要介绍Java慢查询排查与性能调优的相关资料,文中通过代码介绍的非... 目录1. 事故全景:从告警到定位1.1 事故时间线1.2 关键指标异常1.3 排查工具链2. 深度剖析:

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1