当前位置:   article > 正文

【机器学习】12:支持向量机原理2:软间隔与核函数处理方法_核函数、软间隔分别代表什么意思,解决什么问题

核函数、软间隔分别代表什么意思,解决什么问题

前言:

【线性可分数据】的支持向量机的原理在这里,上一篇博客也详细介绍了支持向量机的每一步算法原理,这一篇博客主要介绍针对【线性不可分数据】的处理方法,主要是软间隔与核函数的处理方法。

-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------

线性不可分的数据大致有两种情况导致的:

  1. 样本的本质是线性可分的,但由于部分噪声的影响,导致线性不可分,这种情况的解决方法是:使用软间隔
  2. 样本的本质就是线性不可分的,这种情况的解决方法是:使用核函数,将线性不可分的数据转化成线性可分的数据;

-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------

一、软间隔:

软间隔的适用范围是样本的本质是线性可分的,但由于部分噪声的影响,导致数据线性不可分。
如下图,在允许部分样本犯错的情况下,图2分割方式的鲁棒性要比图1更好,所以我们需要引入一个新变量 ξ ξ ξ:用来衡量每个错误点的 “ 犯 错 的 程 度 ” “犯错的程度”
在这里插入图片描述
结合下图也就是说:

  • 当样本点属于正确分割区域内时,样本点的 “ 犯 错 程 度 ” “犯错程度” ξ = 0 ξ=0 ξ=0。例如粉红虚线下区域的红点;
  • 当样本点超越正确分割区域后,就会对每个超越点添加一个 ξ i ξ_i ξi用来衡量它的错误程度, ξ i ξ_i ξi越大,说明该点偏的越厉害。例如粉红虚线上区域的两个红点;
  • 再结合中间分割线方程,所以 ξ i ξ_i ξi的数学表达式为: ξ i ξ_i ξi= M a x ( 0 , 1 − y i f ( X i ) ) Max(0, 1-y_if(X_i)) Max(0,1yif(Xi))

在这里插入图片描述
在上一篇博客【3.4、SVM的优化策略】处,我们依据SVM的原理得到的数学表达式如下左式:
在这里插入图片描述
其中约束条件 y ( i ) ( w T x ( i ) + b ) ≥ D y^{(i)}(w^Tx^{(i)}+b)≥D y(i)(wTx(i)+b)D,是说明任何一个点到分割线的距离都会不小于一个确切的值 D D D(经过线性变换后, D D D最后会化成1)。而如果在允许部分样本犯错的情况下引入误差 ξ ξ ξ,对每个样本点的约束条件会变成: y ( i ) ( w T x ( i ) + b ) ≥ 1 − ξ i y^{(i)}(w^Tx^{(i)}+b)≥1-ξ_i y(i)(wTx(i)+b)1ξi,随之而来的:错误点引入的误差在原有的全局损失中也要有所体现,于是就需要在原有全局损失中加上错误点带来的多余损失 ξ i ξ_i ξi
考虑到每个点的误差 ξ ξ ξ,采用软间隔的数学公式就如下左式,再将 ξ i ξ_i ξi换成数学表达式即为下右式:
在这里插入图片描述

  • 解释上式 C C C的意义: C C C是分割区域的带宽长度, C C C值越大带宽越窄,越不允许中间的分隔地带存在出错的样本; C C C越小带宽越大,越允许有较多出错的样本出现在分割区域内;
  • 求解上式的过程就是将 M i n Min Min的后半段当做新的损失函数,前半段当做后半段的 L − 2 L-2 L2正则项,使用逻辑回归的求解方式进行求解,这里不再详述;

-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------

二、核函数:

在这里插入图片描述
例如上图:数据集用一条直线 f ( x ) f(x) f(x)是不能将两类分开,但是如果用圆的方程 f ( x , y ) = x 2 + y 2 f(x,y)=x^2+y^2 f(x,y)=x2+y2就可以,也就是说当数据从低维映射到高维的时候,可能在数据发布上会发生变化。具体如下:

例如我们有一组二维数据 x = ( x 1 , x 2 ) x=(x_1,x_2) x=(x1,x2),通过维度变换,由原来的 x = ( x 1 , x 2 ) x=(x_1,x_2) x=(x1,x2)转化为 x = ( x 1 2 , x 2 2 , 2 x 1 x 2 ) x=(x_1^2,x_2^2,\sqrt2x_1x_2) x=(x12,x22,2 x1x2),也就是把原有的二维空间点,通过添加正则项重新映射到三维空间中。
在这里插入图片描述
例如上图: x = ( 0 , 0 ) x=(0,0) x=(0,0),经过映射后 x = ( 0 , 0 , 0 ) x=(0,0,0) x=(0,0,0) x = ( 1 , − 1 ) x=(1,-1) x=(1,1),经过映射后 x = ( 1 , 1 , − 2 ) x=(1,1,-\sqrt2) x=(1,1,2 )
经过重新映射后,上左图的二维数据就转换为上右图的三维分布,可以发现,处于二维图中心位置的红色区域经过映射后大多都在三维图的左边部分,而外围的蓝色区域,发布在三维图的右侧,这时就可以用一个超平面分割达到分类的目的。

2.1、出现的问题:维度爆炸问题:

原来在二维空间中一个线性不可分的问题,映射到高维空间后, 变成了线性可分的。而转化的关键部分就在于找到 x x x的映射方法,如果没有系统的映射方法,或在数据维度较大时,计算就变得很困难。

例如下式: x = ( x 1 , x 2 ) x=(x_1,x_2) x=(x1,x2)如果不做维度变换,则求取 x T z x^Tz xTz总共做了两次乘法一次加法运算;
当做了维度变换, x x x变成 Φ ( x ) Φ(x) Φ(x)后再求取 Φ ( x ) T Φ ( z ) Φ(x)^TΦ(z) Φ(x)TΦ(z)的时候,则总共做了11次乘法运算2次加法运算
如果在数据维度更大的情况下,需要多加的运算就会呈爆炸增长趋势。

那有没有既能把数据映射到高维、又减小计算量的方法呢?这里就需要核函数。
在这里插入图片描述

2.2、核函数

对比上面的例子,如果我们先计算 x T z x^Tz xTz,得到的结果是相同,而整体只做了3次乘法运算1次加法运算,相比较上面的11+2次运算已经减少很多;
在这里插入图片描述
所以如果 k ( x , z ) k(x,z) k(x,z)是核函数,那么它需要满足的条件就是: k ( x , z ) k(x,z) k(x,z)= Φ ( x T z ) Φ(x^Tz) Φ(xTz)= < Φ ( x T ) ⋅ Φ ( x ) > <Φ(x^T)·Φ(x)> <Φ(xT)Φ(x)>,通俗的解释就是:先计算中间结果再映射等于各自映射的内积。

于是新的分类函数、优化问题的表达式就变成如下:计算与上节课相似,不在赘述。
在这里插入图片描述

三、常见的核函数:

  • 多项式核: k ( x , y ) = ( x ⋅ y + c ) d k(x,y)=(x·y+c)^d k(x,y)=(xy+c)d,例如上面的例子: k ( x , y ) = ( x ⋅ y + 1 ) 2 k(x,y)=(x·y+1)^2 k(x,y)=(xy+1)2
  • 高斯径向基函数核: k ( x , y ) = e x p ( − ∣ ∣ x − y ∣ ∣ 2 / 2 σ 2 ) k(x,y)=exp(-||x-y||^2 / 2σ^2) k(x,y)=exp(xy2/2σ2)
  • Sigmod核: k ( x , y ) = t a n ( k ( x ⋅ y ) + Θ ) k(x,y)=tan(k(x·y)+Θ) k(x,y)=tan(k(xy)+Θ)

对于核函数的选择,现在还缺乏指导原则。各种实验的观察结果表明,某些问题用某些核函数效果很好,用另一些很差,但一般来讲,高斯径向基核函数是不会出现太大偏差的一种,一般作为首选。

拓展学习

1、高斯核函数将有限维映射到无限维
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/351996
推荐阅读
相关标签
  

闽ICP备14008679号