SVM多分类问题

article/2025/9/7 17:19:38

SVM本身是一个二值分类器,SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器。
人生梦想实现家

1、直接法

:直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中。

以Weston在提出的多值分类算法为代表,在经典SVM理论的基础上重新构造多值分类模型通过SV方法对新模型的目标函数进行优化实现多值分类,它实际上是标准SVM中二次优化问题的一种自然的推广。

微信公众号:人生梦想实现家
在这里插入图片描述

2、间接法

:主要是通过组合多个二分类器来实现多分类器的构造。

2.1、一对多

在该分类方法中对n个类别仅需构造n个支持向量机‚每一个支持向量机分别将某一类的数据从其他类别中分离出来。在测试时‚取决策函数输出值最大的类别为测试样本的类别。其第i个SVM可通过解决下面的最优化问题得到。
在这里插入图片描述
例如:使用这三个训练集分别进行训练,然后的得到三个训练结果文件。在测试的时候,把对应的测试向量分别利用这三个训练结果文件进行测试。最后每个测试都有一个结果f1(x),f2(x),f3(x)。于是最终的结果便是这三个值中最大的一个作为分类结果。

在这里插入图片描述

2.2、基于决策树的SVMs

首先将所有类别分为两个类别,再将子类进一步划分为两个次级子类,如此循环下去,直到所有的节点都只包含一个单独的类别为止,此节点也是二叉树树种的叶子。该分类将原有的分类问题同样分解成了一系列的两类分类问题,其中两个子类间的分类函数采用SVM。如下图表示
在这里插入图片描述
在这里插入图片描述
注意:越上层节点的分类性能对整个分类模型的推广性影响越大. 因此,在生成二叉树的过程中, 应该让最易分割的类最早分割出来, 即在二叉树的上层节点处分割。

2.3、一对一

在该分类方法中各个类别之间构造分类器对n个类别共需构造n(n-1 )/2个分类器每个分类器函数的训练样本是相关的两个类,‚组合这些两类分类器并使用投票法,得票最多的类为样本点所属的类。具体的讲对第i类和第j类之间的分类器,我们通过解下面的最优化问题得到:
在这里插入图片描述
例如:假设有四类A,B,C,D四类。在训练的时候我们选择(A,B)、 (A,C)、(A,D)、(B,C)、(B,D)、(C,D)所对应的向量作为训练集,然后得到六个训练结果,在测试的时候,把对应的向量分别对六个结果进行测试,然后采取投票形式,最后得到一组结果。投票是这样的:

A=B=C=D=0; # 票数初始化
(A,B)-classifier 如果是A win,则A=A+1;otherwise, B=B+1;
(A,C)-classifier 如果是A win,则A=A+1;otherwise, C=C+1;(C,D)-classifier 如果是C win,则C=C+1;otherwise, D=D+1;
The decision is the Max(A,B,C,D)

2.4、纠错编码支持向量机

由1和0组成的一个码矩阵设为𝑀^𝑄𝑆其中Q为类别数S为待训练的分类器数当𝑚_𝑞𝑠= 1 ( 𝑚_𝑞𝑠 = 0)时表示此样本相对于第q类而言是作为正例(负例)来训练第s个分类器fs的。
工作分两步:训练和测试。在训练过程中依上述原则训练分类器f(x)= (f1(x)… fs(x))在测试过程中对于新例x计算分类器f(x)的输出向量与各类别向量的距离使其距离最小的类即为x所属的类。
在这里插入图片描述
例如:对于该样本分类时,10个SVM分类器的分类结果(0或1 )构成一个编码 s,计算码本内 7个编码与 s汉明距离,距离最小者所代表的类别即该测试样本所属类别。
在这里插入图片描述

可能有小伙伴会疑惑,用纠错编码SVM使用3次不就是可以分出8类了吗
在这里插入图片描述
但是,对于纠错编码SVM有以下使用约定(暂未找到证明)
在这里插入图片描述

2.5、有向无环图SVMs

包括 k ( k − 1 ) / 2 个节点和 k 个 ”叶“。其中每个节点为一个分类器,并与下一层的两个节点(或者叶)相连。当对一个未知样本进行分类时,首先从顶部的根节点开始,根据根节点的分类结果用下一层中的左节点或者右节点继续分类,知道到达底层某个叶为止,该叶所表示的类别即未知样本的类别。
在这里插入图片描述
微信公众号:人生梦想实现家
你好,很高兴遇见你,愿和你一起看最美的风景!


http://chatgpt.dhexx.cn/article/2YZTsrfQ.shtml

相关文章

《机器学习算法》SVM进行多分类及代码实现

最近做了一个工作就是对属性进行分类,然后用了不同的分类器,其中就用到了SVM,再次做一个总结。 1、什么是SVM? 对于这个点已经介绍的非常多了,不管是西瓜书还是各种博客,就是我们需要找到一个超平面&…

android uevent机制,安卓linux uevent内核上报机制实例

uevent可以实现内核通知上层的一种机制,最常见的电池状态的变化就是kernel uevent通知的,每次百分比或者其他的变化通过power_supply_changed通知上层update; 每个device下面都有kobj,找到device就可以通过kobject_uevent_env 通知android了; 以拔出T卡为例,内核通知上层。…

Linux设备模型剖析系列之二(uevent、sysfs)

CSDN链接: Linux设备模型剖析系列一(基本概念、kobject、kset、kobj_type) Linux设备模型剖析系列之二(uevent、sysfs) Linux设备模型剖析系列之三(device和device driver) Linux设备模型剖析系…

Linux下的uevent

查找linux的uevent节点(find /sys -name uevent),大概有1000多个,那这些节点是怎么实现的呢。 drivers/base/core.c 有如下代码,每创建一个device,都会创建一个event节点 static ssize_t uevent_show(struct device *dev, struc…

Android UEvent事件分析

1.背景概述 众所周知,在安卓系统中有状态栏,在插入外设的时候,会在顶部状态栏显示小图标。 比如,camera设备,耳机设备,U盘,以及电池等等。这些都需要在状态栏动态显示。 从上面这张图片可以看出这些设备都有自己的服务一直在跑,并且都是继承了UEventObserver.java这个…

嵌入式Linux——uevent机制:uevent原理分析

简介: 本文主要介绍uevent机制是什么,并通过代码分析使用uevent机制生成设备节点的过程。而本文将分为两部分,第一部分我们介绍一些预备知识和uevent的原理,而第二部分——通过代码介绍使用uevent机制创建设备节点。 Linux内核&am…

uevent机制:uevent原理分析

简介: 本文主要介绍uevent机制是什么,并通过代码分析使用uevent机制生成设备节点的过程。而本文将分为两部分,第一部分我们介绍一些预备知识和uevent的原理,而第二部分——通过代码介绍使用uevent机制创建设备节点。 声明&#…

900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!

公众号关注 “GitHubPorn” 设为 “星标”,每天带你逛 GitHub! 大家好,我是小 G。 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本&…

Leetcode中你的代码执行之后显示超出时间限制

Leetcode中但凡是你的代码执行之后显示超出时间限制 比如: 那么必定是你写的代码不够完善甚至是还存在错误!

升职加薪,必不可少!Python刷题打怪,你要的LeetCode答案都在这里了!

对于还不了解LeetCode的同学,那比较厉害了,估计离大厂还有一步距离! LeetCode,让程序员进阶的在线平台,找工作备战名企技术面试!(文末阅读原文到达学习平台) 本公众号之前陪伴了几期LeetCode的打卡之旅&…

LeetCode 96~100

前言 本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕布链接 96. 不同的二叉搜索树 题解 官方…

【下载】快速通过Python笔试?学大家一样先把LeetCode答案私藏了

如今学习python的同学越来越多了,也正是同学们秋招时期,去年分享了LeetCode答案后,已经有上百位同学找到小编开始实践这个平台。 LeetCode,让程序员进阶的在线平台,找工作备战名企技术面试!(文末阅读原文到…

面试失败总结,这 577 道 LeetCode 题 Java 版答案你值得拥有

去字节、美团、BAT 等大厂面试,刷 LeetCode 上的数据结构算法题是必修课。许多读者说,刷题的时候经常会遇到困难,想要找一本答案题解做参考。 下面分享几个用 Java 语言实现的开源 LeetCode 题解,也要感谢这些优秀的开源作者们&a…

LeetCode答案大全题(java版)

思路:查找时, 建立索引(Hash查找) 或进行排序(二分查找)。本题缓存可在找的过程中建立索引,故一个循环可以求出解(总是使用未 使用元素查找使用元素,可以保证每一对都被检…

LeetCode数据库题目汇总一(附答案)

1、基础SQL 数据表: dept: deptno(primary key), dname, loc emp: empno(primary key), ename, job, mgr(references emp(empno)), sal, deptno(references dept(deptno)) 1 列出emp表中各部门的部门号,最高工资,最低工资 select max(sal) as 最高工资,min(sal) as 最…

Leetcode各种题型题目+思路+代码(共176道题及答案)

文章目录 第一章:Leetcode 每日很多题 1、Leetcode-1047 删除字符串中的所有相邻重复项 2、剑指 Offer 53 - I. 在排序数组中查找数字 I 3、Leetcode704:二分查找 4、 Leetcode 227:基本计算器II 5、leetcode 224:基本计算器(带括号的计…

Leetcode Top100题目和答案(Java完整版 面试必备)

二刷完剑指Offer后又刷了一遍Leetcode Top 100专栏的题目,听说基本上能涵盖面试的算法题,总体来说收获还是很大的,下面贴出答案,又不懂的可以给我留言,博主会及时解答。 我的github 准备把春招复习的知识都整理到githu…

数据可视化-柱状图-dict结构MACARONS主题

from pyecharts.charts import Bar from pyecharts.faker import Faker from pyecharts.globals import ThemeTypec (Bar({"theme": ThemeType.MACARONS}).add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", F…

echarts图表主题--马卡龙macarons--自己配置主题颜色

用过echarts的人都几道,他的官网风格颜色对比强烈,这样儿式的: 大多时候和你的项目风格难免冲突,它有一些风格配置,我觉得马卡龙这个配色就很好: 当然,既然是配置项,肯定不止这一种…

若依vue --雷达图封装使用

大概效果: 如下 1:封装 <template><div :class"className" :style"{ height: height, width: width }" /> </template><script> import echarts from "echarts"; require("echarts/theme/macarons"); // e…