前言

之前讲了有关基本的SVM的数学模型(机器学习入门学习笔记:(4.1)SVM算法)。这次主要介绍介绍svm的核函数、软间隔等概念,并进行详细的数学推导。这里仅将自己的笔记记录下来,以便以后复习查看和分享。

核函数

在此前的讨论中,我们都是默认假设数据集是线性可分的,即存在一个超平面能将给出的样本数据正确分类。然而,有时也许在原始的样本空间中找不到一个能正确分类的超平面。

如上图所示,一堆数据在二维空间中无法使用直线划分,而将其映射到三维空间中,便可以使用超平面划分。
所以,当遇到此类问题时,我们可以考虑:将超平面从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限的,那么一定存在一个高维特征空间使得样本数据可分。
另ϕ(x)\phi(x)表示将xx映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可以表示为:

f(x)=ωTx+b

f(x)=\omega^T x + b
这里使用这个条件重新再快速走一遍推导流程:
首先,回到前面求解SVM的参数ω\omega个bb的最优化问题:

min12∥ω∥2s.t.yi(ωTϕ(xi)+b)≥1,i=1,2,...,m

\min\frac{1}{2}\|\omega\|^2\\ s.t. \; y_i(\omega^T\phi(x_i)+b)\geq 1,i=1,2,...,m
转为求解其对偶问题,可以得到:

maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjϕ(xi)ϕ(xj)s.t.∑i=1mαiyi=0

\max_{\alpha} \sum_{i=1}^m \alpha_i- \frac{1}{2} \sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y_i y_j \phi(x_i) \phi(x_j)\\ s.t. \; \sum_{i=1}^m \alpha_i y_i = 0
与之前的结果差不多,唯一的区别就是这个: ϕ(xi)ϕ(xj)\phi(x_i) \phi(x_j)。这是样本 xix_i和 xjx_j映射到特征空间之后的内积。在引入核函数之前,对应的是: xixjx_ix_j,本身这个也是一个核函数,叫做线性核。
由于特征空间的维数有可能很高,甚至是无穷维,因此,直接计算 ϕ(xi)ϕ(xj)\phi(x_i) \phi(x_j)这个式子,复杂度为 O(m2),limm→+∞O(m^2),\lim{m\to+\infty}。计算量非常大,所以此时计算 ϕ(xi)ϕ(xj)\phi(x_i) \phi(x_j)比较困难。为了回避这个问题,可以设想如下函数:

K(xi,xj)=<ϕ(xi),ϕ(xj)>=ϕ(xi)Tϕ(xj)

K(x_i, x_j)==\phi(x_i)^T \phi(x_j)
即将 ϕ(xi)\phi(x_i)和 ϕ(xj)\phi(x_j)的内积转化为求解这个函数 K(xi,xj)K(x_i, x_j)。
SVM的优化问题可以重写为:

maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjK(xi,xj)s.t.∑i=1mαiyi=0

\max_{\alpha} \sum_{i=1}^m \alpha_i- \frac{1}{2} \sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y_i y_j K(x_i, x_j)\\ s.t. \; \sum_{i=1}^m \alpha_i y_i = 0
这还是一个二次规划问题,我们可以通过一些现成的优化算法或者QP工具包求解出 α\alpha的值。
之后由 α\alpha值可以求出 ω\omega和 bb。这些结果都与前面一样,就直接给出结果了。

ω=∑i=1mαiyixib=1|S|∑s∈S(ys−∑i∈SαiyixTixs)

\omega=\sum_{i=1}^{m}\alpha_i y_i x_i\\ b= \frac{1}{|S|} \sum_{s\in{S}}(y_s-\sum_{i\in{S}}\alpha_iy_ix_i^Tx_s)
原来的SVM模型可以表示如下:

f(x)=ωTϕ(x)+b=∑i=1mαiyiϕ(xi)Tϕ(x)+b=∑i=1mαiyiK(xi,xj)+1|S|∑s∈S(ys−∑i∈SαiyixTixs)

\begin{align*} f(x) &= \omega^T \phi(x) + b\\ &= \sum_{i=1}^m\alpha_i y_i \phi(x_i)^T \phi(x) + b \\ &= \sum_{i=1}^m\alpha_i y_i K(x_i, x_j) + \frac{1}{|S|} \sum_{s\in{S}}(y_s-\sum_{i\in{S}}\alpha_iy_ix_i^Tx_s) \end{align*}
其中的 K(⋅,⋅)K(\cdot,\cdot)为核函数。

补充

当然核函数还有很多性质,这里不做介绍,下面给一个有详细的介绍的链接:
svm核函数的理解和选择

软间隔

前面有关支持向量机的约束条件:

{ωTxi+b≥1,yi=+1ωTxi+b≤−1,yi=−1

\begin{cases} \omega^Tx_i+b\geq1,y_i=+1 \\ \omega^Tx_i+b\leq-1,y_i=-1 \end{cases}

优化问题:

minω,b∥ω∥22s.t.yi(ωTxi+b)≥1,i=1,2,...,m

\min_{\omega, b} \frac{\|\omega\|^2}{2} \\ s.t. \; y_i(\omega^Tx_i+b) \geq 1 , i=1,2,...,m
此时要求所有的样本都划分正确,这被称为 “硬间隔”
“软间隔”就是允许一些样本不符合条件:

yi(ωTxi+b)≥1

y_i(\omega^Tx_i+b) \geq 1
在最大化 间隔的同时,也应当使这些不满足约束的样本点尽可能少,于是优化问题变为:

minω,b∥ω∥22+C∑i=1ml0/1(yi(ωTxi+b)−1)s.t.yi(ωTxi+b)≥1,i=1,2,...,m

\min_{\omega, b} \frac{\|\omega\|^2}{2} + C\sum_{i=1}^{m}l_{0/1}(y_i(\omega^Tx_i+b) - 1) \\ s.t. \; y_i(\omega^Tx_i+b) \geq 1 , i=1,2,...,m
其中 C≥0C \geq 0且为常数; l0/1l_{0/1}是“0/1损失函数”。

l0/1(x)={1,ifx≤0;0,otherwise

l_{0/1}(x)= \begin{cases} 1,\;\;if x \leq 0;\\ 0,\;\;otherwise \end{cases}
讨论如下情况:
1. 如果 C→∞C \to \infty,那么最小值就是 ∞\infty本身,此时所有样本都能满足条件;
2. 如果 CC是一个有限值,那么最小值也会取到一个有限值,此时,会允许一些样本不满足条件。

当然l0/1l_{0/1}这样的函数是不连续不可导的,这会使得问题不好求解。所以常常还会使用其他一些函数来替代“0/1损失函数”,这些函数称为 “替代函数”。这些替代函数有更好的数学性质,通常都是凸函数,且连续可导。
三种常用的替代函数:

⎧⎩⎨⎪⎪hinge损失:lhinge(z)=max(0,1−z)指数损失:lexp(z)=exp(−z)对率损失:llog(z)=log(1+exp(−z))

\begin{cases} hinge损失:l_{hinge}(z)=max(0,1-z)\\ 指数损失:l_{exp}(z)=exp(-z)\\ 对率损失:l_{log}(z)=log(1+exp(-z)) \end{cases}
若采用hinge损失,原问题变为:

minω,b∥ω∥22+C∑i=1mmax(0,1−yi(ωTxi+b))s.t.yi(ωTxi+b)≥1,i=1,2,...,m

\min_{\omega, b} \frac{\|\omega\|^2}{2} + C\sum_{i=1}^{m}\max(0,1-y_i(\omega^Tx_i+b)) \\ s.t. \; y_i(\omega^Tx_i+b) \geq 1 , i=1,2,...,m
引入 松弛变量(slack variables) ξ\xi:

minω,b∥ω∥22+C∑i=1mξis.t.yi(ωTxi+b)≥1,i=1,2,...,m

\min_{\omega, b} \frac{\|\omega\|^2}{2} + C\sum_{i=1}^{m}\xi_i \\ s.t. \; y_i(\omega^Tx_i+b) \geq 1 , i=1,2,...,m
由于:

ξi=max(0,1−yi(ωTxi+b))

\xi_i = \max(0,1-y_i(\omega^Tx_i+b))
所以条件变为:

ξi≥0&&ξi≥1−yi(ωTxi+b)

\begin{align*} \xi_i \geq 0 \;\;\&\&\;\; \xi_i \geq 1-y_i(\omega^Tx_i+b) \\ \end{align*}
现在得到 软间隔支持向量机表示如下:

minω,b∥ω∥22+C∑i=1mξis.t.yi(ωTxi+b)≥1−ξiξi≥0,i=1,2,...,m

\min_{\omega, b} \frac{\|\omega\|^2}{2} + C\sum_{i=1}^{m}\xi_i \\ s.t. \; y_i(\omega^Tx_i+b) \geq 1-\xi_i\\ \xi_i \geq 0, i=1,2,...,m
接下来,与之前的博客 (机器学习入门学习笔记:(4.1)SVM算法)中一样,我们要将这个问题转换为对偶问题求解:
这仍然是一个二次规划问题,我们构建拉格朗日函数:

L(ω,b,α,ξ,μ)=∥ω∥22+C∑i=1mξi+∑i=1mαi(1−ξ−yi(ωTxi+b))+∑i=1mμi(−ξi)

L(\omega,b,\alpha,\xi,\mu)=\frac{\|\omega\|^2}{2} + C\sum_{i=1}^{m}\xi_i+\sum_{i=1}^{m}\alpha_i(1-\xi-y_i(\omega^Tx_i+b)) +\sum_{i=1}^{m}\mu_i (-\xi_i)
其中 αi≥0,μi≥0\alpha_i \geq 0, \mu_i \geq 0。
接下来对 L(ω,b,α,ξ,μ)L(\omega,b,\alpha,\xi,\mu)关于 ω,b,ξ\omega,b,\xi求偏导,令其为0:

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪∂L∂ω=ω−∑mi=1αiyiωTxi∂ω=ω−∑mi=1αiyixi=0∂L∂b=−∑mi=1αiyib∂b=∑mi=1αiyi=0∂L∂ξi=C−∑mi=1αiξi∂ξ−∑mi=1μiξi∂ξi=C−αi−μi=0

\begin{cases} \frac{\partial L}{\partial \omega}=\omega-\frac{\sum_{i=1}^{m}\alpha_iy_i\omega^Tx_i}{\partial \omega}=\omega-\sum_{i=1}^{m}\alpha_iy_ix_i=0\\ \frac{\partial L}{\partial b}=-\frac{\sum_{i=1}^{m}\alpha_iy_i b}{\partial b} = \sum_{i=1}^{m}\alpha_iy_i = 0\\ \frac{\partial L}{\partial \xi_i} = C -\frac{\sum_{i=1}^{m}\alpha_i \xi_i}{\partial \xi} -\frac{\sum_{i=1}^{m}\mu_i \xi_i}{\partial \xi_i} = C - \alpha_i - \mu_i = 0 \end{cases}
得到新的约束条件:

⎧⎩⎨⎪⎪ω=∑mi=1αiyixi∑mi=1αiyi=0C=αi+μi

\begin{cases} \omega=\sum_{i=1}^{m}\alpha_iy_ix_i\\ \sum_{i=1}^{m}\alpha_iy_i = 0 \\ C = \alpha_i + \mu_i \end{cases}
重点关注这个新多出来的条件: C=αi+μiC = \alpha_i + \mu_i,又由于KKT条件,我们还有 αi≥0,μi≥0\alpha_i \geq 0,\mu_i \geq 0:
所以,对于 αi\alpha_i有: 0≤αi≤C0 \leq \alpha_i \leq C
将上面推出的新的约束条件代回到拉格朗日函数,消去 ω,b,ξ\omega,b,\xi(中间的推导我省略了,太长了):

L(ω,b,α)=∥ω∥22+C∑i=1mξi+∑i=1mαi(1−ξ−yi(ωTxi+b))+∑i=1mμi(−ξi)=∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxixj

\begin{align*} L(\omega, b, \alpha) &= \frac{\|\omega\|^2}{2} + C\sum_{i=1}^{m}\xi_i+\sum_{i=1}^{m}\alpha_i(1-\xi-y_i(\omega^Tx_i+b)) +\sum_{i=1}^{m}\mu_i (-\xi_i) \\ &= \sum_{i=1}^{m}\alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y_i y_j x_i x_j \end{align*}
这东西跟原来的还是一模一样的,区别在于约束条件。写出问题最后的形式:

maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxixj,s.t.∑i=1mαiyi=00≤αi≤C,i=1,2,...,m

\max_{\alpha} \sum_{i=1}^{m}\alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y_i y_j x_i x_j, \\ s.t. \;\; \sum_{i=1}^{m}\alpha_iy_i = 0 \\ 0 \leq \alpha_i \leq C, i=1,2,...,m

接下来的工作就是解这个二次规划问题,我们可以采用现成的QP工具包来解决,也可以采用SMO算法来解出答案。求出合适的α\alpha后,逆推出ω\omega和b<script type="math/tex" id="MathJax-Element-60">b</script>。

后记

SVM算法相对其他的机器学习算法来说还是比较复杂的,涉及概念也比较多。这样子详细再推导一次,很多概念都能理解地更深了。下次再总结归纳SMO算法。

参考资料:
《机器学习》周志华
svm核函数的理解和选择

机器学习入门学习笔记:(4.2)SVM的核函数和软间隔相关推荐

  1. 机器学习入门学习笔记:(4.1)SVM算法

    前言 支持向量机(Support Vector Machine,简称SVM)可以说是最经典的机器学习算法之一了.这几天再看SVM,参考了一些书籍和博客,这里把自己的笔记记录下来,以便以后复习查看. 间 ...

  2. 机器学习入门学习笔记:(3.2)ID3决策树程序实现

    前言 之前的博客中介绍了决策树算法的原理并进行了数学推导(机器学习入门学习笔记:(3.1)决策树算法).决策树的原理相对简单,决策树算法有:ID3,C4.5,CART等算法.接下来将对ID3决策树算法 ...

  3. 机器学习入门学习笔记:(2.3)对数几率回归推导

    理论推导   在以前的博客(机器学习入门学习笔记:(2.1)线性回归理论推导 )中推导了单元线性回归和多元线性回归的模型.   将线性回归模型简写为:y=ωTx+by = \omega^Tx+b:   ...

  4. 机器学习入门学习笔记:(2.2)线性回归python程序实现

      上一篇博客中,推导了线性回归的公式,这次试着编程来实现它.(机器学习入门学习笔记:(2.1)线性回归理论推导 )   我们求解线性回归的思路有两个:一个是直接套用上一篇博客最后推导出来的公式:另一 ...

  5. Kaggle教程 机器学习入门学习笔记

    机器学习入门学习笔记 [跳转]<Kaggle教程 机器学习入门>系列课程目录 >> 决策树 简介:是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零 ...

  6. 机器学习基石--学习笔记01--linear hard SVM

    背景 支持向量机(SVM)背后的数学知识比较复杂,之前尝试过在网上搜索一些资料自学,但是效果不佳.所以,在我的数据挖掘工具箱中,一直不会使用SVM这个利器.最近,台大林轩田老师在Coursera上的机 ...

  7. 机器学习入门学习笔记:(2.4)线性判别分析理论推导

    LDA   线性判别分析(Linear Discriminant Analysis, 简称LDA),最早由Fisher提出,也叫"Fisher判别分析".   线性判别分析的思想: ...

  8. 机器学习入门学习笔记:(2.1)线性回归理论推导

    理论推导   机器学习所针对的问题有两种:一种是回归,一种是分类.回归是解决连续数据的预测问题,而分类是解决离散数据的预测问题.线性回归是一个典型的回归问题.其实我们在中学时期就接触过,叫最小二乘法. ...

  9. 机器学习入门学习笔记:(1)BP神经网络原理推导及程序实现

    机器学习中,神经网络算法可以说是当下使用的最广泛的算法.神经网络的结构模仿自生物神经网络,生物神经网络中的每个神经元与其他神经元相连,当它"兴奋"时,想下一级相连的神经元发送化学物 ...

最新文章

  1. Android开源项目发布jCenter
  2. @FunctionalInterface
  3. C++Strand Sort链排序的实现算法(附完整源码)
  4. 【今晚七点半】:主编对话李宇翔——我所经历的“前端”开发
  5. go语言io reader_go语言之IO操作(待补充)
  6. kubernetes权威指南第五版_Java 微服务实用指南(二)
  7. django的模板系统过滤器笔记
  8. 矩形计算器java代码_java代码---------计算器实现
  9. 用位运算实现内存对齐
  10. html 数字加圆圈,word中圆圈数字,圆圈11怎么打
  11. 链表排序python
  12. 了解 Web 服务规范: 第 7 部分:Web 服务业务流程执行语言
  13. 人民币对美元汇率中间价报6.7941元 下调139个基点
  14. I帧和IDR帧的区别
  15. Cocos Creator 3.0 教程! 标志板! Billboard !
  16. 灰色页面,HTML灰色页面
  17. 科学解释超级计算机,人工智能、现代科学证明:宇宙是虚拟的,真实世界是超级计算机...
  18. 来自榜一的公益SRC挖掘思路分享
  19. 【最近抖音上元宇宙虚拟项目七国争霸,直播互动游戏源码解析】
  20. 微服务ServiceMesh及三种模式介绍

热门文章

  1. 顺序表应用3:元素位置互换之移位算法
  2. MFC对话框退出程序所调用的函数
  3. 【自动驾驶】27.相机畸变_相机内参标定 整理
  4. 【c++】25.事件驱动的详解
  5. Stanford机器学习笔记-6. 学习模型的评估和选择
  6. OpenCV的HOG+SVM训练程序注意事项
  7. 线程池,这一篇或许就够了
  8. K Nearest Neighbor 算法
  9. OpenCV提取图像颜色直方图
  10. 编程之美-寻找发帖“水王”方法整理