4. 支持向量机(SVM)原理
1. 感知机原理(Perceptron)
2. 感知机(Perceptron)基本形式和对偶形式实现
3. 支持向量机(SVM)拉格朗日对偶性(KKT)
4. 支持向量机(SVM)原理
5. 支持向量机(SVM)软间隔
6. 支持向量机(SVM)核函数
1. 前言
在我没有学习接触机器学习之前,我就已经听说了SVM这个机器学习的方法。SVM自它诞生以来就以优秀的分类性能牢牢占据了霸主地位。
2. SVM原理
支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。
2.1 感知机
回想我们之前的一篇文章感知机,感知机的原理是通过找到一条直线,能够把数据分开。如果提升到高纬,就是找到一个超平面,把高纬数据分开。感知机的超平面可能有无穷多个,SVM可以理解为在这无穷多个里面找出最好的那个。
2.2 函数间隔与几何间隔
- 函数间隔
函数间隔其实就是感知机的损失函数的表达形式,可以表示位
\[
\gamma^{'} = y(w^Tx + b)
\] - 几何间隔
几何间隔才是点到超平面的真正距离,是每个点到超平面的距离,也就是函数间隔除上法向量。
\[
\gamma = \frac{y(w^Tx + b)}{||w||_2} = \frac{\gamma^{'}}{||w||_2}
\]
3. SVM模型
先直接看下SVM的模型图:
如上图所示,分类超平面\(w^Tx+b=0\)不仅可以把所有样本分开,还和最近的样本点(支持向量)保持一定的函数距离(我们认为这个函数距离为1),那么这样的分类超平面是比感知机的分类超平面更好的。可以证明,这样的超平面只有一个。
4. SVM的损失函数
SVM的模型是让所有点到超平面的距离大于一定的距离,也就是所有的分类点要在各自类别的支持向量两边。用数学式子表示为:
\[
max \;\; \gamma = \frac{y(w^Tx + b)}{||w||_2} \;\; s.t \;\; y_i(w^Tx_i + b) = \gamma^{'(i)} \geq \gamma^{'} (i =1,2,...m)
\]
一般我们都取函数间隔\(\gamma^{'}=1\),这样我们的优化函数定义为:
\[
max \;\; \frac{1}{||w||_2} \;\; s.t \;\; y_i(w^Tx_i + b) \geq 1 (i =1,2,...m)
\]
上式等价于:
\[
min \;\; \frac{1}{2}||w||_2^2 \;\; s.t \;\; y_i(w^Tx_i + b) \geq 1 (i =1,2,...m)
\]
4.1 拉格朗日对偶化
由于目标函数\(\frac{1}{2}||w||_2^2\)是凸函数,同时约束条件不等式是仿射的,根据凸优化理论,我们可以通过拉格朗日函数将我们的优化目标转化为无约束的优化函数,
\[
L(w,b,\alpha) = \frac{1}{2}||w||_2^2 -\sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1] \; \; s.t. \; \alpha_i \geq 0
\]
我们的这个优化函数满足KKT条件,也就是说,我们可以通过拉格朗日对偶将我们的优化问题转化为等价的对偶问题来求解:
\[
\underbrace{min}_{w,b}\; \underbrace{max}_{\alpha_i \geq 0} L(w,b,\alpha)
\]
从先求最大值再求最小值转化为先求最小值再求最大值,如下
\[
\underbrace{max}_{\alpha_i \geq 0} \;\underbrace{min}_{w,b}\; L(w,b,\alpha)
\]
然后通过偏导数对\(w,b\)求极值带入公式得到如下公式
\[
\underbrace{min}_{\alpha} \frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) - \sum\limits_{i=1}^{m} \alpha_i
\]
\[
s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0
\]
\[
\alpha_i \geq 0 \; i=1,2,...m
\]
只要我们可以求出上式极小化时对应的\(\alpha\)向量就可以求出\(w\)和\(b\)了。具体怎么极小化上式得到对应的\(\alpha\),一般需要用到SMO算法,这个算法比较复杂,我们后面会专门来讲。
5. 总结
线性可分SVM的学习方法对于非线性的数据集是没有办法使用的,有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分, 那么怎么可以处理这些异常点使数据集依然可以用线性可分的思想呢? 我们在下一节的线性SVM的软间隔最大化里继续讲。
4. 支持向量机(SVM)原理的更多相关文章
- 机器学习之支持向量机—SVM原理代码实现
支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...
- 支持向量机(SVM)原理详解
SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:SVM还包括核技巧, ...
- 支持向量机SVM原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)
项目合作联系QQ:231469242 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?cours ...
- 【IUML】支持向量机SVM
从1995年Vapnik等人提出一种机器学习的新方法支持向量机(SVM)之后,支持向量机成为继人工神经网络之后又一研究热点,国内外研究都很多.支持向量机方法是建立在统计学习理论的VC维理论和结构风险最 ...
- 以图像分割为例浅谈支持向量机(SVM)
1. 什么是支持向量机? 在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...
- 支持向量机SVM——专治线性不可分
SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...
- 一步步教你轻松学支持向量机SVM算法之案例篇2
一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- 一步步教你轻松学支持向量机SVM算法之理论篇1
一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- OpenCV支持向量机(SVM)介绍
支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...
- 【机器学习】支持向量机SVM
关于支持向量机SVM,这里也只是简单地作个要点梳理,尤其是要注意的是SVM的SMO优化算法.核函数的选择以及参数调整.在此不作过多阐述,单从应用层面来讲,重点在于如何使用libsvm,但对其原理算法要 ...
随机推荐
- golang项目结构
一.概述 golang更新了环境变量,导致整个goproject的结构改变: [root@node175 goproject]# tree -L . ├── bin │ └── demo ├── ...
- iOS AFNetWorking下得Basic Auth认证请求方式
我新入职了一家公司,做了一个项目,服务器的大哥说他采用的是Basic Auth认证请求方式,一般我们用的都是OAuth的认证方式,下面我们就对比一下这两种认证方式 百度百科得到如下 Basic Aut ...
- ASP.NET Core网站初探
原文地址:https://blog.csdn.net/iml6yu/article/details/74530679 目录结构如下图 目录: Properties:属性,记录了项目属性的配置文件. ...
- 《JAVA与模式》之中介者模式(转载)
原文出处:http://blog.csdn.net/zhengzhb/article/details/7430098 定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用 ...
- C++转型操作符
转:http://www.cnblogs.com/hazir/archive/2012/04/14/2447251.html 旧式的C转型方式,几乎允许你将任何类型转换为任何其它类型,有其自身的缺陷, ...
- Android的API版本和名称对应关系
Android版本名和API Level关系全称 Android的版本 Android版本名称Code name Android的API level Android 1.0 (API level 1) ...
- webpack 4.0的一些小坑
一.需要指定开发模式还是生产模式,需要改动两个地方: 1.package.json 中加入 --mode development "scripts": { "dev&qu ...
- Vue的计算属性和侦听器
1 计算属性:他是根据对象已有的属性计算出新的属性值.具有缓存的功能,如果原始属性不变,则用缓存.否则,重新计算. 前端 <form> <label>姓</label&g ...
- Google Mesa概览
Google Mesa的文章:https://research.google.com/pubs/pub42851.html https://gigaom.com/2014/08/07/google- ...
- MySql(十四):MySql架构设计——可扩展性设计之数据切分
一.前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我 ...