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. Python操作Excel删除一个Sheet

    在使用Python进行数据分析处理,操作Excel,有时需要删除某个Excel里的某个sheet,这里记录一个我测试成功的一个办法 软件环境: 1.OS:Win 10 64位 2.Python 3.7 ...

  2. Qt Setting Application Icon

    Qt4 设置应用程序图标 将一个ico图标放在资源文件夹下; 然后建立txt,输入 IDI_ICON1 DISCARABLE "myico.ico"; 保存文件,将其后缀改为.rc ...

  3. UVa10859 放置街灯

    Placing Lampposts As a part of the mission �Beautification of Dhaka City�, the government has decide ...

  4. 解决ImportError: libmysqlclient_r.so.16: cannot open shared object file-乾颐堂

    在开发一个python项目是,需要用到mysql,但是, 安装完mysql-python后import加载模块提示以下错误: ImportError: libmysqlclient_r.so.16: ...

  5. linux sed命令详解-乾颐堂CCIE

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  6. SimpleDateFormat是线程不安全的

    线程不安全的SimpleDateFormat SimpleDateFormat是线程不安全的 SimpleDateFormat是Java提供的一个格式化和解析日期的工具类,日常开发中应该经常会用到,但 ...

  7. ceph卸载

    1.正常卸载 ceph-deploy purge ceph01 ceph-deploy purgedata ceph01 rm -rf /var/lib/ceph rm -rf /etc/ceph r ...

  8. 在win10 + ie11上使用控件

    1.1. 在Win10+IE11上提示创建文件错误的问题 解决方法: 1.打开Internet选项   2.取消勾选启用保护模式   选择"不再显示此消息"

  9. 手机SLAM开发

    ...惯性定位 由简入繁 保留JPG文件. 回环 建模

  10. 【Head First Java 读书笔记】(八)接口与抽象类

    接口是什么?它是一种百分之百纯抽象的类. 什么是抽象类?即无法初始化的类.   例如,我们设计一个animal类,以此类为父类,分别设计了多种动物子类,例如Lion,Tiger,Cat,Wolf,Do ...