一、概念和背景

  SVM:Support Vector Machine 支持向量机。

  最早是由Vladimir N. Vapnik和Alexey Ya. Chervonenkis在1963年提出的。

  目前的版本(soft margin)是由Corinna Cortes和Vapnik在1993年提出,并在1995年发表。

  在深度学习(2012)出现之前,SVM被认为是机器学习中近十几年来最成功,表现最好的算法。

  机器学习的一般框架:

    训练集--->提取特征向量--->结合一定的算法(决策树、KNN等)--->结果

二、SVM

  

  在上图中,我们有一些二维的样本,我们需要画一条线将他们区分开,现有绿色、蓝色、红色三条线,哪一条是最好的呢?

  很明显,我们会认为红色线是最能明确划分两种样本的分界线。

  我们将二维样本扩展到三维(三维空间)中,则这条红线会变成一个面红色的面,可以用来在三维空间中划分三维样本。

  再将三维空间扩展为N维,则红色的面会变成一个超平面(hyper plane),这个超平面可以用来划分N维样本。

  边际(margin):用于确定超平面位置,使不同类样本间边际(距离)最大。(例如黑点到白点的距离)

  

  

三、线性可区分和线性不可区分

  线性可分:在样本空间中,可以使用一条直线(二维)、一个平面(三维)或一个超平面(N维)将样本区分开,叫做线性可区分。例如上面图中的情况。

  线性不可分:不能使用一条直线(二维)、一个平面(三维)或一个超平面(N维)将样本区分开,叫做线性不可区分。如下图所示情况:

  

 

四、确定超平面

  如何确定超平面:

    用于划分样本的超平面可以有无数个,但是最优超平面是到不同类样本距离相等(并且边际最大)的超平面。

  假设训练样本是二维的,X=(x1,x2);

  1.超平面方程为:

    

  其中的w0相当于x0=1的情况。(和神经网络中的bias一样)

  2.超平面两边的点满足:

    

  3.找到超平面两边的另外两个超平面:

    

    所有坐落在该两个超平面(H1,H2)上的点被称作“支持向量(support vector)”

  4.分界超平面与处于H1和H2上的点(支持向量)的距离为:

    

    其中||W||是向量的范数,即模(norm)。

      

  5.最大边际距离(H1到H2的距离)为:

    

机器学习-5 支持向量机SVM的更多相关文章

  1. 机器学习算法 - 支持向量机SVM

    在上两节中,我们讲解了机器学习的决策树和k-近邻算法,本节我们讲解另外一种分类算法:支持向量机SVM. SVM是迄今为止最好使用的分类器之一,它可以不加修改即可直接使用,从而得到低错误率的结果. [案 ...

  2. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  3. 【机器学习】支持向量机SVM

    关于支持向量机SVM,这里也只是简单地作个要点梳理,尤其是要注意的是SVM的SMO优化算法.核函数的选择以及参数调整.在此不作过多阐述,单从应用层面来讲,重点在于如何使用libsvm,但对其原理算法要 ...

  4. python机器学习之支持向量机SVM

    支持向量机SVM(Support Vector Machine) 关注公众号"轻松学编程"了解更多. [关键词]支持向量,最大几何间隔,拉格朗日乘子法 一.支持向量机的原理 Sup ...

  5. 机器学习(十一) 支持向量机 SVM(上)

    一.什么是支撑向量机SVM (Support Vector Machine) SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法.在机器学习领域,是一个有监督 ...

  6. 机器学习:支持向量机(SVM)

    SVM,称为支持向量机,曾经一度是应用最广泛的模型,它有很好的数学基础和理论基础,但是它的数学基础却比以前讲过的那些学习模型复杂很多,我一直认为它是最难推导,比神经网络的BP算法还要难懂,要想完全懂这 ...

  7. 机器学习(十一) 支持向量机 SVM(下)

    支持向量机通过某非线性变换 φ( x) ,将输入空间映射到高维特征空间.特征空间的维数可能非常高.如果支持向量机的求解只用到内积运算,而在低维输入空间又存在某个函数 K(x, x′) ,它恰好等于在高 ...

  8. 吴裕雄--天生自然python机器学习:支持向量机SVM

    基于最大间隔分隔数据 import matplotlib import matplotlib.pyplot as plt from numpy import * xcord0 = [] ycord0 ...

  9. 机器学习模型-支持向量机(SVM)

    二.代码实现 import numpy as np from sklearn import datasets from sklearn.model_selection import train_tes ...

随机推荐

  1. openresty: nginx worker不同请求之间共享数据

    To globally share data among all the requests handled by the same nginx worker process, encapsulate ...

  2. 1 tcp/ip协议

    该协议是一个协议族,并是说具体某个协议下图中的协议都属于tcp/ip协议.他是用来规范互联网中电脑间数据传输的. 该协议可以分为4层或者7层 4层,实际层数: 链路层 网络层 传输层 应用层 7层,理 ...

  3. 手把手教你启用Win10的Linux子系统(超详细)

    原文:手把手教你启用Win10的Linux子系统(超详细) 版权声明:转载请保留出处,谢谢! https://blog.csdn.net/zhangdongren/article/details/82 ...

  4. Qt如何绘制(简单深刻,fearlazy的系列文章)

    我觉得绘制只需要考虑几个问题.简单地说就是谁在什么地方画什么? 在Qt中可以这么回答:QPainter在QPainterDevice中画想画的东西. 举个例子:用QtCreator向导新建一个项目,基 ...

  5. matlab 矢量化编程(三) —— 软阈值函数

    dj,k^=⎧⎩⎨⎪⎪dj,k−λ,dj,k≥λ0,otherwisedj,k+λ,dj,k≤−λ function y = soft(x, T) y = (x - abs(T) > 0) .* ...

  6. 【Linux计划】XSI IPC

    三种IPC这就是所谓的XSI IPC,每间: 消息队列 信号量 共享存储器 以下分别介绍三种IPC的使用方法. 1.消息队列 消息队列是消息的链接表,具有例如以下函数接口: msgget:创建一个新队 ...

  7. debian8 root无法远程登录解决办法

    改一下root 密码,应该就能本地登录了. 改/etc/ssh/sshd.conf,然后重启ssh就能远程登录了:PermitRootLogin yesPermitEmptyPasswords no

  8. Swift 的 Currying 特性 | SwiftCafe 咖啡时间

    Currying 也是 Swift 的众多先进特性之一,用一句话说就是将接受多个参数的函数,转变成每次之接受一个参数的调用序列. 上面一句话说得可能大家感觉不是那么清楚,那么没关系,咱们举一个例子来说 ...

  9. XF 列表视图事件

    <?xml version="1.0" encoding="utf-8" ?><ContentPage xmlns="http:// ...

  10. Git 将子文件夹分离为一个新的库

    前面的需求 公司Android的项目上,想要将一些module抽取出来,作为一个可以被其它项目上使用的. 所以使用了git submodule的方案. 为了将代码库中的一个文件夹分离后,作为一个单独的 ...