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

  • 线性可分的情况 ==> 硬间隔最大化 ==> 硬间隔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. 简单创建一个SpringCloud2021.0.3项目(二)

    目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上一篇教程 3. 创建公共模块Common 4. 网关Gateway 1. 创建Security 2. Security登陆配置 3 ...

  2. FFT/NTT 学习笔记

    0. 前置芝士 基础群论 复数 \(\mathbb C = \mathbb R[x^2+1]\) 则有 \(i^2+1=(-i)^2+1=0\),\(i \in \mathbb C - \mathbb ...

  3. 游标长时间open导致表无法vacuum问题

    一.问题描述 用户在实际中可能会碰到类似以下 dead rows 无法 vacuum的问题,一个可能的原因是由于游标未结束的原因. test=# vacuum(verbose) t1; INFO: v ...

  4. KingbaseES XA 分布式事务

    在分布式系统中,各个节点(或者事务参与方)之间在物理上相互独立,各节点之间无法确切地知道其它节点中的事务执行情况,所以多节点之间很难保证ACID,尤其是原子性.如果是单节点的事务,由于存在事务机制,可 ...

  5. 关于 JavaScript 中 null 的一切

    原文地址:Everything about null in JavaScript 原文作者:Dmitri Pavlutin 译者:Gopal JavaScript 有两种类型:原始类型(strings ...

  6. OpenFOAM 编程 | One-Dimensional Transient Heat Conduction

    0. 写在前面 本文中将对一维瞬态热传导问题进行数值求解,并基于OpenFOAM类库编写求解器.该问题参考自教科书\(^{[1]}\)示例 8.1. 1. 问题描述 一维瞬态热传导问题控制方程如下 \ ...

  7. 如何通过Java应用程序创建Word表格

    表格,又称为表,既是一种可视化交流模式,又是一种组织整理数据的手段.人们在通讯交流.科学研究以及数据分析活动当中广泛采用着形形色色的表格.那么如何通过Java应用程序创建Word表格呢?别担心,本文将 ...

  8. AlertManager 何时报警

    转载自:https://www.qikqiak.com/post/alertmanager-when-alert/ 在使用 Prometheus 进行监控的时候,通过 AlertManager 来进行 ...

  9. CentOS7部署FastDFS+nginx模块

    软件下载 # 已经事先把所需软件下载好并上传到/usr/local/src目录了 https://github.com/happyfish100/libfastcommon/archive/V1.0. ...

  10. CentOS6 配置阿里云 NTP 服务

    本文以Centos 6.5为例介绍如何修改Linux实例时区,以及开启和配置Linux NTP服务,保证实例本地时间精确同步. 前提条件 NTP服务的通信端口为UDP 123,设置NTP服务之前请确保 ...