原文

支持向量机(support vector machine, SVM)是一种经典的分类器,其主要思想是学习一个在特征空间上使间隔最大的分类器。支持向量机的学习可以看成是一个求解凸二次规划问题的过程,同时也等价于正则化的合页损失函数的最小化问题。

支持向量机可以分为:线性可分支持向量机、线性支持向量机、非线性支持向量机三种。当训练数据线性可分时,可通过硬间隔最大化,学习一个线性可分支持向量机(也称为硬间隔支持向量机);当训练数据近似线性可分时,可以通过软间隔最大化,学习一个线性支持向量机(也称为软间隔支持向量机);当训练数据线性不可分时,需要使用核技巧,学习非线性支持向量机。

线性可分支持向量机

问题抽象

一般来说,一个点距离超平面的距离可以表示分类预测的确信程度,如图所示,点C、B、A分类的确信程度依次递增。 |ω⋅x+b| |\omega\cdot x+b| 可以表示点 x x距离超平面的远近。这个“远近”有个名字叫函数间隔

γ^i=yi(ω⋅xi+b)

\hat \gamma_i=y_i(\omega\cdot x_i+b)

γ^=mini=1...Ny^i

\hat \gamma = \min_{i=1...N}\hat y_i

线性可分支持向量机的目的就是找到使 γ^ \hat \gamma最小的超平面。

函数间隔不足以表示分类预测的确信度,因为如果成倍的增加 ω \omega和 b b的值,超平面并没有改变,但是函数间隔却也同样成倍增加,这显然是不合理的。因此不妨引入几何间隔 ,使间隔是确定的

γi=ω||ω||⋅xi+b||ω||

\gamma_i = \frac{\omega}{||\omega||}\cdot x_i + \frac{b}{||\omega||}
显然,函数间隔和几何间隔存在以下关系

γi=γ^i||ω||

\gamma_i=\frac{\hat \gamma_i}{||\omega||}
支持向量机学习的基本想法是求解能正确划分训练数据集并且几何间隔最大的分离超平面,对线性可分的数据集而言,这个超平面是唯一的。

求解最大间隔分离超平面的问题可以表示为下面的约束最优化问题:

maxω,bγ

\max_{\omega,b}\qquad\gamma

s.t.yi(ω||ω||⋅xi+b||ω||)≥γ

s.t.\qquad y_i(\frac{\omega}{||\omega||}\cdot x_i+\frac{b}{||\omega||})\ge\gamma

意思就是要让最小间隔最大化

根据几何间隔和函数间隔的关系,该问题可以改写为

maxω,bγ^||ω||

\max_{\omega,b}\qquad\frac{{\hat \gamma}}{||\omega||}

s.t.yi(ω⋅xi+b)≥γ^

s.t. \qquad y_i(\omega\cdot x_i+b)\ge\hat\gamma

由于将 ω \omega和 b b等比例缩放λ\lambda倍,函数间隔变成 λγ^ \lambda \hat \gamma ,因此, γ^ \hat\gamma的取值对最优化问题的解无影响,因此不妨设 γ^ \hat\gamma的值为,于是等价于以下最优化问题的解

maxω,b1||ω||

\max_{\omega,b}\qquad\frac{1}{||\omega||}

s.t.yi(ω⋅xi+b)≥1

s.t.\qquad y_i(\omega\cdot x_i+b)\ge1

等价于

minω,b12||ω||2

\min_{\omega,b}\qquad\frac{1}{2}||\omega||^2

s.t.yi(ω⋅xi+b)−1≥0

s.t.\qquad y_i(\omega\cdot x_i+b)-1\ge0

这是一个凸二次规划问题,要求 ω∗ \omega^*和 b∗ b^* ,使其满足上式,从而得出最大间隔分离超平面。

最优化问题求解

对于上述抽象问题,可以通过求解原始问题的对偶问题得到最优解,使用这种方式的原因是对偶问题更加容易求解,并且可以自然地引入核函数,从而推广到非线性分类问题

首先构建拉格朗日函数:

L(ω,b,α)=12||ω||2−∑i=1Nαiyi(ω⋅xi+b)+∑i=1Nαi

L(\omega,b,\alpha)=\frac{1}{2}{||\omega||}^2-\sum_{i=1}^N\alpha_iy_i(\omega\cdot x_i+b)+\sum_{i=1}^N \alpha_i

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题

maxαminω,bL(ω,b,α)

\max_{\alpha}\min_{\omega,b}L(\omega,b,\alpha)

因此,需要先求 L(ω,b,α) L(\omega,b,\alpha)对 ω,b \omega,b的极小,再对 α \alpha求极大

求 minω,bL(ω,b,α) \min_{\omega,b}L(\omega,b,\alpha)

将拉格朗日函数对 ω,b \omega,b偏导并令其等于0

ΔωL(ω,b,α)=ω−∑i=1Nαiyixi=0

\Delta_{\omega}L(\omega,b,\alpha) = \omega-\sum_{i=1}^{N}\alpha_iy_ix_i=0

ΔbL(ω,b,α)=∑i=1Nαiyi=0

\Delta_bL(\omega,b,\alpha)=\sum_{i=1}^{N}\alpha_iy_i = 0

ω=∑i=1Nαiyixi

\omega = \sum_{i=1}^{N}\alpha_iy_ix_i

∑i=1Nαiyi=0

\sum_{i=1}^{N}\alpha_iy_i=0

将上式代入拉格朗日函数,即得

L(ω,b,α)==12∑i=1N∑j=1Nαiαjyiyj−∑i=1Nαiyi((∑j=1Nαjyjxj)⋅xi+b)+∑i=1Nαi−12∑i=1N∑j=1Nαiαjyiyj∗(xi⋅xj)+∑i=1Nαi

\begin{eqnarray*} L(\omega,b,\alpha) &=& \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j-\sum_{i=1}^{N}\alpha_iy_i((\sum_{j=1}^{N}\alpha_jy_jx_j)\cdot x_i+b)+\sum_{i=1}^{N}\alpha_i \\ &=&-\frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j*(x_i\cdot x_j)+\sum_{i=1}^{N}\alpha_i\end{eqnarray*}

接下来要求 L(ω,b,α) L(\omega,b,\alpha)对 α \alpha的极大,即

maxα−12∑i=1N∑j=1Nαiαjyiyj∗(xi⋅xj)+∑i=1Nαi

\max_{\alpha}\, -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j*(x_i\cdot x_j)+\sum_{i=1}^{N}{\alpha_i}

s.t.∑i=1Nαiαiyi=0≥0,i=1,2,...,N

\begin{eqnarray*}s.t.\quad &\sum_{i=1}^{N}&\alpha_iy_i=0\\&\alpha_i&\ge0\,,\qquad i=1,2,...,N\end{eqnarray*}

该问题可以转化为以下求极小问题

minα12∑i=1N∑j=1Nαiαjyiyj∗(xi⋅xj)+∑i=1Nαi

\min_{\alpha}\, \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j*(x_i\cdot x_j)+\sum_{i=1}^{N}{\alpha_i}

s.t.∑i=1Nαiαiyi=0≥0,i=1,2,...,N

\begin{eqnarray*}s.t.\quad &\sum_{i=1}^{N}&\alpha_iy_i=0\\&\alpha_i&\ge0\,,\qquad i=1,2,...,N\end{eqnarray*}

因此,只需找出满足条件的 α \alpha便能得到该问题最优解

ω∗=∑i=1mα∗iyixib∗=yj−∑i=1Nα∗iyi(xi⋅xj)

\begin{eqnarray*}\omega^*=\sum_{i=1}^{m}\alpha_{i}^{*}y_ix_i\end{eqnarray*}\\b^* = y_j-\sum_{i=1}^{N}\alpha_i^*y_i(x_i\cdot x_j)

其中j使得 α∗j>0 \alpha_j^*>0

这样,就得到线性可分的支持向量机。

支持向量机专题——线性可分支持向量机相关推荐

  1. 线性支持向量机、线性可分支持向量机、非线性支持向量机是怎么区分的?

    SVM(Support Vector Machine)是一种二类分类模型. 它的基本模型是定义在特征空间上的间隔最大的线性分类器. 支持向量就是最大间隔或者分割超平面上的那几个临界点,具体入下图所示: ...

  2. 支持向量机之线性可分支持向量机(一)

    简介 支持向量机(support vector machines,SVM)是一种二分类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使得它有别于感知机:支持向量机还包括核技巧 ...

  3. 统计学习方法笔记(五)-线性可分支持向量机原理及python实现

    支持向量机 支持向量机 线性可分支持向量机 最大间隔法 代码实现 案例地址 支持向量机 支持向量机(support vector machines,SVM)是一种二分类模型,它的基本类型是定义在特征空 ...

  4. 线性可分支持向量机、线性支持向量机、非线性支持向量机的区别

    线性可分支持向量机: 线性可分支持向量机处理的是严格线性可分的数据集. 其分类超平面为: 相应的决策函数为:或者 其学习的优化问题为: 线性支持向量机: 线性支持向量机处理的是线性不可分的数据集.对于 ...

  5. 支持向量机1-线性可分支持向量机

    线性可分支持向量机 一.理论基础 一.支持向量机分类 二.函数间隔与几何间隔 三.支持向量 四.线性可分支持向量机 4.1 线性可分支持向量机的优化函数 4.2 线性可分支持向量机的最优化问题求解 4 ...

  6. 支持向量机(SVM):超平面及最大间隔化、支持向量机的数学模型、软间隔与硬间隔、线性可分支持向量机、线性支持向量机、非线性支持向量机、核函数、核函数选择、SMO算法、SVM vs LR、优缺点

    支持向量机(SVM):超平面及最大间隔化.支持向量机的数学模型.软间隔与硬间隔.线性可分支持向量机.线性支持向量机.非线性支持向量机.核函数.核函数选择.SMO算法.SVM vs LR.优缺点 目录

  7. 【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类

    本文摘要 · 理论来源:[统计学习方法]第七章 SVM · 技术支持:pandas(读csv).numpy.sklearn.svm.svm思想.matplotlib.pyplot(绘图) · 代码目的 ...

  8. 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...

    Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...

  9. 支持向量机——线性可分支持向量机

    文章目录 1 线性可分支持向量机 2 函数间隔和几何间隔 3 间隔最大化 4 学习的对偶算法 GitHub 简书 CSDN 1 线性可分支持向量机 支持向量机(Support vector machi ...

最新文章

  1. python中不同进制的整数之间可以直接运算_Python 进制转换、位运算
  2. 集合已修改;可能无法执行枚举操作。
  3. ACE_Message_Block功能简介
  4. 【二叉查找树BST】二叉查找树的基本操作总结
  5. 怎么判断是不是欧拉回路_儿科医生分享:宝宝好动调皮?怎么判断孩子是不是多动症...
  6. php redis微信发红包,高阶篇二 使用Redis队列发送微信模版消息
  7. 前端新手程序员不知道的 20个小技巧
  8. redmine安装指引
  9. 编写一个程序,找出数组中元素的最大值,要求用到成员函数。
  10. dj鲜生-18-发送邮件功能
  11. 两个文件比较 linux,linux下比较2个文件
  12. CSS中clear:both用法及事例
  13. java中常用的算法--URL
  14. 如何移除或修改 RDCM 中的登录凭据(logon credentials)
  15. linux md5校验脚本,Linux md5sum命令的使用方法
  16. PM-项目管理(Project Management)
  17. 锐捷服务器系统安全,更安全 锐捷网络发布RG-ESS易安全系统
  18. 快速部署k8s单机版
  19. 鸿蒙1030鸿蒙,鸿蒙系统申请
  20. ipv6上ipv4网络并高速下载网盘资源

热门文章

  1. springboot驾校报名系统 微信小程序
  2. WebGoat安装及使用说明
  3. 单片机双字节数乘法运算实验_单片机入门——单片机的基本构成及工作原理(1)...
  4. 类成员函数指针和普通函数指针
  5. OSPF 多区域原理与配置
  6. Android开发入门到实战精通 完整全套开发教程送给你
  7. codeforces 1364D Ehabs Last Corollary
  8. 什么是CISP-PTE证书?考什么?
  9. SQL基础-操纵表及插入、查询
  10. Android ContentProvider初探