支持向量机专题——线性可分支持向量机
原文
支持向量机(support vector machine, SVM)是一种经典的分类器,其主要思想是学习一个在特征空间上使间隔最大的分类器。支持向量机的学习可以看成是一个求解凸二次规划问题的过程,同时也等价于正则化的合页损失函数的最小化问题。
支持向量机可以分为:线性可分支持向量机、线性支持向量机、非线性支持向量机三种。当训练数据线性可分时,可通过硬间隔最大化,学习一个线性可分支持向量机(也称为硬间隔支持向量机);当训练数据近似线性可分时,可以通过软间隔最大化,学习一个线性支持向量机(也称为软间隔支持向量机);当训练数据线性不可分时,需要使用核技巧,学习非线性支持向量机。
线性可分支持向量机
问题抽象
一般来说,一个点距离超平面的距离可以表示分类预测的确信程度,如图所示,点C、B、A分类的确信程度依次递增。 |ω⋅x+b| |\omega\cdot x+b| 可以表示点 x x距离超平面的远近。这个“远近”有个名字叫函数间隔。
\hat \gamma_i=y_i(\omega\cdot x_i+b)
令
\hat \gamma = \min_{i=1...N}\hat y_i
线性可分支持向量机的目的就是找到使 γ^ \hat \gamma最小的超平面。
函数间隔不足以表示分类预测的确信度,因为如果成倍的增加 ω \omega和 b b的值,超平面并没有改变,但是函数间隔却也同样成倍增加,这显然是不合理的。因此不妨引入几何间隔 ,使间隔是确定的
\gamma_i = \frac{\omega}{||\omega||}\cdot x_i + \frac{b}{||\omega||}
显然,函数间隔和几何间隔存在以下关系
\gamma_i=\frac{\hat \gamma_i}{||\omega||}
支持向量机学习的基本想法是求解能正确划分训练数据集并且几何间隔最大的分离超平面,对线性可分的数据集而言,这个超平面是唯一的。
求解最大间隔分离超平面的问题可以表示为下面的约束最优化问题:
\max_{\omega,b}\qquad\gamma
s.t.\qquad y_i(\frac{\omega}{||\omega||}\cdot x_i+\frac{b}{||\omega||})\ge\gamma
意思就是要让最小间隔最大化
根据几何间隔和函数间隔的关系,该问题可以改写为
\max_{\omega,b}\qquad\frac{{\hat \gamma}}{||\omega||}
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_{\omega,b}\qquad\frac{1}{||\omega||}
s.t.\qquad y_i(\omega\cdot x_i+b)\ge1
等价于
\min_{\omega,b}\qquad\frac{1}{2}||\omega||^2
s.t.\qquad y_i(\omega\cdot x_i+b)-1\ge0
这是一个凸二次规划问题,要求 ω∗ \omega^*和 b∗ b^* ,使其满足上式,从而得出最大间隔分离超平面。
最优化问题求解
对于上述抽象问题,可以通过求解原始问题的对偶问题得到最优解,使用这种方式的原因是对偶问题更加容易求解,并且可以自然地引入核函数,从而推广到非线性分类问题
首先构建拉格朗日函数:
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_{\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
\Delta_{\omega}L(\omega,b,\alpha) = \omega-\sum_{i=1}^{N}\alpha_iy_ix_i=0
\Delta_bL(\omega,b,\alpha)=\sum_{i=1}^{N}\alpha_iy_i = 0
得
\omega = \sum_{i=1}^{N}\alpha_iy_ix_i
\sum_{i=1}^{N}\alpha_iy_i=0
将上式代入拉格朗日函数,即得
\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_{\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}
\begin{eqnarray*}s.t.\quad &\sum_{i=1}^{N}&\alpha_iy_i=0\\&\alpha_i&\ge0\,,\qquad i=1,2,...,N\end{eqnarray*}
该问题可以转化为以下求极小问题
\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}
\begin{eqnarray*}s.t.\quad &\sum_{i=1}^{N}&\alpha_iy_i=0\\&\alpha_i&\ge0\,,\qquad i=1,2,...,N\end{eqnarray*}
因此,只需找出满足条件的 α \alpha便能得到该问题最优解
\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
这样,就得到线性可分的支持向量机。
支持向量机专题——线性可分支持向量机相关推荐
- 线性支持向量机、线性可分支持向量机、非线性支持向量机是怎么区分的?
SVM(Support Vector Machine)是一种二类分类模型. 它的基本模型是定义在特征空间上的间隔最大的线性分类器. 支持向量就是最大间隔或者分割超平面上的那几个临界点,具体入下图所示: ...
- 支持向量机之线性可分支持向量机(一)
简介 支持向量机(support vector machines,SVM)是一种二分类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使得它有别于感知机:支持向量机还包括核技巧 ...
- 统计学习方法笔记(五)-线性可分支持向量机原理及python实现
支持向量机 支持向量机 线性可分支持向量机 最大间隔法 代码实现 案例地址 支持向量机 支持向量机(support vector machines,SVM)是一种二分类模型,它的基本类型是定义在特征空 ...
- 线性可分支持向量机、线性支持向量机、非线性支持向量机的区别
线性可分支持向量机: 线性可分支持向量机处理的是严格线性可分的数据集. 其分类超平面为: 相应的决策函数为:或者 其学习的优化问题为: 线性支持向量机: 线性支持向量机处理的是线性不可分的数据集.对于 ...
- 支持向量机1-线性可分支持向量机
线性可分支持向量机 一.理论基础 一.支持向量机分类 二.函数间隔与几何间隔 三.支持向量 四.线性可分支持向量机 4.1 线性可分支持向量机的优化函数 4.2 线性可分支持向量机的最优化问题求解 4 ...
- 支持向量机(SVM):超平面及最大间隔化、支持向量机的数学模型、软间隔与硬间隔、线性可分支持向量机、线性支持向量机、非线性支持向量机、核函数、核函数选择、SMO算法、SVM vs LR、优缺点
支持向量机(SVM):超平面及最大间隔化.支持向量机的数学模型.软间隔与硬间隔.线性可分支持向量机.线性支持向量机.非线性支持向量机.核函数.核函数选择.SMO算法.SVM vs LR.优缺点 目录
- 【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类
本文摘要 · 理论来源:[统计学习方法]第七章 SVM · 技术支持:pandas(读csv).numpy.sklearn.svm.svm思想.matplotlib.pyplot(绘图) · 代码目的 ...
- 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...
Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...
- 支持向量机——线性可分支持向量机
文章目录 1 线性可分支持向量机 2 函数间隔和几何间隔 3 间隔最大化 4 学习的对偶算法 GitHub 简书 CSDN 1 线性可分支持向量机 支持向量机(Support vector machi ...
最新文章
- python中不同进制的整数之间可以直接运算_Python 进制转换、位运算
- 集合已修改;可能无法执行枚举操作。
- ACE_Message_Block功能简介
- 【二叉查找树BST】二叉查找树的基本操作总结
- 怎么判断是不是欧拉回路_儿科医生分享:宝宝好动调皮?怎么判断孩子是不是多动症...
- php redis微信发红包,高阶篇二 使用Redis队列发送微信模版消息
- 前端新手程序员不知道的 20个小技巧
- redmine安装指引
- 编写一个程序,找出数组中元素的最大值,要求用到成员函数。
- dj鲜生-18-发送邮件功能
- 两个文件比较 linux,linux下比较2个文件
- CSS中clear:both用法及事例
- java中常用的算法--URL
- 如何移除或修改 RDCM 中的登录凭据(logon credentials)
- linux md5校验脚本,Linux md5sum命令的使用方法
- PM-项目管理(Project Management)
- 锐捷服务器系统安全,更安全 锐捷网络发布RG-ESS易安全系统
- 快速部署k8s单机版
- 鸿蒙1030鸿蒙,鸿蒙系统申请
- ipv6上ipv4网络并高速下载网盘资源