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 实现多分类思路的更多相关文章

  1. 8.SVM用于多分类

    从前面SVM学习中可以看出来,SVM是一种典型的两类分类器.而现实中要解决的问题,往往是多类的问题.如何由两类分类器得到多类分类器,就是一个值得研究的问题. 以文本分类为例,现成的方法有很多,其中一劳 ...

  2. SVM实现邮件分类

    首先学习一下svm分类的使用. 主要有以下步骤: Loading and Visualizing Dataj Training Linear SVM Implementing Gaussian Ker ...

  3. SVM实现多分类的三种方案

    SVM本身是一个二值分类器 SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器. 目前,构造SVM多类分类器的方法主要有两类 (1)直接法,直接在目标函数上进行修改,将 ...

  4. SVM处理多分类问题(one-versus-rest和one-versus-one的不同)

    SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器. 目前,构造SVM多类分类器的方法主要有两类:一类是直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一 ...

  5. tensorflow实现svm iris二分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)

    iris二分类 # Linear Support Vector Machine: Soft Margin # ---------------------------------- # # This f ...

  6. 【机器学习具体解释】SVM解二分类,多分类,及后验概率输出

    转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN−勿在浮沙筑高台 支持向量机(Support Vecto ...

  7. Python-基于向量机SVM的文本分类

    项目代码见 Github: 1.算法介绍 2.代码所用数据 详情参见http://qwone.com/~jason/20Newsgroups/ 文件结构 ├─doc_classification.py ...

  8. SVM处理多分类问题

    "one-against-one" approach from sklearn import svm X = [[0], [1], [2], [3]] Y = [0, 1, 2, ...

  9. Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

    转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...

随机推荐

  1. JavaScript遍历

  2. 关于window PC机的预定义宏win32

    MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32.这三个常量如何使用呢?看起来简单,其实是很困惑的. 在 Win32 配置下,WIN32 在“项目属性-C/C ...

  3. spring boot2X整合nacos一使用Feign实现服务调用

    服务调用有两种方式: A.使用RestTemplate 进行服务调用 查看 B.使用Feign 进行声明式服务调用 上一次写了使用RestTemplate的方式,这次使用Feign的方式实现 服务注册 ...

  4. 在导入pytorch时libmkl_intel_lp64.so找不到

    安装或者更新完pytorch后,运行不了,显示错误: (base) xu@xusu:~$ python Python (default, Dec , ::) [GCC ] :: Anaconda, I ...

  5. python数据分析5 数据转换

    1数据转换 数据转换时数据准备的重要环节,它通过数据平滑,数据聚集,数据概化,规范化等凡是将数据转换成适用于数据挖掘的形式 1.1 数据平滑 去除数据中的噪声,将连续数据离散化.这里可以采用分箱.聚类 ...

  6. Maven 教程(18)— 利用 Profile 构建不同环境的部署包

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79776257 接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5 ...

  7. Java8 日期与时间 API

    在 Java 中,想处理日期和时间时,通常都会选用 java.util.Date 这个类进行处理.不过不知道是设计者在当时没想好还是其它原因,在 Java 1.0 中引入的这个类,大部分的 API 在 ...

  8. HashMap源码1

    jdk1.8之前是数组+链表的形式,后面会介绍jdk1.8对hashMap的改动:数组+链表+红黑树 transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分. 当一个对象被串 ...

  9. LeetCode dp专题

    1. 动态规划的适用场景 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法. 2. 动态规划的基本思想 动态规划背后的基本思想非常简单.大致上,若要解一个给 ...

  10. springboot yml配置文件注入值

    1.编写javabean: package com.example.springboot.bean; import org.springframework.boot.context.propertie ...