1、二分类问题

  在以前的博客中,我们介绍了用于处理二分类问题的Logistic Regression算法和用于处理多分类问题的Softmax Regression算法,典型的二分类问题,如图:

对于上图的二分类问题中,“.”表示的是正类,“。”表示的是负类。我们试图寻找到图中的分隔平面,能够分隔图中的正负样本,其中,分隔超平面为:

    最终的到的分类决策函数:

        

    其中,函数sign(x)为符号函数:

        

    其中,当W*X+b*>0,时为正类。当W*X+b*<0时,为负类。

2、感知机算法

  对于二分类问题,假设有m个训练样本{(X(1),y(1)),(X(2),y(2)),.......,(X(m),y(m))}其中,y∈{-1,1}。那么,应该如何从训练中的到分隔超平面W*X+b*=0?

在感知机算法中直接使用通误分类的样本到分隔超平面之间的距离作为其损失函数,并利用梯度下降法求得误分类函数额极小值,得到最终的分隔超平面。

  设直线 L 的方程为Ax+By+C=0,点 P 的坐标为(Xo,Yo),则点 P 到直线 L 的距离为:

                                                   
 

    对于训练样本点X(i),其到分隔超平面的距离S为:

      

  其中为W的L2范数,样本点X(i)到分隔超平面的距离S如图:

    在训练样本中,对于误分类的样本(X(1),y(1)),即预测值WX(i)+b与真实值y(i)异号,即:

        

   则误分类样本到分隔超平面之间的距离为:

                    

  若不考虑,即为感知机算法的损失函数,感知机算法的损失函数为:

    

  通过求感知机损失函数的最小值求得最终的分隔超平面。

2.1、感知机算法存在的问题

  在感知机算法中,通过最小化误分类样本到分隔超平面的距离,求得最终的分隔超平面,但是对于感知机算法来说,分隔超平面参数W和b的初始值和选择误分类样本的顺序对最终的分隔超平面的计算都有影响,采用不同的初始化值或者不同的误分类点,最终的分隔超平面是不同的,如下图可以分隔除不同的超平面:

在图中的两个分隔超平面都能将正负样本区分开,对于感知机模型,采用不同的初始值或者不同的误分类点,最终的分隔超平面不同,在这些分隔超平面中是否存在一个最好的分隔超平面?

2.2、函数间隔和几何间隔

  一般来讲,一个样本点距离分隔超平面的远近可以表示分类预测的确信度,在下图中样本点A离分隔超平面最远,若预测其为正类,就比较确信该预测是正确的;而样本点C离分隔超平面最远,若预测其为正类,就不是那么确信。为了能过表示分类预测的确信程度,我们分别定义函数间隔

  函数间隔:

  在感知机模型中,我们注意到分隔超平面W*X+b确定的情况下,可以相对地表示样本点X(i)距离分隔超平面的远近,而当预测W*X(i)+b和样本标签y(i)同号时,表明最终分类是正确的,因此,可以使用y(i)*(W*X(i)+b)来表示分类的正确性和确信度,这便是函数间隔的定义。

  对于给定额训练集{(X(1),y(1)),(X(2),y(2)),.......,(X(m),y(m))}和分隔超平面,定义隔超平面关于样本点(X(i),y(i))的函数间隔为:

                           

  同时,定义分隔超平面关于训练数据集的函数为分隔超平面关于训练集中所有样本点的函数间隔的最小值:

                        

  函数间隔可以表示分类预测的正确性和确定性。但是,在分隔超平面,如果其参数W和b同时扩大为原来点额2倍,这对于分隔超平面来说,并没有任何改变,但是对于函数间隔来说,即扩大为原来的2倍。为了解决这个问题,我们引入几何间隔。

  几何间隔:

    为了能够使得间隔是一个确定值,可以对非分隔超平面的参数W加上默写约束,如归一化。在上面的图中,对于样本X(i),其到分隔超平面之间的距离S为:

                                 

  而当W*X(i)+b和样本标签y(i)同号时,表示预测正确,则样本X(i)到分隔超平面之间的距离S可以表示为:

                                           

  这便是几何间隔的定义。

  对于给定的训练集{(X(1),y(1)),(X(2),y(2)),.......,(X(m),y(m))}和分隔超平面,定义分隔超平面关于样本点(X(i),y(i))的几何间隔为:

                            

  同时,定义分隔超平面关于训练数据集的几何间隔为分隔超平面关于训练集中所有样本点的几何间隔的最小值:

                                                        

  从上面的定义不难发现,几何间隔其实就是样本到分隔超平面的距离,对于几何间隔和函数间隔,有如下关系:

                                                                     

3、支持向量机

  与感知机算法不同,在支持向量机(Support Vector Machines,SVM)中,求解出的分隔超平面不仅能够正确的划分训练数据集,而且几何间隔最大。

  1、间隔最大化

  对于几何间隔最大的分隔超平面:

                                                                          

  同时,对于每一个样本,需要满足:

                      

  考虑到几何间隔和函数间隔之间的关系,则上述的几何间隔最大的分隔超平面可以等价为:

                                                           

                     

  在函数间隔中,函数间隔的取值并不影响到最优问题的解,如上所述,当参数W和b同时扩大为原来的2倍。函数间隔也会同时扩大为原来的2倍,这对于上述的优化问题和约束条件并没有影响,因此,可以取,显然,为了最大化间隔,仅需最大化,这等价于最小化则上述问题变为:

                                         

  2、支持向量和间隔边界

    对于上图中所示的线性可分的二分类问题,在m个训练样本中,与分隔超平面距离最近的样本称为支持向量(Support Vector)。支持向量对应的约束条件为;

                                                

  当y(i)=+1时,支持向量所在的超平面为:

                                                      

  当y(i)=-1时,支持向量所在的超平面为:

                                                 

  对于支持向量所在的超平面H1和H2 ,如图所示:

                   

  在图中,超平面H1和超平面H2之间的距离成为间隔,超平面H1和超平面H2又称为间隔边界,在确定最终的分隔超平面时,只有支持向量在起作用,其他的样本点并没有起到作用,由于支持向量在确定分隔超平面中起着重要的作用,因此,在这种分类模型被称支持向量机。

  3、线性支持向量机

  在上图所示的数据集中,其条件极为苛刻,要求所有的样本点都是线性可分的,即存在分隔超平面,能够将所有的则正样本正确的区分开,但是 实际情况中数据集很难满足这个条件,对于一个数据集,其中存在部分特异点,但是将这些特异点去除后,剩下的大部分样本定组成的集合线性可分的。

  对于线性不可分的某些样本点(X(i),y(i))意味着其不能满足函数间隔最大于或等于1的约束条件,为了解决这个问题,可以对每个样本点(X(i),y(i))引进一个松弛变量ζi>=0,使得函数间隔加上松弛变量大于或等于1,这样,约束条件变为:

                                 

  同时,对每个松弛变量ζi,支付一个代价C,此时,目标函数变为:

                               

  此时的优化目标为:

      

  4、支持向量机的训练

   通过以上问题的分析,我们可以知道,在SVM中。对分隔超平面的求解转化为对如下带有约束的最小化问题的求解:

  对于带约束的优化问题,可以使用拉格朗日乘数法,将其转化为无约束优化问题的求解。对于上述的带约束的优化问题,可以转化成如下拉格朗日函数:

  其中,α=(α12,.......,αm),β=(β12,......βm),且αi≧0,βi≧0,向量α,β称为拉格朗日乘子向量.上述的最小优化问题即为:

           

  根据拉格朗日对偶性,原始问题的对偶问题为:

                   

  先求,在对拉格朗日函数L(W,b,ζ,α,β)中的W,b和ζ求偏导,并令其为0.

                             

  化简得:

          

  将上述代入到中,得到:

          

  在对求α的极大,即的对偶问题:

    

  

                 

  同时,将求解最大化问题,转化为求解最小化问题,则上述优化问题转化为:

      

    当α*为上述对偶问题的最优解是,根据可以求得原始问题的最优解:

          

    对于b的最优解b*,选择α*的一个分量α*j,其中α*j满足:

    b*为:

                              

  由线性支持向量机到非线性支持向量机

    对于一个非线性可分的问题,可以采用核函数的方式将非线性问题转化为线性问题,这里使用高斯核函数:

    

    对于非线性支持向量机,此时的优化目标为:

    

4.1、支持向量机(SVM)的更多相关文章

  1. 【IUML】支持向量机SVM

    从1995年Vapnik等人提出一种机器学习的新方法支持向量机(SVM)之后,支持向量机成为继人工神经网络之后又一研究热点,国内外研究都很多.支持向量机方法是建立在统计学习理论的VC维理论和结构风险最 ...

  2. 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类(异 ...

  3. 以图像分割为例浅谈支持向量机(SVM)

    1. 什么是支持向量机?   在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...

  4. 机器学习算法 - 支持向量机SVM

    在上两节中,我们讲解了机器学习的决策树和k-近邻算法,本节我们讲解另外一种分类算法:支持向量机SVM. SVM是迄今为止最好使用的分类器之一,它可以不加修改即可直接使用,从而得到低错误率的结果. [案 ...

  5. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  6. 支持向量机SVM——专治线性不可分

    SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...

  7. 一步步教你轻松学支持向量机SVM算法之案例篇2

    一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  8. 一步步教你轻松学支持向量机SVM算法之理论篇1

    一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  9. OpenCV 学习笔记 07 支持向量机SVM(flag)

    1 SVM 基本概念 本章节主要从文字层面来概括性理解 SVM. 支持向量机(support vector machine,简SVM)是二类分类模型. 在机器学习中,它在分类与回归分析中分析数据的监督 ...

  10. OpenCV支持向量机(SVM)介绍

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

随机推荐

  1. shiro 权限集成 sessionManager 配置 学习记录(三)

    1.shiro配置文件增加sessionManager管理 <!-- 6.shiro结合Session会话管理器 start --> <bean id="sessionMa ...

  2. sqlserver 时间函数用法

    1.DATEADD(datepart,number,date) 现在,我们希望向 "OrderDate" 添加 2 天,这样就可以找到付款日期,我们使用如下 SELECT 语句: ...

  3. Linux arp命令

    一.简介 arp命令用于操作主机的arp缓冲区,可以用来显示arp缓冲区中的所有条目.删除指定的条目或者添加静态的ip地址与MAC地址对应关系. 二.语法 -a<主机>:显示arp缓冲区的 ...

  4. MongoDBAppender

    分三步: 1. client 2. appender 3. 配置文件 logback-test.xml <configuration> <appender name="MO ...

  5. 编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum

    建议110:用类来代替enum 枚举(enum)用来表示一组固定的值.例如,为了表示星期信息,我们可以定义枚举Week: enum Week { Monday, Tuesday, Wednesday, ...

  6. 利用APT实现Android编译时注解

    摘要: 一.APT概述 我们在前面的java注解详解一文中已经讲过,可以在运行时利用反射机制运行处理注解.其实,我们还可以在编译时处理注解,这就是不得不说官方为我们提供的注解处理工具APT (Anno ...

  7. 【小梅哥FPGA进阶教程】MC8051软核在FPGA上的使用

    十.MC8051软核在FPGA上的使用 本教程内容力求以详细的步骤和讲解让读者以最快的方式学会 MC8051 IP core 的应用以及相关设计软件的使用,并激起读者对 SOPC 技术的兴趣.本实验重 ...

  8. java策略模式(及与工厂模式的区别)

    按一般教程中出现的例子理解: 简单工厂模式:客户端传一个条件进工厂类,工厂类根据条件创建相应的产品类对象,并return给客户端,供客户端使用.即客户端使用的是工厂类生产的产品对象. 策略模式:客户端 ...

  9. [LeetCode 题解]: String to Interger (atoi)

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  10. CLion编译的exe文件无法在windows下正常运行

    The program cannot start because libgcc_s_dw2-1.dll is missing from your computer. Try reinstalling ...