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

  • 线性可分的情况 ==> 硬间隔最大化 ==> 硬间隔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. Excel 统计函数(六):RANK

    [语法]RANK(number,ref,[order]) [参数] number:要找到其排位的数字. ref:数字列表的数组,对数字列表的引用.Ref 中的非数字值会被忽略. order:一个指定数 ...

  2. 刷题记录:Codeforces Round #739 (Div. 3)

    Codeforces Round #739 (Div. 3) 20210907.网址:https://codeforces.com/contest/1560. --(叹). A 不希望出现带" ...

  3. [CF1498D] Bananas in a Microwave (DP)

    题面&翻译 题解 虽然 m m m 很大,但是 n n n 很小,因此题目允许我们在 O ( n m ) O(nm) O(nm) 以内解决这道题. 定义一个 dp[i][j]=0/1 ? 如果 ...

  4. 第九十三篇:ESLint:可组装的javaScript和JSX检查工具

    好家伙, 1.什么是ESLint? 代码检查工具,用来检查你的代码是否符合指定的规范 2.ESLint有什么用? 统一JavaScript代码风格的工具 在合作开发的时候, 每个成员的代码风格都有可能 ...

  5. systemctl_用法总结

    查看开机启动项 //查询开机启动项 systemctl list-unit-files // 输出 UNIT FILE 对应服务名:STATE 是状态:enable 是开机启动,disable是开机不 ...

  6. 快速排序C语言版图文详解

    ​ 算法原理:选一个数位基准,将序列分成两个部分,一边全是比它小序列,另一边全是比它大序列.然后再分别对比他小的序列和比再次进行基准分割.依次分割下去,得到一个有序的队列. 原理图示: ​编辑 ​编辑 ...

  7. 一文带你体验MRS HetuEngine如何实现跨源跨域分析

    摘要: HetuEngine作为MRS服务中交互式分析&多源统一SQL引擎,亲自全程体验其如何实现多数据源的跨源跨域分析能力. 本文分享自华为云社区<MRS HetuEngine体验跨源 ...

  8. aspnetcore6.0源代码编译调试

    虽然编译源码折腾了几个时间(卡在restore),最后还是跑起来了aspnetcore6.0mvc源码项目,下面说步骤,前提是网络能连外,对于不能连外的懒得折腾. 第一步 电脑找个地克隆下GitHub ...

  9. Beats: 使用 Filebeat 进行日志结构化

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106688240 生产一个叫做 json_logs 的文件: {"user_ ...

  10. SC命令---安装、开启、配置、关闭windows服务 bat批处理

    一.直接使用cmd来进行服务的一些操作 1.安装服务 sc create test3 binPath= "C:\Users\Administrator\Desktop\win32srvDem ...