补充:二分类器实现多分类 --- 一对一与一对多策略

文章目录

  • 前言
  • 一、一对多(One-vs-Rest, OvR)
    • 1 理论
    • 2 决策原则(这里给出的是SVM的,其他的二分类器也类似)
    • 2 简单代码演示
  • 二、 一对一(One-vs-One, OvO)
    • 1 理论
    • 2 决策原则(投票)
  • 3 简单代码演示
  • 总结


前言

我在大三刚接触到机器学习课程的时候,回归问题很自然就能跨过这个坎。但在分类这个问题上,遇到的疑问一个接一个,本博客就是为了解答我本科学习期间的一个二分类器的疑问所作出的解答。

刚开始学习机器学习时,我们学习的最简单的例子就是二分类的案例。这也就导致了我们学习了很多的二分类器,例如逻辑回归二分类器、支持向量机二分类器等等。当时我就一个疑问,那不是二分类问题怎么办,那这些二分类器就显得很作用受限,后来随着知识量的增多。我了解到这个问题有两种解决方案:
(1)用softmax回归进行多分类(其实是逻辑回归的推广)
该方法本质上是将二分类器 ----> 推广为 多分类器

(2)一对多(One-vs-Rest, OvR)或一对全(One-vs-All, OvA)
这种本质上训练多个二分类器组合进行多分类的方法我一直不明白其中的具体原理是什么,下面本博客就主要是这种特殊的多分类技术的详细说明 ---- 顺便说一下,在我写这篇博客的时候,以前的疑问自然就已经解决了才会开始写;所以读者不必担心看不懂。其实我当成为了这个问题找了一些网上资料,但都不是很满意,都写的很模糊,今天在这里给这种技术做一个详细的说明。
【注】:本文会以鸢尾花的多分类数据集用SVM二分类器进行演示。

支持向量机(Support Vector Machine, SVM)本质上是一个二分类模型,但是在实际应用中,往往需要处理多分类问题。为了解决多分类问题,可以将多个二分类SVM组合在一起。常用的两种策略是一下两种:

一、一对多(One-vs-Rest, OvR)

1 理论

这种方法也称为“二分之一”法。基本思路是将一个多分类问题拆解成多个二分类问题。具体步骤如下:

  • 假设有 K K K个类别。
  • 对于每个类别 k k k,训练一个二分类SVM来区分类别 k k k 和其他 K − 1 K-1 K1 个类别。即,每个SVM的目标是将该类别的数据点与所有其他类别的数据点分开。并规定 k k k类为正类,其他 K − 1 K-1 K1 个类别为负类。
  • 对于每个类别 k k k,标记为1,如果是该类别的数据点,否则标记为-1。
  • 最终,训练 K K K个二分类SVM。

2 决策原则(这里给出的是SVM的,其他的二分类器也类似)

在预测时,将输入数据点输入到所有 K K K 个分类器中,选择得分最高的分类器对应的类别作为最终预测结果。
这句话怎么理解,这个得分究竟怎么计算的,我一直有一个疑惑,没关系,下面给出详细解释:
得分最高分类器的理解:
在“一对多”(One-vs-Rest, OvR)策略中,“得分最高的分类器”是指在预测过程中,将输入数据点送入每个分类器后,选择输出得分最高的那个分类器对应的类别作为最终的预测结果。为了更好地理解这一过程,我们可以深入探讨以下几个关键点:

(1) 一对多策略的分类器得分
在一对多策略中,对于一个 K K K类问题,我们会训练 K K K个二分类支持向量机(SVM)。每个SVM k k k的任务是区分类别 k k k 和其他所有类别。训练过程中,类别 k k k的数据点被标记为正类(+1),而其他类别的数据点被标记为负类(-1)。
每个分类器在预测时会计算一个决策函数值或得分,表示该数据点属于正类的程度。这个得分可以理解为到分类平面的距离(考虑符号)。

(2) 决策函数值的含义
对于SVM,决策函数 f ( x ) f(x) f(x) 的值可以表示输入数据点 x x x 到分类超平面的距离。通常,正的得分表示数据点更接近于正类,负的得分表示更接近于负类。决策函数的值越大,模型越自信该数据点属于正类。
例如,对于一个数据点 x x x,SVM的决策函数值 f k ( x ) f_k(x) fk(x)可以用来表示数据点 x x

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Matlab|【免费】含氢气氨气综合能源系统优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序参考《_基于氨储能技术的电转氨耦合风–光–火综合能源系统双层优化调度》模型,对制氨工厂、风力发电、电制氢、燃气轮机、火电机组等主体进行建模分析,以火电机组启停成本、煤耗…

尚硅谷vue2的todolist案例解析,基本概括了vue2所有知识点,结尾有具体代码,复制粘贴学习即可

脚手架搭建 1-初始化脚手架(全局安装) npm install -g vue/cli2-切换到创建项目的空目录下 vue create xxxx整体结构 整体思路 App定义所有回调方法 增删改查 还有统一存放最终数据,所有子组件不拿数据,由App下发数据&#xf…

Spring Boot 集成 H2 数据库

1. 引言 Spring Boot 以其简洁的配置和快速开发能力,成为现代微服务架构的首选框架之一。而H2数据库作为一个轻量级的内存数据库,非常适合开发阶段作为嵌入式数据库进行单元测试和功能验证。本文将手把手教你如何在Spring Boot项目中集成H2数据库&#…

Mybatis 到 MyBatisPlus

Mybatis 到 MyBatisPlus Mybatis MyBatis(官网:https://mybatis.org/mybatis-3/zh/index.html )是一款优秀的 持久层 (ORM)框架,用于简化JDBC的开发。是 Apache的一个开源项目iBatis,2010年这…

DC/AC电源模块一种效率与可靠性兼备的能源转换解决方案

DC/AC电源模块都是一种效率与可靠性兼备的能源转换解决方案 DC/AC电源模块是一种能够将直流电源(DC)转换为交流电源(AC)的设备。它在现代电子设备中扮演着非常重要的角色,因为许多设备需要交流电源才能正常运行。无论…

VS Code修改菜单栏字体大小

修改方法 打开VS Code,快捷键 CtrlShiftP,在弹出的输入框中输入 setting,找到带有JSON的一项,如图所示: 原文链接 window.zoomLevel 前后变化 终端字体大小 File -> Preferences -> Settings -> Features…

云计算运维工程师的突发状况处理

云计算运维工程师在应对突发的故障和紧急情况时,需要采取一系列迅速而有效的措施来最小化服务中断的时间并恢复系统的稳定性。 以下是一些关键步骤和策略: 快速响应: 立即识别并确认故障的性质和范围。通知团队成员和相关的利益相关者,确保所有人了解当前情况。故障诊断:…

迅为iTOP-2K1000开发板龙芯中科国产64位Loognix主板

硬件配置 国产龙芯处理器,双核64位系统,板载2G DDR3内存,流畅运行Busybox、Buildroot、Loognix、QT5.12 系统! 接口全板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、GPS接口WIF1、蓝牙、Mini H…

环路滤波器

块效应产生的原因 块效应指视频边界不连续的变化,我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact)。 造成这种现象的主要原因有两点: DCT量化误差导致运动补偿导致…

工业网关的功能与作用解析-天拓四方

在工业4.0和智能制造的时代背景下,工业网关作为连接现场设备与云端平台的桥梁,正发挥着日益重要的作用。它不仅为工业设备的远程监控和管理提供了可能,还为企业实现数字化转型和智能化升级提供了有力支持。本文将对工业网关的功能与作用进行解…

深入理解PHP命名空间

在PHP项目中,命名空间(namespace)是一个非常重要的特性。它不仅帮助开发者组织代码,还能避免类、函数、常量等命名冲突问题。本文将详细介绍PHP命名空间的概念、使用方法和最佳实践。 一、什么是命名空间? 命名空间…

【PyQt5】一文向您详细介绍 setContentsMargins() 的作用

【PyQt5】一文向您详细介绍 setContentsMargins() 的作用 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通…

EWM学习之旅-1-EWM100

系统学习一个业务模块已经变得越来越重要,开始吧,EWM! EWM的Learning Journey中包括7本 ebook,100/110/115/120/125/130/140,一本一本的啃吧,相信很多内容是重复的。 EWM100很适合初学者,了解概念术语&…

charles破解

一、Charles官网下载安装包二、安装charles三、charles破解 一、Charles官网下载安装包 根据自己电脑系统 官网下载即可。 链接: https://www.charlesproxy.com/download/latest-release/ 二、安装charles 点击下载的安装包,然后进行安装。 三、charles破解 打…

[解决方案]使用微软拼音打中文卡顿到离谱

去这里看,发现有65535个文件,基本都是临时文件。删除后测试了一下,不会卡顿了但是只要打中文还是会疯狂生成tmp临时文件。 问题:输入法不兼容 解决方案 先把上面那个文件夹里的tmp文件全删了 直接点是,其他的文件会…

BEVM基于OP-Stack发布首个以WBTC为GAS连接以太坊和比特币生态的中继链

为了更好的连接以太坊和比特币生态,BEVM团队正在基于OPtimism的OP Stack来构建一个以WBTC为GAS兼容OP-Rollup的中继链,这条中继链将作为一种完全去中心化的中间层,把以太坊上的主流资产(WBTC/ ETH/USDC/USDT等)引入到BEVM网络。 不仅如此&am…

3.优化算法之二分查找1

二分查找简介 1.特点 最简单最恶心,细节最多,最容易写出死循环的算法 2.学习中的侧重点 1)算法原理 数组有序的情况 2) 模板 不要死记硬背 ->理解之后再记忆 1.朴素的二分模板 2.查找左边界的二分模板 3.查找右边界的二分模板 …

同步时钟系统为何能成为机场时间管理的好伙伴?

在机场这个分秒必争的环境中,精准的时间管理至关重要。同步时钟系统的出现,成为了机场时间管理的得力助手,为机场的高效运行和服务质量的提升发挥了关键作用。 一、同步时钟系统简介 同步时钟系统是一种通过网络技术实现时间同步的高精度计时…

python3使用ast.parse详解

使用ast库分析python3脚本, 并对脚本进行一些处理, 比如注释pirnt语句 一.基础知识 官方网址连接 ast — Abstract Syntax Trees ast库可以方便的分析python代码结构, 并做一些处理, 很适合对大量脚本文件做批量处理, 比如把print语句全部注释等. 直观的打印出代码结构 impo…

洞察用户需求,Xinstall数据统计App让你的App运营如虎添翼

在互联网时代,App推广和运营面临着前所未有的挑战。流量红利逐渐衰退,用户获取成本不断攀升,如何确保在多变的互联网环境下,迅速搭建起能时刻满足用户需求的运营体系,成为众多企业急待解决的问题。今天,我们…