支持向量机可以分为三类:

  • 线性可分的情况 ==> 硬间隔最大化 ==> 硬间隔SVM
  • 近似线性可分的情况 ==> 软间隔最大化 ==> 线性支持向量机
  • 线性不可分的情况 ==> 核技巧/软间隔最大化 ==> 非线性SVM

硬间隔向量机(hard margin svm)

任务:寻找一条与所有支持向量距离最远的决策边界,这条决策边界就是\(0 = w^T X + b\),即:

\[w^T X_i + b > 0 , y_i > 0 \\
w^T X_i + b < 0 , y_i < 0
\]

所以问题可以描述为:

\[max \; margin(x,b) \qquad s.t.y_i(w^T+b)>0 \\
margin(w,b) = min \; distance(w,b,x_i) = min \frac{1}{|w|}|w^Tx_i+b|
\]

带换一下也就是

\[max \; min \frac{1}{|w|}|w^Tx_i+b| ==> max \frac{1}{|w|} \; min |w^Tx_i+b| \\
s.t. y_i(w^Tx_i+b)>0 \; ==>\; \exists r > 0 , min \; y_i(w^T+b)=r
\]

用r来表示就是:

\[max \frac{r}{|w|}\\\\
\exists r > 0 , min \; y_i(w^T+b)=r
\]

这里我的理解是:因为\(wx_i+b=r\) ==> \(\frac{w}{r} x_i + \frac{b}{r}=1\),所以不管r取什么值,\(w=\frac{w_0}{r}\),\(b=\frac{b_0}{r}\), 所以r的取值所带来的影响会被最后的w和b所融合进去,所以r=1也没关系。最终的问题可以描述为(这里是N个不等式):

\[max \frac{1}{2}|w|^2 \\
s.t. \; y_i(w^T+b)-1>=0 \qquad i=1,2,3,...,N
\]

构造拉格朗日函数,引入N个参数\(\alpha\),转换成对偶函数如下(大括号表示不出来我也很绝望):

\[min \frac{1}{2} \cdot \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} x_{i} \\
s.t.\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\
\alpha_i >=0 \; i = 1,2,3,.. N
\]

使用KKT条件,得到的解:

\[w^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i}
\]
\[b^{*}=y_{j}-\sum_{i=1}^{N} a_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right)
\]

最终的解是:

\[w^{*}x+b^{*}=0
\]
\[f(x) = sign(w^{*}x+b^{*})
\]

软间隔向量机(soft margin svm)

软间隔向量机采用合页损失函数,真实数据中,严格线性可分的数据很少。合页损失函数允许分类时的一点点误差。损失函数如下:

\[1- y_{i}\left(w^{\top} x_{i}+b\right) \leqslant0, \quad loss=0 \\
1-y_{\overline{2}}\left(w^{\top} x_{i}+b\right) >0, \quad loss =1-y_{i}\left(w^{\top} x_{i}+b\right)
\]

也就是,正确分类并且函数间隔大于1时没有误差,错误分类时,距离决策边界越远的点,受到的惩罚越大。使用合页函数的做优化问题可以表示为:

\[\min \sum_{i}^{N}\left(1-y_{i}\left(w^{T} x_{i}+b\right)\right)_{+}+\lambda\|w\|^{2}
\]

令\(\xi_{i}=1-y_{i}(w^{T} x_{i}+b), \quad \xi_{i} \geqslant 0\),则,分两种情况:

1、\(1-y_{i}(w^{T} x_{i}+b)>0\) ==> \(\xi_i =1-y_{i}\left(w^{T} x_{i}+b\right)\) ==> \(y_i(wx+b)=1-\xi_i\)

2、\(1-y_{i}(w^{T} x_{i}+b)\leqslant0\) ==> \(y_i(wx+b)\leqslant1\) ==> \(y_i(wx+b)\leqslant1-\xi_i\) (\(\xi_i=0\))

综合上面两种情况,可以直接写为:\(y_i(wx+b)\leqslant1-\xi_i\),这样的话,最优化函数就变成了下面的样子:

\[min \frac{1}{2} w^{T}w+C\sum_{i=1}^{N} \xi_{i} \\
s.t. y_{i}\left(w^{T} x_{i}+b\right) \geqslant 1-\xi_{i}, \quad \xi_{i} \geqslant 0
\]

这两个式子是等价的。再《统计学习方法》中,先给出了后面的式子,再介绍了合页损失函数

这两个式子转换成等价的对偶函数如下:

\[\underset{\alpha}{min} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(x_{i}x_{j}\right)-\sum_{i=1}^{n} \alpha_{i} \\
s.t. \sum_{i=1}^{N}\alpha_iy_i=0 \qquad \\
0\leq \alpha_i \leq C, \;i=1,2,...N
\]

对偶函数的解是:

\[w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}
\]
\[b=y_{j}-\sum_{i=1}^{N} a_{i} y_{i}\left(x_{i} \cdot x_{j}\right)
\]

决策函数是:

\[f(x)=sign (\sum_{1}^{N} \alpha_{i} y_{i}(x \cdot x_{i})+b^{*})
\]

KKT条件

\[\frac{\alpha f}{\alpha w}=0, \frac{\alpha f}{\alpha b}=0, \frac{\alpha f}{\alpha \lambda}=0
\]
\[\lambda_{i}(1-y_{i}(w^{T} x_{i}+b))=0
\]
\[\lambda_i=0
\]
\[(1-y_{i}(w^{T} x_{i}+b))<0
\]

对于\(\lambda_{i}(1-y_{i}(w^{T} x_{i}+b))=0\) 只要 \(\lambda_i \neq0\) ,就有 \(1-y_{i}(w^{T} x_{i}+b=0\),也就是说\(x_i\)再决策边界上,\(x_i\)是支持向量

  • 原问题与对偶问题育有强对偶关系 <===> 满足KKT条件

非线性支持向量机(核函数)

核函数可以对特征进行升维(当然,不一定非要是升维,也可能是转换到另一个空间),高维空间的运算量巨大,所以直接使用低维的计算结果,作为两个高维向量的内积:

\[\phi (x_1, x_2) * \phi (x_1^{'}, x_2^{'}) = (z_1, z_2, z_3)*(z_1^{'}, z_2^{'}, z_3^{'}) \\\\
= (x_1^2, \sqrt{2}x_1 x_2, x_2^2)(x_1^{'2}, \sqrt{2}x_1^{'} x_2^{'}, x_2^{'2}) \\\\
= (x_1 x_1^{'} + x_2 x_2^{'}) = (xx^{'})^2 =K(x, x^{'})
\]

核函数等价于两个映射哈函数的内积,不过,这个映射函数不需要手动指出。因为当两个映射函数相乘时,内积的结果可以用核函数表示。而映射函数在最优化问题中都是成对出现的。即出现映射函数的地方都可以用核函数替代。

如果用映射函数将x映射到高维空间,那么应该用高维向量替换x所在的位置:

\[\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(x_{i}x_{j}\right)-\sum_{i=1}^{n} \alpha_{i}
\]
\[\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(\phi(x_{i})\phi(x_{j})\right)-\sum_{i=1}^{n} \alpha_{i}
\]
\[\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(K(x_{i}, x_{j})\right)-\sum_{i=1}^{n} \alpha_{i}
\]

那么最终拟合的结果也应该是由高维向量表示的:

\[f(x)=sign (\sum_{1}^{N} \alpha_{i} y_{i}(\phi(x)\phi(x_{i}))+b^{*})
\]
\[f(x)=sign (\sum_{1}^{N} \alpha_{i} y_{i}(K(x,x_i))+b^{*})
\]

高斯核函数(RBF)

正太分布:

\[f(x)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)
\]

高斯核函数:

\[K(x, y)=e^{-\gamma\|x-y\|^{2}}
\]

对于正态分布来说:\(\sigma\)是标准差,\(\sigma\)越小,曲线越窄。\(\sigma\)越大,曲线越宽

对于高斯核函数来说:\(\gamma\)的值越大,曲线越窄;\(\gamma\)的值越小,曲线越宽;

支持向量机(SVM)公式整理的更多相关文章

  1. 机器学习——支持向量机SVM

    前言 学习本章节前需要先学习: <机器学习--最优化问题:拉格朗日乘子法.KKT条件以及对偶问题> <机器学习--感知机> 1 摘要: 支持向量机(SVM)是一种二类分类模型, ...

  2. 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类(异 ...

  3. 以图像分割为例浅谈支持向量机(SVM)

    1. 什么是支持向量机?   在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...

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

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

  5. 支持向量机SVM——专治线性不可分

    SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...

  6. 一步步教你轻松学支持向量机SVM算法之案例篇2

    一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  7. OpenCV支持向量机(SVM)介绍

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

  8. 支持向量机SVM 参数选择

    http://ju.outofmemory.cn/entry/119152 http://www.cnblogs.com/zhizhan/p/4412343.html 支持向量机SVM是从线性可分情况 ...

  9. 机器学习集成算法--- 朴素贝叶斯,k-近邻算法,决策树,支持向量机(SVM),Logistic回归

    朴素贝叶斯: 是使用概率论来分类的算法.其中朴素:各特征条件独立:贝叶斯:根据贝叶斯定理.这里,只要分别估计出,特征 Χi 在每一类的条件概率就可以了.类别 y 的先验概率可以通过训练集算出 k-近邻 ...

  10. 转:机器学习中的算法(2)-支持向量机(SVM)基础

    机器学习中的算法(2)-支持向量机(SVM)基础 转:http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html 版 ...

随机推荐

  1. 一,DRF入门规范

    一 Web应用模式 在开发Web应用中,有两种应用模式: 1.1 前后端不分离 1.2 前后端分离 二 API接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的 ...

  2. Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)

    1.生命周期 **Spring容器的 bean **的生命周期: 1.1 默认生命周期 1.1.1 生命周期 调用构造方法,创建实例对象: set方法,给实例对象赋值: init 初始化方法 初始化对 ...

  3. OpenJudge1.5.17

    20:球弹跳高度的计算 总时间限制: 1000ms 内存限制: 65536kB 描述 一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下. 编程计算气球在第10次落地时,共经过 ...

  4. 在Boss直聘上投简历时,怎样保证有新消息时能及时收到

    最近在Boss直聘上投简历,偶尔会有HR给我发消息,不想在电脑上错过这些消息,但我又不能时时刻刻盯着这个页,怎么办呢? 这时,我想起来,之前做过的Chrome插件,如果检测到Boss直聘上新消息数大于 ...

  5. django_day01

    内容回顾 django处理浏览器的请求流程: 请求发送到wsgi wsgi封装了请求的相关数据(request) django去匹配路径 根据路径判断要执行哪个函数 执行函数 函数执行具体的业务逻辑 ...

  6. openstack 搭建详细步骤

    该博文转载于(https://www.cnblogs.com/whwh/p/16200004.html) 一.openstack单点部署 1.配置虚拟机NAT网络连接 查看vmware的NAT网络默认 ...

  7. 阿里druid-spring-boot-starter 配置,个人整理以及遇到的问题(防止之后找不到)

    ​ 简介,什么是Druid Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和SQL解析器组成.该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向 ...

  8. Oracle 与 PostgreSQL 函数行为的差异引发性能差异

    对于Oracle,对于数据修改的操作通过存储过程处理,而对于函数一般不进行数据修改操作.同时,函数可以通过 Select 进行调用,而存储过程则不行. 一.对于volatile 函数的行为 1.Ora ...

  9. KingbaseES 数据库Windows环境下注册数据库服务

    关键字: KingbaseES.Java.Register.服务注册 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows ...

  10. 聊聊asp.net core 授权流程

    在上一篇 聊聊 asp.net core 认证和授权 中我们提到了认证和授权的基本概念,以及认证和授权的关系及他们之间的协同工作流程,在这篇文章中,我将通过分析asp.net core 3.1 授权流 ...