有 3 种常用的策略可用于推广 SVM 解决多类问题,下面以一个 4 类问题为例进行说明。

1. 一对多的最大响应策略(one against all)

假设有 A、B、C、D 四类样本需要划分。在抽取训练集的时候,分别按照如下四种方式划分。(可见有多少类别,就对应多少中训练集的划分)

  • (1)A 所对应的样本特征向量为正集(类标签为 +1),B、C、D 所对应的样本特征向量为负集(类标签为 -1);{ A, { B、C、D } }
  • (2)B 所对应的样本特征向量为正集,A、C、D 所对应的样本特征向量为负集;{ B, {A, C, D}}
  • (3)C 所对应的样本特征向量为正集,A、B、D 所对应的样本特征向量为负集;{ C, { A, B, D} }
  • (4)D 所对应的样本特征向量作为正集,A、B、C 所对应的样本特征向量作为负集;{ D, { A, B, C }}

对上述 4 个训练集分别进行训练,得到 4 个 SVM 分类器。在测试的时候,把未知类别的测试样本 x\mathbf x 分别送入这四个分类器进行判决,最后每个分类器都有 1 个响应,分别为 f1(x)f_1(\mathbf x)、f2(x)f_2(\mathbf x)、f3(x)f_3(\mathbf x)、f4(x)f_4(\mathbf x),最终的决策结果为 max(f1(x),f2(x),f3(x),f4(x))\max \left ( f_1(\mathbf x),f_2(\mathbf x), f_3(\mathbf x), f_4(\mathbf x)\right ),即四个响应中的最大值。

注意这里说的响应是指决策函数 h(x)=sign(w⋅ϕ(x)+b)h(\mathbf x)=\text{sign}\left (\mathbf w\cdot\phi(\mathbf x)+b\right) 在符号化之前的输出 f(x)=w⋅ϕ(x)+bf(\mathbf x)=\mathbf w\cdot \phi(\mathbf x)+b,h(x)h(\mathbf x) 表示 x\mathbf x 位于分割超平面的哪一侧,只反映了 x\mathbf x 的类别,而 f(x)f(\mathbf x) 还能体现出 x\mathbf x 与分割超平面的距离远近(绝对值越大越远),因此它能反映出样本 x\mathbf x 属于某一类别的置信度。

例如,同样位于分割超平面正侧的两个样本,显然更加远离超平面的样本是正例的可信度比较大,而紧贴着超平面的样本则很有可能跨过分割超平面的一个反例。

2. 一对一的投票策略(one against one with voting)

将 A、B、C、D 四类样本两类两类地((42)=6\binom 42=6)组成训练集,即 (A,B),(A,C),(A,D),(B,C),(B,D),(C,D)(A, B), (A,C),(A,D),(B,C),(B,D),(C,D) 得到 6 个 SVM 二分类器。在测试的时候,把测试样本 x\mathbf x 依次送入这 6 个二分类器,采取投票形式,最后得到一组结果。投票是以如下方式进行的:

  • (1)初始化:vote(A) = vote(B) = vote(C) = vote(D) = 0
  • (2)投票过程:

    • 如果使用训练集 (A, B) 得到的分类器将 x\mathbf x 判定为 A,++vote(A),否则++vote(B)
    • 如果使用 (A,C) 训练的分类器将 x\mathbf x 判定为 A 类,则 ++vote(A),否则 ++vote(C)
    • ….
  • (3)判决结果:max(vote(A), vote(B), vote(C), vote(D))

如果有两个以上的最大值,则一般地可将简单地取第一个最大值对应的类别。

3. 一对一的淘汰策略(one against one with eliminating)

这是文献:

王宏漫,欧宗瑛. 采用 PCA/ICA 特征和 SVM 分类的人脸识别。计算机辅助设计和图形学学报.2003.15(4):416-420.

中专门针对 SVM 提出的一种多类推广策略,实际上它也适用于所有可以提供分类器置信度信息的二分器。该方法同样基于 1 对 1 判别策略解决多类问题,对于本节的 4 类问题,需训练 6 个分类器:(A, B), (A, C), (A, D), (B, C), (B, D), (C, D)。

显然,对于这四类中的任意一类,如 A 类中的某一样本,就可由 (A, B), (A, C), (A, D) 这三个分类器的任意一个来识别,即判别函数间存在冗余。于是将这些分类器的置信度按从到小排序,置信度越大表示此二分器分类的结果越可靠,反之则有可能出现误判。

对这 6 个分类器按其置信度由大到小表示此二分器排序并分别编号,假设为:
1#(A, C), 2#(A, B), 3#(A, D), 4#(B, D), 5#(C, D), 6#(B, C)。

此时,判别过程如下:

  • (1)设备识别对象为 x\mathbf x,首先由 1# 判别函数进行识别。若判别函数 h(x)=+1h(\mathbf x)=+1,则结果为类型 A,所有关于类型 C 的判别函数均被淘汰;若判别函数 h(x)=−1h(\mathbf x)=-1,则结果类型为 C,所有关于类型 A 的判别函数均被淘汰;若判别函数 h(x)=0h(\mathbf x)=0,为“拒绝决策”的情形,则直接选用 2# 判别函数进行识别。本例,假设结果类型为 C,则所剩判别函数分别为 4#(B, D), 5#(C,D), 6#(B, C)

  • (2)被识别对象 x\mathbf x 再由 4# 判别函数进行识别。如结果为+1,则淘汰所有关于 DD 类的判别函数,则所剩判别函数为 6#(B,C)。

  • (3)被识别对象 x\mathbf x 再由 6# 判别函数进行识别,若得到的结果为类型 +1,则可判定最终的分类结果为 B。

那么,如何表示置信度呢?对于SVM而言,分割超平面的分类间隔越大,就说明两类样本越容易分开,表明了问题本身较好的可分性。因此可以用各个 SVM 二分器的分类间隔大小作为其置信度。

机器学习基础(二十六)—— 将 SVM 推广到多类问题相关推荐

  1. 吴恩达机器学习(二十六) 数据压缩与可视化、PCA

    文章目录 1.数据压缩 2.数据可视化 3.PCA 1.数据压缩   降维也是一种无监督学习的方法,降维并不需要使用数据的标签.   降维的其中一个目的是数据压缩,数据压缩不仅能够压缩数据,使用较少的 ...

  2. 机器学习知识点(二十六)概率图模型条件随机场CRF

    1.先看概率图模型谱系,有其是MFR和CRF的关系: 这个图源自经典的文章<An Introduction to Conditional Random Fields> 地址:http:// ...

  3. 机器学习基础(十六)—— bootstrap

    bootstrap:抽出来.记录下来.放回去 bootstrapping:一个统计工具,对同一份数据集,进行不同的重采样(re-sample)以模拟不同的数据集出来,避免了 cross-validat ...

  4. 机器学习(二十八)——Monte-Carlo

    动态规划(续) Value Iteration vk+1(s)=maxa∈A(Ras+γ∑s′∈SPass′vk(s′))vk+1(s)=maxa∈A(Rsa+γ∑s′∈SPss′avk(s′)) v ...

  5. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  6. 零基础带你学习MySQL—foreign key 外键(二十六)

    零基础带你学习MySQL-foreign key 外键(二十六) -- 外键演示 -- 创建 主表 my_class CREATE TABLE my_class ( id INT PRIMARY KE ...

  7. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...

  8. C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息)

    C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中 ...

  9. C1认证学习二十六(基础选择器)

    C1认证学习二十六(基础选择器) 任务背景 CSS选择器是CSS规则的一部分,用来指定需要设置的样式的HTML元素,通过选择器可以实现CSS对HTML元素一对一或者一对多或者多对一的控制了啦. 任务目 ...

  10. LINUX学习基础篇(二十六)swap分区

    LINUX学习基础篇(二十六)swap分区 swap分区 查看swap分区大小 分配swap分区 格式化swap分区 增加swap分区 swap分区 Linux中的swap分区相当于Windows中的 ...

最新文章

  1. 【踩坑记录】记一次MySQL主从复制延迟的坑
  2. System.arraycopy 和Arrays.copyOf
  3. php 数学函数bc的使用(浮点数计算)
  4. 链路层的封装方式与IP选路 (二)
  5. Oracle表连接深入浅出
  6. shell linux教程,Shell入门基础知识
  7. C++ 类和对象成员特性
  8. md函数MySQL_MySQL的常用SQL语句.md
  9. idea错误提示不明显_微信公众号扫一扫功能提示:10003 redirect_uri域名与后台配置不一致错误解决方案...
  10. Java NIO学习篇之缓冲区Buffer详解
  11. 第九届蓝桥杯省赛C++A组第二题 ---星期一
  12. 2018-2019-1 20165319 《信息安全系统设计基础》第八周学习总结
  13. Android 课程表
  14. linux查看进程limits解释,linux中/etc/security/limits.conf配置文件说明
  15. 影集制作php源码_php 源码编译
  16. 如何判断长上影线是洗盘还是主力出货?
  17. 讯时网站管理系统通杀0DAY漏洞
  18. 大数据之clickhouse_clickhouse的基础介绍及基础使用
  19. Java高并发累加器Striped64
  20. Mybatis错误Illegal overloaded gette

热门文章

  1. 大数据可视化dataease(有所帮助)
  2. 新手开发记录:把ListView、Adapter的逻辑捋顺,做一个微博热搜吧
  3. localhost 拒绝了我们的连接请求。_Zipkin请求链路日志聚合
  4. android dialog动画_2020年GitHub 上那些优秀Android开源库,这里是Top10!
  5. 机器学习代码实战——拆分训练集与测试集(train_test_split)
  6. LeetCode 39. 组合总和(回溯+剪枝)
  7. Nvidia-Docker
  8. 安装caffe-yolov3时报错:ImportError: No module named torch(环境变量设置)
  9. OpenCV精进之路(八):图像轮廓和图像分割修复——轮廓查询和多边形包围轮廓
  10. java技术指标_使用 Micrometer 记录 Java 应用性能指标