• 机器学习【二】 支持向量机


    目录

    线性可分定义

    支持向量机如何解决线性可分问题

    支持向量机的优化问题

     线性不可分情况

     核函数

    原问题和对偶问题

    如何转化为对偶问题


    线性可分定义

            线性可分(Linear Separable):存在一条直线,可以分开⚪和×;

            线性不可分(Nonlinear Separable):不存在一条直线,可以分开⚪和×;

            

             放在三位空间中就变成了一个平面:

            

             由于人眼仅限于三维空间,所以我们需要借助数学来对线性可分和线性不可分给出一个精确的定义。

            同样先以二维做例子:

            需要注意的是,这个w1和w2是人为设定的,如果反一下的话,符号也要反一下。

             我们可以假设有N个训练样本和标签,{(x1,y1),(x2,y2),……,(xn,yn)},其中,若xi属于c1,则yi = + 1,否则yi = -1.

    线性可分的严格定义:

            一个训练样本集{(x1,y1),(x2,y2),……,(xn,yn)},在 i = 1~N线性可分,是指存在(w1,w2,b)使得对 i = 1~N,有:

            (1)若 yi = +1,则w1·xi1 + w2·xi2 + b > 0

            (2)若 yi = - 1,则w1·xi1 + w2·xi2 + b < 0

    用向量形式作简化:

                                    xi=[(xi1xi2)]T" role="presentation" style="position: relative;">xi=[(xi1xi2)]T    ωi=[(ω1ω2)]T" role="presentation" style="position: relative;">ωi=[(ω1ω2)]T

            (1)若yi" role="presentation" style="position: relative;">yi = + 1,则 ωTxi+b>0" role="presentation" style="position: relative;">ωTxi+b>0

            (2)若yi" role="presentation" style="position: relative;">yi = - 1,则 ωTxi+b<0" role="presentation" style="position: relative;">ωTxi+b<0

    支持向量机如何解决线性可分问题

            从前面可以引出一个问题:在无数多个分开各个类别的超平面中,到底哪一个最好呢?

            例如下面三条线,哪一条更好?

             大多人应该都会选择2号线,根据没有免费午餐定理,每一条线的表现应该是一样的。这里就需要考虑训练样本的位置在特征空间上有测量的误差,而2号线对误差的容忍程度最高,也就是容错最大。

            那么接下来就是考虑怎么寻找2号线?

    VAPNIK给出的回答是:

            对于任意一条符合条件的线,尽可能地向两侧移动,即移动到上图中的两条虚线位置。此时我们定义这两条虚线碰到的训练样本叫做这个数据集的支持向量,把两条线之间的距离称为间隔(margin),我们所要求的2号线就是间隔最大的两条线的正中间位置的那条。

    支持向量机的优化问题

            这里主要讲如何用严格的数学,寻找最优分类超平面的过程,写成一个最优化问题。

            我们假设训练样本集是线性可分的,支持向量机需要寻找的是最大化间隔(margin)的超平面,可以写成如下的形式:

            最小化(Minimize):12||ω||2" role="presentation" style="position: relative;">12||ω||2

            限制条件: yi(ωTxi+b)1,(i=1N)" role="presentation" style="position: relative;">yi(ωTxi+b)1,(i=1N)

            其中,(xi,yi),i=1N" role="presentation" style="position: relative;">(xi,yi),i=1N 是已知的,(ω,b)" role="presentation" style="position: relative;">(ω,b)是待求得,这显然是凸优化(Convex Optimization)问题中的二次规划问题。

    下面重点开始解释:

    先要讲两个事实:

            事实一:

                    ωTx+b=0" role="presentation" style="position: relative;">ωTx+b=0 与 (αωT)x+(αb)=0" role="presentation" style="position: relative;">(αωT)x+(αb)=0 是同一个超平面。 (α0)" role="presentation" style="position: relative;">(α0)

            事实二:

                    一个点 X0" role="presentation" style="position: relative;">X0 到超平面 ωTx+b=0" role="presentation" style="position: relative;">ωTx+b=0 的距离    d=|ωTx0+b|ω" role="presentation" style="position: relative;">d=|ωTx0+b|ω  .

    最小化(Minimize):12||ω||2" role="presentation" style="position: relative;">12||ω||2

              ω=[ω1ω2ωm]" role="presentation" style="position: relative;">ω=[ω1ω2ωm]   ,        ||ω||2=ω12+ω22+...+ωm2=i=1mωi2" role="presentation" style="position: relative;">||ω||2=ω12+ω22+...+ωm2=i=1mωi2

            基于上面两个事实,我们可以找到一个α" role="presentation" style="position: relative;">α进行缩放 (ω,b)(αω,αb)" role="presentation" style="position: relative;">(ω,b)(αω,αb) ,最终使得:

                    在支持向量 x0" role="presentation" style="position: relative;">x0 上有 |ωTx0+b|=1" role="presentation" style="position: relative;">|ωTx0+b|=1

                    而在非支持向量上 |ωTx0+b|>1" role="presentation" style="position: relative;">|ωTx0+b|>1

                    此时 d=1ω" role="presentation" style="position: relative;">d=1ω,要最大化d,就是要最小化 ω" role="presentation" style="position: relative;">ω

    限制条件: yi(ωTxi+b)1,(i=1N)" role="presentation" style="position: relative;">yi(ωTxi+b)1,(i=1N)

            其中 yi" role="presentation" style="position: relative;">yi 的作用是协调超平面的作用,使得一边的  (ωTx+b)>1" role="presentation" style="position: relative;">(ωTx+b)>1,另一边的(ωTx+b)<1" role="presentation" style="position: relative;">(ωTx+b)<1

     二次规划的定义是:

            (1)目标函数(Objective Function)是二次项。

            (2)限制条件是一次项。

    要么无解,要么只有唯一的最小值。

     线性不可分情况

            如果线性不可分,那么上面是无解的,即不存在  ω" role="presentation" style="position: relative;">ω 和 b 满足上面的所有N个限制条件。所以我们需要放松限制条件:

            限制条件改写为:    yi(ωTφ(Xi)+b)1δi,(i=1N)" role="presentation" style="position: relative;">yi(ωTφ(Xi)+b)1δi,(i=1N) , 其中 δi" role="presentation" style="position: relative;">δi 为松弛变量。

            改造后的支持向量机优化版本:

                    最小化 :12ω2+Ci=1Nδi" role="presentation" style="position: relative;">12ω2+Ci=1Nδi   或 12ω2+Ci=1Nδi2" role="presentation" style="position: relative;">12ω2+Ci=1Nδi2     

                    限制条件: (1)δ0.(i=1N)" role="presentation" style="position: relative;">δ0.(i=1N)

                                       (2)yi(ωTφ(Xi)+b)1δi,(i=1N)" role="presentation" style="position: relative;">yi(ωTφ(Xi)+b)1δi,(i=1N)

            比例因子C 起到了平衡两项的关键作用,是由人为设定的。

            我们把人为事先设定的参数叫做算法的超参数。

            通常会不断变化C的值 => 同时测试算法的识别率 => 选取合适的超参数C  (调参侠出现啦!!)

             支持向量机采用的是将特征空间由低维映射到高维,然后再用线性超平面对数据进行分类。

    一个定理:

            假设在一个M维空间上随机取N个训练样本,随机得对每个训练样本赋予标签+1 或 -1,若这些训练样本线性可分得概率为P(M),

    则有:当M趋于无穷大时,P(M) = 1.

    直观上地感受一下: 当特征空间得维度M增加的时候,带估计参数(ω,b)" role="presentation" style="position: relative;">(ω,b)的维度也会增加,也就是说整个算法模型的自由度会增加,当然更容易分开低维的时候无法分开的数据集。

     核函数

            这里以具体研究 φ(Xi)" role="presentation" style="position: relative;">φ(Xi) 的形式,来引入核函数的概念。

    Vladimir Naumovich Vapnik:我们可以不用知道 φ(X)" role="presentation" style="position: relative;">φ(X) 的具体形式。

             我们定义 K(X1,X2)" role="presentation" style="position: relative;">K(X1,X2) 为核函数。 

            核函数K和映射 φ" role="presentation" style="position: relative;">φ 是一一对应的关系。

    K(X1,X2)" role="presentation" style="position: relative;">K(X1,X2) 能写成 φ(X1)Tφ(X2)" role="presentation" style="position: relative;">φ(X1)Tφ(X2) 的充要条件:

            (1)K(X1,X2)=K(X2,X1)" role="presentation">K(X1,X2)=K(X2,X1) (交换性)

            (2)Ci(i=1N),Ni=1Nj=1NCiCjK(Xi,Xj)>=0" role="presentation">Ci(i=1N),Ni=1Nj=1NCiCjK(Xi,Xj)>=0 (半正定性)

    原问题和对偶问题

    原问题的定义:

            最小化: f(ω)" role="presentation" style="position: relative;">f(ω)

            限制条件: gi(ω)<=0i=1K" role="presentation" style="position: relative;">gi(ω)<=0i=1K ,

                               hi(ω)=0i=1m" role="presentation" style="position: relative;">hi(ω)=0i=1m

    定义该原问题的对偶问题如下:

            定义函数: L(ω,α,β)=f(ω)+i=1Kαigi(ω)+i=1Kβihi(ω)=f(ω)+αTg(ω)+βTh(ω)" role="presentation" style="position: relative;">L(ω,α,β)=f(ω)+i=1Kαigi(ω)+i=1Kβihi(ω)=f(ω)+αTg(ω)+βTh(ω)

            其中, α=[α1,α2,...,αK]T" role="presentation" style="position: relative;">α=[α1,α2,...,αK]T,

                       β=[β1,β2,...,βM]T" role="presentation" style="position: relative;">β=[β1,β2,...,βM]T,

                       g(ω)=[g1(ω),g2(ω),...,gK(ω)]T" role="presentation" style="position: relative;">g(ω)=[g1(ω),g2(ω),...,gK(ω)]T,

                       h(ω)=[h1(ω),h2(ω),...,hM(ω)]T" role="presentation" style="position: relative;">h(ω)=[h1(ω),h2(ω),...,hM(ω)]T,

            在此基础上,定义对偶问题如下:

                    最大化: θ(α,β)=infL(ω,α,β)" role="presentation" style="position: relative;">θ(α,β)=infL(ω,α,β) ,

                    限制条件: αi0,i=1K" role="presentation" style="position: relative;">αi0,i=1K

    综合原问题和对偶问题的定义得到:

    定理一:

            如果 ω" role="presentation" style="position: relative;">ω 是原问题的解,(α,β)" role="presentation" style="position: relative;">(α,β) 是对偶问题的解,则有:

                    f(ω)θ(α,β)" role="presentation" style="position: relative;">f(ω)θ(α,β)

            我们定义 f(ω)θ(α,β)" role="presentation" style="position: relative;">f(ω)θ(α,β) 为对偶差距, 显然 ≥ 0.

    强对偶定理:

            如果 g(ω)=Aω+b,h(ω)=Cω+d,f(ω)" role="presentation" style="position: relative;">g(ω)=Aω+b,h(ω)=Cω+d,f(ω) 为凸函数,则有f(ω)=θ(α,β)" role="presentation" style="position: relative;">f(ω)=θ(α,β),即对偶差距为0.

            (也就是说,如果原问题的目标函数是凸函数,限制条件是线性函数,那么对偶差距等于0)

    根据定理一推出的不等式:

            若 f(ω)=θ(α,β)" role="presentation" style="position: relative;">f(ω)=θ(α,β) ,则定理一中必然能够推出,对于所有的 i=1K" role="presentation" style="position: relative;">i=1K ,要么 αi=0" role="presentation" style="position: relative;">αi=0 ,要么gi(ω)=0" role="presentation" style="position: relative;">gi(ω)=0 。这个条件成为KKT条件。

    如何转化为对偶问题

     回顾一下。

    首先: δi0,(i=1N)" role="presentation" style="position: relative;">δi0,(i=1N)  转换成 δi0,(i=1N)" role="presentation" style="position: relative;">δi0,(i=1N)

    得到:  最小化: 12ω2Ci=1Nδi" role="presentation" style="position: relative;">12ω2Ci=1Nδi  或  12ω2+Ci=1Nδi2" role="presentation" style="position: relative;">12ω2+Ci=1Nδi2

                 限制条件:(1)δi0,(i=1N)" role="presentation" style="position: relative;">δi0,(i=1N)

                                   (2)1+δiyiωTφ(Xi)yib0(i=1N)" role="presentation" style="position: relative;">1+δiyiωTφ(Xi)yib0(i=1N)

    将对偶问题写成如下形式:

            最大化:θ(α,β)=infω,δi,b{12ωTCi=1Nβiδi+i=1Nαi[1+δiyiωTφ(Xi)yib]}" role="presentation" style="position: relative;">θ(α,β)=infω,δi,b{12ωTCi=1Nβiδi+i=1Nαi[1+δiyiωTφ(Xi)yib]}

            限制条件: (1)αi0" role="presentation" style="position: relative;">αi0

                               (2)βi0" role="presentation" style="position: relative;">βi0

            

  • 相关阅读:
    什么是单测
    ToolJet:开源低代码框架,轻松构建复杂可响应界面 | 开源日报 No.78
    基于SpringBoot的教学资源库系统的设计与实现
    全数字系列-麦克风K歌模组-搭配投影仪专业方案
    arduino 记录
    .netcore 连接 apache doris
    android 12 framework开发第53节-Activity的reLaunch及onConfigurationChanged android源码分析
    使用 KeyValueDiffers 检测Angular 对象的变化
    安卓架构组件-依赖注入
    配置高级 --------打包与运行---配置高级---多环境开发---日志
  • 原文地址:https://blog.csdn.net/Isaac_gk/article/details/127374427