SVM之解决线性不可分
>>>SVM之解决线性不可分
上一篇SVM之核函数介绍了通过计算样本核函数,实际上将样本映射到高维空间以望使其线性可分的方法,一定程度上解决了线性不可分问题,但并不彻底。
现在,换个思路,对于线性不可分问题不再千方百计的变换数据使其线性可分,对于有些数据,找到合适的变换可能是相当困难的。我们允许数据线性不可分,允许得到的分类器对一些样本而言不“完美”,但分类器得为自己的不“完美”付出代价,它要受到惩罚!
考虑之前线性可分时对SVM的形式化\[\begin{align}\left\{ \begin{matrix}\underset{w,b}{\mathop{\min }}\,\frac{1}{2}{{\left\| w \right\|}^{2}} \\\begin{matrix}s.t. & {{y}^{i}}({{w}^{T}}{{x}^{i}}+b)\ge 1 \\\end{matrix} \\\end{matrix} \right.\end{align}\]
这里要求所有样本的函数间隔至少为1,这就是所谓的“完美”,两类样本被分的尽可能的开,它们离分类超平面至少有值为1的函数间隔,$\frac{1}{\left\| w \right\|}$ 的几何间隔。(注意函数间隔和几何间隔的关系,下文为叙述方便将以函数间隔来描述,尽管SVM的目的实际上是在最大化几何间隔)
现在,我们放松要求,不要求那么苛刻了,对于一些样本并不要求函数间隔至少为1,比1小点也行(分的不够开了),小到小于0了也行(错分了)。写成表达式就是${{y}^{i}}({{w}^{T}}{{x}^{i}}+b)\ge 1-{{\xi }_{i}},{{\xi }_{i}}\ge 0$,不要求样本$i$ 的函数间隔为至少1了,够$1-{{\xi }_{i}}$就行了,也就是说优化问题(1)的约束条件变了。
相应地,目标函数也得变,因为不可能约束变但目标不变,不然${{\xi }_{i}}$给的很大,$1-{{\xi }_{i}}$远远小于0了,${{y}^{i}}({{w}^{T}}{{x}^{i}}+b)$即使小于0也是满足约束的,那其实好多样本都被错分了,Duang~ 一下分类器变得很差,很挫,很笨,这样别的分类器一定会笑话它,根本没有这样的分类器,是假的。所以,你有${{\xi }_{i}}$的不完美,我就要给你${{C}_{i}}{{\xi }_{i}}$ 的惩罚,其中${{C}_{i}}$是惩罚因子,表示惩罚的相对大小,它可以对所有的样本一视同仁,不随$i$ 的变化而变化,也可以厚此薄彼,对有些样本严加惩罚,对另一些则睁一只眼,闭一只眼。一般这个惩罚因子还是比较公平的,所以不写${{C}_{i}}$,写成$C$吧~目标不是要最小化$\frac{1}{2}{{\left\| w \right\|}^{2}}$ 吗,现在将对所有样本的惩罚$C\sum\limits_{i}{{{\xi }_{i}}}$ 也加进去,不光要最小化$\frac{1}{2}{{\left\| w \right\|}^{2}}$,也要最小化$C\sum\limits_{i}{{{\xi }_{i}}}$,这样一来${{\xi }_{i}}$虽然大于0,但不敢变的很大了,也就是说,可以不“完美”,但不能太离谱。
现在,优化问题可以重新写成 \[\begin{align}\left\{ \begin{matrix}\underset{w,b,\xi }{\mathop{\min }}\,\frac{1}{2}{{\left\| w \right\|}^{2}}+C\sum\limits_{i}{{{\xi }_{i}}} \\\left\{ \begin{matrix}\begin{matrix}s.t. & 1-{{\xi }_{i}}-{{y}^{i}}({{w}^{T}}{{x}^{i}}+b)\le 0 \\\end{matrix} \\ -{{\xi }_{i}}\le 0 \\\end{matrix} \right. \\\end{matrix} \right.\end{align}\]
求解这个优化问题就可以了。
写出拉格朗日函数\[\begin{align}&L(w,b,\xi ,\alpha ,\beta )\notag\\&=\frac{1}{2}{{\left\| w \right\|}^{2}}+C\sum\limits_{i}{{{\xi }_{i}}}+\sum\limits_{i}{{{\alpha }_{i}}(1-{{\xi }_{i}}-{{y}^{i}}({{w}^{T}}{{x}^{i}}+b))}-\sum\limits_{i}{{{\beta }_{i}}{{\xi }_{i}}}\\\end{align}\] ,其中${{\alpha }_{i}}\ge 0,{{\beta }_{i}}\ge 0$
令${{\theta }_{D}}(\alpha ,\beta )=\underset{w,b,\xi }{\mathop{\min }}\,L(w,b,\alpha ,\beta )$ ,(2)的对偶问题可以写为:\[\begin{align}\underset{\alpha ,\beta }{\mathop{\max }}\,\underset{w,b,\xi }{\mathop{\min }}\,L(w,b,\alpha ,\beta )\end{align}\]
先来求${{\theta }_{D}}(\alpha ,\beta )$。
令$\frac{\partial L(w,b,\xi ,\alpha ,\beta )}{\partial w}=0$ ,得到$w=\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}{{x}^{i}}}$
令$\frac{\partial L(w,b,\xi ,\alpha ,\beta )}{\partial b}=0$,得到$\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}}=0$
令$\frac{\partial L(w,b,\xi ,\alpha ,\beta )}{\partial \xi}=0$,得到$C-{{\alpha }_{i}}-{{\beta }_{i}}=0$ ,由于${{\alpha }_{i}}\ge 0$ 且${{\beta }_{i}}\ge 0$ ,所以更进一步有$0\le {{\alpha }_{i}}\le C$
将上述结果代回(3)(4)得到对偶问题\[\begin{align}\left\{ \begin{matrix}\underset{\alpha }{\mathop{\max }}\,\sum\limits_{i}{{{\alpha }_{i}}}-\frac{1}{2}\sum\limits_{i,j}{{{\alpha }_{i}}{{\alpha }_{j}}{{y}^{i}}{{y}^{j}}<{{x}^{i}},{{x}^{j}}>} \\s.t.\left\{ \begin{matrix}0\le {{\alpha }_{i}}\le C \\\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}}=0 \\\end{matrix} \right. \\\end{matrix} \right.\end{align}\]
当然,这里仍然可以引人核函数,将$<{{x}^{i}},{{x}^{j}}>$ 替换为$K({{x}^{i}},{{x}^{j}})$ 。\[\begin{align}\left\{ \begin{matrix}\underset{\alpha }{\mathop{\max }}\,\sum\limits_{i}{{{\alpha }_{i}}}-\frac{1}{2}\sum\limits_{i,j}{{{\alpha }_{i}}{{\alpha }_{j}}{{y}^{i}}{{y}^{j}}K({{x}^{i}},{{x}^{j}})} \\s.t.\left\{ \begin{matrix}0\le {{\alpha }_{i}}\le C \\\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}}=0 \\\end{matrix} \right. \\\end{matrix} \right.\end{align}\]
这是一个二次规划问题,可以用一般的二次规划方法来解,不过代价比较大,John C.Platt提出了SMO算法用来求解该优化问题。求解得到$\alpha $ 后,根据$w=\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}{{x}^{i}}}$ 和分类判别式${{w}^{T}}x+b$ 得到最终判别式\[\begin{align}{{w}^{T}}x+b=\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}<{{x}^{i}},x>}+b\end{align}\]
或者引人核函数的话写作\[\begin{align}{{w}^{T}}x+b=\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}K({{x}^{i}},x)}+b\end{align}\]
不过这里$b$ 的求解会有所不同。之前的文章SVM之对偶问题中求解$b$的方法是根据KKT条件,找到${{\alpha }_{i}}>0$对于的向量即为支持向量,就可以由${{y}^{i}}({{w}^{T}}{{x}^{i}}+b)=1$解出$b$。现在的约束条件中虽然引人了${{\xi }_{i}}$,但如果推导一下现在优化问题的KKT条件的话,会得出$0<{{\alpha }_{i}}<C\Rightarrow {{y}^{i}}({{w}^{T}}{{x}^{i}}+b)=1$ 的结论,所以现在应该仍然可以按照上述方法来解$b$。不过SMO算法有迭代更新求解的方法,是不是因为向上面那样做不太可行我还没搞清楚。
核函数通过向高维映射来解决线性不可分问题,现在有引人了惩罚机制了解决线性不可分问题问题,但不能简单地将它们看作完全独立的方法。如果仅仅依赖于惩罚机制,在样本线性不可分的情况下得到是所谓最优分类器其实也是比较差的,这是由样本本身的分布决定的,所以还是需要首先用“核函数完成映射”,使样本变得尽可能线性可分。
另外,惩罚机制也解决了噪声问题,通过对噪声数据较小的惩罚损失来换取目标函数整体上较大的优化。
不考虑惩罚机制,如果图中没有黑色的三角形样本,那分类器可能像实线那样,分类间隔还是挺大的,但这一个很像噪声的样本却将分类间隔挤压的很小,严重影响分类器的番话特性。加入惩罚机制后,新的分类器就有可能会以对这个样本的“不完美”分类为代价,换取分类间隔的提升。从(2)中目标函数$\frac{1}{2}{{\left\| w \right\|}^{2}}+C\sum\limits_{i}{{{\xi }_{i}}}$来看,分类器以第二项的增大换取了第一项的减小,是分类更加合理。从这也可以看出惩罚因子的作用,它起到了调节分类器间隔和样本惩罚直接的相对权重的作用。
写到这里,SVM的基本问题除了求解优化问题(6)的SMO算法之外,已基本完成。对于SMO算法,再学习吧~
SVM之解决线性不可分的更多相关文章
- 支持向量机SVM——专治线性不可分
SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...
- OpenCV支持向量机SVM对线性不可分数据的处理
支持向量机对线性不可分数据的处理 目标 本文档尝试解答如下问题: 在训练数据线性不可分时,如何定义此情形下支持向量机的最优化问题. 如何设置 CvSVMParams 中的参数来解决此类问题. 动机 为 ...
- 支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)
线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为 \[w^{\ast }x+b^{\ast }=0\] 以及相应的决策函数 \[f\le ...
- 文本分类学习 (八)SVM 入门之线性分类器
SVM 和线性分类器是分不开的.因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超平面将数据集分隔开来. 所以要理解SVM ...
- RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了
RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理. ...
- 矩阵乘法&矩阵快速幂&矩阵快速幂解决线性递推式
矩阵乘法,顾名思义矩阵与矩阵相乘, 两矩阵可相乘的前提:第一个矩阵的行与第二个矩阵的列相等 相乘原则: a b * A B = a*A+b*C a*c+b*D c d ...
- 【笔记】SVM思想解决回归问题
使用svm思想解决回归问题 使用svm思想解决是如何解决回归问题,其中回归问题的本质就是找一条线,能够最好的拟合数据点 怎么定义拟合就是回归算法的关键,线性回归算法就是让预测的直线的MSE的值最小,对 ...
- SVM清晰讲解——线性可分问题
转载作者:liangdas 引言: 1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine),由于其能够适应小样本的分类,分类速度快等特点,性能不差于 ...
- SVM学习笔记-线性支撑向量机
对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程. 从VC bound的角度来说,上述三条线的复杂度是一样的 Eout(w)≤Ein0+Ω(H)dvc= ...
随机推荐
- 保持简单----纪念丹尼斯•里奇(Dennis Ritchie)
http://www.ruanyifeng.com/blog/2011/10/dennis_ritchie.html
- Python的幂运算
直接用例子说明
- 多线程中sleep和wait的区别,以及多线程的实现方式及原因,定时器--Timer
1. Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即 ...
- Java实现:服务端登录系统并跳转到系统内的指定页面(不调用浏览器)
Java实现:服务端登录系统并跳转到系统内的指定页面(不调用浏览器) 1,思路:根据爬虫思想: 2,代码: /** * ClassName:AuthFr * Function: TODO * Reas ...
- Web服务器对比介绍
1.Apache Apache是非常强大的老牌Web服务器,具有模块化结构,拥有众多非常成熟稳定的模块,目前仍是使用非常广泛的服务器,但它是基于多进程HTTPServer,需要对每个用户请求创建一个子 ...
- 20145216史婧瑶《Java程序设计》第10周学习总结
20145216 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 一.网络概述 网络编程就是两个或多个设备(程序)之间的数据交换. 识别网络上的每个设备:①IP地址②域名 ...
- Linux ASLR的实现
ASLR大家都会听说过,但是Linux平台下应用程序的ASLR的情况是怎么样的呢?我在这里将ASLR分为几个小的部分来阐述,包括了栈的随机化,堆的随机化,mmap的随机化,以及pie程序运行时的主模块 ...
- Scrapy 分布式数据采集方案
运行环境 CentOS7. + Python2. + Scrapy1. + MongoDB3. + BeautifulSoup4. 编程工具 PyCharm + Robomongo + Xshell ...
- slf4j日志框架绑定机制
一.环境搭建 我们以log4j为例,探寻slf4j与log4j的绑定过程. 1.Java类 public class Slf4jBind { public static void main(Strin ...
- HTTP协议Keep-Alive模式详解和HTTP头字段总结
1.什么是Keep-Alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HT ...