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. cube.js 最近的一些更新

    cube.js 是一个和不错的数据分析框架,最近又有了一些新的功能支持,以下是一些简单的 总结 基于web socket 的预览支持 react hooks api 支持 支持基于reecharts ...

  2. 遍历List 中 Map 的值

    实现思路: List list = new ArrayList(); Map map = new HashMap(); ;i<list.size;i++){ map=list.get(i); f ...

  3. shell中使用expect命令进行远程执行命令脚本

    expect是用来实现自动交互功能的工具之一,使用expect-send来实现交互过程. 注意: 1.脚本的执行方法与bash shell不一样,比如:expect example.sh 2.向一个脚 ...

  4. SCDM导入点数据

    我们有时候需要把外部的点导入SCDM当中,但是SCDM没有像ICEM或者DM那样直接提供点导入的选项,是不是SCDM就无法导入点的数据了呢?答案当然是否定的.把点导入SCDM中的方法总结如下(示例数据 ...

  5. CDN惹的祸:记一次使用OSS设置跨域资源共享(CORS)不生效的问题

    原文: https://www.lastupdate.net/4669.html 昨天H5组的开发反馈了一个问题,说浏览器收不到跨域的配置,提示:Failed to load https://nnmj ...

  6. 【ASP.NET Core分布式项目实战】(四)使用mysql/mysql-server安装mysql

    Docker安装Mysql 拉取镜像 docker pull mysql/mysql-server 运行mysql docker run -d -p : --name mysql01 mysql/my ...

  7. 作业15-JDBC数据库编程

    参考资料 本次作业参考文件 MySQL操作视频 数据库相关jar文件请参考QQ群文件. 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造 ...

  8. react-native项目如何在xcode上打开ios项目

    如何打开ios项目? 导入或者双击ios/thirtydays.xcodeproj

  9. js遍历数组和数组对象

    <script> //----------------for用来遍历数组对象-- var i,myArr = [1,2,3]; for (var i = 0; i < myArr.l ...

  10. docker封装mysql镜像

    一.概述 直接使用官方的镜像 docker pull mysql:5.7 但是mysqld.cnf并没有优化,还是默认的. 二.封装镜像 创建目录 # dockerfile目录 mkdir -p /o ...