SVM 实现多分类思路
svm 是针对二分类问题, 如果要进行多分类, 无非就是多训练几个svm呗
OVR (one versus rest)
对于k个类别(k>2) 的情况, 训练k个svm, 其中, 第j个svm用于判断任意条数据是是属于类别j还是非类别j.
预测的时候, 具有最大值的 \(w_i^Tx + bi\) 表示该样本属于类别i.
假设样本有 3个类别, A, B, C, 则需要训练3个svm, 记为s1, s2, s3
然后输出一个样本x, 都要经过 s1, s2, s3, 则为 max(s1(x), s2(x), s3(x)) 该类别
OVO (one versus one)
针对k个类别, 进行两两组合, 训练 k* (k-1) / 2 个svm, 每个svm 只用于判断样本是属于k中特定的两个类别.
预测的时候, 用 k * (k-1) / 2 个svm 做 K * (k-1) / 2 次预测, 用投票 的方式决定该样本是属于那个类别.
同样假设样本有3个类别 A, B, C, 则需训练 3 * (3-1) / 2 = 3 个支持向量机, 分别是SAB, SAC, SBC
然后输入一个样本x, 做3测预测,(AB, AC, BC) , 假设结果分别是: B, A, B 则最终为B类别
SVM 小结
特点
- 专注于找最优的分界线 (margin), 用于减少过拟合 (异常值不敏感, 只考虑支持向量)
- Kernel trick 的应用使得 SVM 能高效处理线性不可分的场景
优势
- 理论非常完美
- 凸优化及对偶(KKT)
- Max Margin
- SVM 目标函数
- SVM 对偶形式(lagrange)
- Slack SVM
- Kernel SVM
- 求解SVM 的SMO 算法
- 支持不同的Kernel 函数
劣势
- 当数量特别大的时候, 训练较慢
总体而言, 正如jerry大佬常谈的, 这种凸优化(对偶) , 核函数 这样的技术, 不仅仅只是用于SVM , 很多地方也都可以的呀. 我感觉SVM, 这算是我真正学到了一点, 硬核技术了.
SVM 实现多分类思路的更多相关文章
- 8.SVM用于多分类
从前面SVM学习中可以看出来,SVM是一种典型的两类分类器.而现实中要解决的问题,往往是多类的问题.如何由两类分类器得到多类分类器,就是一个值得研究的问题. 以文本分类为例,现成的方法有很多,其中一劳 ...
- SVM实现邮件分类
首先学习一下svm分类的使用. 主要有以下步骤: Loading and Visualizing Dataj Training Linear SVM Implementing Gaussian Ker ...
- SVM实现多分类的三种方案
SVM本身是一个二值分类器 SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器. 目前,构造SVM多类分类器的方法主要有两类 (1)直接法,直接在目标函数上进行修改,将 ...
- SVM处理多分类问题(one-versus-rest和one-versus-one的不同)
SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器. 目前,构造SVM多类分类器的方法主要有两类:一类是直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一 ...
- tensorflow实现svm iris二分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)
iris二分类 # Linear Support Vector Machine: Soft Margin # ---------------------------------- # # This f ...
- 【机器学习具体解释】SVM解二分类,多分类,及后验概率输出
转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN−勿在浮沙筑高台 支持向量机(Support Vecto ...
- Python-基于向量机SVM的文本分类
项目代码见 Github: 1.算法介绍 2.代码所用数据 详情参见http://qwone.com/~jason/20Newsgroups/ 文件结构 ├─doc_classification.py ...
- SVM处理多分类问题
"one-against-one" approach from sklearn import svm X = [[0], [1], [2], [3]] Y = [0, 1, 2, ...
- Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子
转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...
随机推荐
- Python面向对象 | isinstance和issubclass
isinstance(a,b):判断a是否是b类(或者b类的基类)实例化的对象 class A: pass class B(A): pass obj = B() print(isinstance(ob ...
- 10-day03-注释
Python注释 msg = “我爱你中国!” #单行注释使用 ''''''多行注释使用 print(msg) #this code is for >>>> ‘’‘print( ...
- 谈谈你对arguments的了解
arguments:函数的实参副本,它是一个类数组. 使用场景:只能在函数内调用,严格模式下不能用. 函数的形参个数:fn.length 函数的实参个数:arguments.length argume ...
- ASP.NET Core 简介
.NET Core 是 .NET Framework 的新一代版本,是微软开发的第一个具有跨平台 ( Windows.Mac OSX .Linux ) 能力的应用程序开发框 ASP.NET Core ...
- 解决github release下载慢/下载失败的问题
在使用github时,有时作者会在release中提供编译好的程序,以https://github.com/AkikoZ/alfred-web-search-suggest为例,是一个alfred3的 ...
- nmap 速查手册
0x00:说明 只是一个快速查询手册,理论的东西都没有补充,欢迎大家积极在评论区补充自己常用的参数,O(∩_∩)O 0x01:nmap功能介绍 1.主机存活检测2.端口探测3.服务识别4.操作系统识 ...
- glyphicons-halflings-regular.ttf:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
下载替换 https://gitlab.com/mailman/mailman-website/tree/a97d6b4c5b29594004e3855f1ab1222449d0c211/conten ...
- 使用dozer将DTO转化为DO
DTO,就是Data Transfer Object,数据传输对象,可以简单理解成请求中的对象. PO,就是Persistant Object,持久化对象,它跟持久层(通常是关系型数据库)的数据结构形 ...
- Spring boot2X集成zuul与consul实现负载均衡和反向代理
zuul 是netflix开源的一个API Gateway 服务器 所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序. 作为一个边界性质的应用程序,Zuul提供了动态路由.监控 ...
- 实现简单的AOP前置后置增强
AOP操作是我们日常开发经常使用到的操作,例如都会用到的spring事务管理.今天我们通过一个demo实现对一个类的某一个方法进行前置和后置的增强. //被增强类 public class PetSt ...