机器学习基础(二十六)—— 将 SVM 推广到多类问题
有 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 推广到多类问题相关推荐
- 吴恩达机器学习(二十六) 数据压缩与可视化、PCA
文章目录 1.数据压缩 2.数据可视化 3.PCA 1.数据压缩 降维也是一种无监督学习的方法,降维并不需要使用数据的标签. 降维的其中一个目的是数据压缩,数据压缩不仅能够压缩数据,使用较少的 ...
- 机器学习知识点(二十六)概率图模型条件随机场CRF
1.先看概率图模型谱系,有其是MFR和CRF的关系: 这个图源自经典的文章<An Introduction to Conditional Random Fields> 地址:http:// ...
- 机器学习基础(十六)—— bootstrap
bootstrap:抽出来.记录下来.放回去 bootstrapping:一个统计工具,对同一份数据集,进行不同的重采样(re-sample)以模拟不同的数据集出来,避免了 cross-validat ...
- 机器学习(二十八)——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 ...
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- 零基础带你学习MySQL—foreign key 外键(二十六)
零基础带你学习MySQL-foreign key 外键(二十六) -- 外键演示 -- 创建 主表 my_class CREATE TABLE my_class ( id INT PRIMARY KE ...
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
- C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息)
C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中 ...
- C1认证学习二十六(基础选择器)
C1认证学习二十六(基础选择器) 任务背景 CSS选择器是CSS规则的一部分,用来指定需要设置的样式的HTML元素,通过选择器可以实现CSS对HTML元素一对一或者一对多或者多对一的控制了啦. 任务目 ...
- LINUX学习基础篇(二十六)swap分区
LINUX学习基础篇(二十六)swap分区 swap分区 查看swap分区大小 分配swap分区 格式化swap分区 增加swap分区 swap分区 Linux中的swap分区相当于Windows中的 ...
最新文章
- 【踩坑记录】记一次MySQL主从复制延迟的坑
- System.arraycopy 和Arrays.copyOf
- php 数学函数bc的使用(浮点数计算)
- 链路层的封装方式与IP选路 (二)
- Oracle表连接深入浅出
- shell linux教程,Shell入门基础知识
- C++ 类和对象成员特性
- md函数MySQL_MySQL的常用SQL语句.md
- idea错误提示不明显_微信公众号扫一扫功能提示:10003 redirect_uri域名与后台配置不一致错误解决方案...
- Java NIO学习篇之缓冲区Buffer详解
- 第九届蓝桥杯省赛C++A组第二题 ---星期一
- 2018-2019-1 20165319 《信息安全系统设计基础》第八周学习总结
- Android 课程表
- linux查看进程limits解释,linux中/etc/security/limits.conf配置文件说明
- 影集制作php源码_php 源码编译
- 如何判断长上影线是洗盘还是主力出货?
- 讯时网站管理系统通杀0DAY漏洞
- 大数据之clickhouse_clickhouse的基础介绍及基础使用
- Java高并发累加器Striped64
- Mybatis错误Illegal overloaded gette
热门文章
- 大数据可视化dataease(有所帮助)
- 新手开发记录:把ListView、Adapter的逻辑捋顺,做一个微博热搜吧
- localhost 拒绝了我们的连接请求。_Zipkin请求链路日志聚合
- android dialog动画_2020年GitHub 上那些优秀Android开源库,这里是Top10!
- 机器学习代码实战——拆分训练集与测试集(train_test_split)
- LeetCode 39. 组合总和(回溯+剪枝)
- Nvidia-Docker
- 安装caffe-yolov3时报错:ImportError: No module named torch(环境变量设置)
- OpenCV精进之路(八):图像轮廓和图像分割修复——轮廓查询和多边形包围轮廓
- java技术指标_使用 Micrometer 记录 Java 应用性能指标