支持向量机
(一)支持向量机的概念
(1)支持向量机 & 逻辑回归算法
支持向量机与逻辑回归算法一样,都是用来解决分类问题的。但是它们之间是有一定的联系与区别的。
联系:
- 都是监督的分类算法。
- 都是线性分类方法(不考虑核函数时)。
- 都是判别模型。
区别:
- 损失函数的不同,LR是对数损失函数,SVM是hinge损失函数。
- SVM不能产生概率,LR可以产生概率。
- SVM自带结构风险最小化,LR则是经验风险最小化。
- SVM会用核函数,而LR一般不用核函数。
- LR和SVM在实际应用的区别:根据经验来看,对于小规模数据集,SVM的效果要好于LR,但是大数据中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,所以经常会被大量采用。
补充知识:
- 判别模型 :是直接生成一个表示的判别函数(或预测模型)。SVM、LR、KNN和决策树都是判别模型。
- 生成模型:是先计算联合概率分布,然后通过贝叶斯公式转化为条件概率。朴素贝叶斯和隐马尔可夫模型是生成模型。
- 经验风险:对所有训练样本都求一次损失函数,再累加求平均。即,模型f(x)对训练样本中所有样本的预测能力。
- 期望风险:对所有样本(包含未知样本和已知的训练样本)的预测能力,是全局概念。(经验风险则是局部概念,仅仅表示决策函数对训练数据集里的样本的预测能力。)
- 结构风险:对经验风险和期望风险的折中,在经验风险函数后面加一个正则化项(惩罚项),是一个大于0的系数λ。J(f)表示的是模型的复杂度。
(2)通俗理解
首先考虑最简单的情况:豌豆和米粒,用筛子就可以将它们分开,小颗粒漏下去,大颗粒保留。用一个函数来表示就是:当直径d大于某个值D,就判定为豌豆,小于某个值就是米粒。即:
d > D d>D d>D,豌豆
d < D d<D d<D,米粒
在数轴上表示:在直径d左边就是米粒,右边就是豌豆,这是一维的情况。
但实际问题并没有那么容易,考虑不止是大小的问题,还可能有多个特征,比如说一种花有两个品种,那么要如何去分类呢?
这时候可以将特征分成颜色 x x x和形状特征 y y y,把所有数据放在二维平面展示出来。理论上,如果只有两个特征可以找到一条直线把这两类划分开来,就实现了分类处理。比如有一条直线 x + y − 5 = 0 x+y-5=0 x+y−5=0,把某个非训练集的数据代入式子里,只要结果 x + y − 5 > 0 x+y-5>0 x+y−5>0就认定是A类,反之,认定是B类。
以此类推,还有三维、四维,甚至n维的分类,这样构造的划分方式就可能不是直线,而是平面、超平面或者曲面,然后通过某些函数来转换,就可以转化成多维的分类问题,这就是核函数的思想。例如,分类函数为 x 2 + y 2 − 4 = 0 x^{2}+y^{2}-4=0 x2+y2−4=0,这是一个圆,令 x 2 = a , y 2 = b x^{2}=a,y^{2}=b x2=a,y2=b,这就转化成了 a + b − 4 = 0 a+b-4=0 a+b−4=0这样的直线问题了。这就是支持向量机的思想。
提问:什么叫支持向量机?
解释:
支持向量:数据集中的某一些点,位置比较特别。就像 x + y − 5 = 0 x+y-5=0 x+y−5=0这条直线,直线上面区域 x + y − 5 > 0 x+y-5>0 x+y−5>0的全是A类,下面区域 x + y − 5 < 0 x+y-5<0 x+y−5<0都是B类,当找这条直线时,一般就看聚集在一起的两类数据,它们各自的最靠近划分直线的那些点,而其他点对这条直线的最终位置的确定是没有用的,这些靠近的点就称为“支持点”。在数学上,点又称为向量,所以又把“支持点”称为“支持向量”。(上图中,粉红色线和蓝色线上的点,就是支持向量)机:是算法的意思,在机器学习领域中常常用“机”表示算法。
提问:为什么叫支持向量机(Support vector machine)?
解释:
如上图所示。之所以称为支持向量机,是由于其核心理念是:支持向量样本会对识别问题起到关键性作用。通俗来说,就是那些在决策边界上的点(即 α α α不为0的点)对分类起作用,而其他不在决策边界(即 α α α为0的点)对解决问题是不起作用的。
那么为什么会叫“机”,而不叫网络或者算法之类的呢?查了资料,有意思的是:据说是为了赶潮流,更加吸引人而称为“机”。
(3)支持向量机的开发流程
- 收集数据:可以使用任意方法。
- 准备数据:需要数值型数据。
- 分析数据:有助于可视化分隔超平面。
- 训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优。
- 测试算法:十分简单的计算过程就可以实现。
- 使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类分类器,对多类问题应用SVM需要对代码做一些修改。
(4)支持向量机的特点
- 优点:泛化(由具体的、个别的扩大为一般的,就是说:模型训练完后的新样本)错误率低,计算开销不大,结果易理解。
- 缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适合于处理二分类问题。
- 使用数据类型:数值型和标称型数据。
(二)支持向量机的原理
(1)由线性分类开始
首先,举一个简单的二分类的例子。如上图所示,有一个二维平面,平面上有两种不同的数据,分别用
o
o
o和
×
×
×表示。这些数据是线性可分的,因此可以用一条直线将这两种数据划分开,而这条分割直线则称为分割超平面(当数据集是1024维时,需要1023维来划分数据集,也就是说需要N-1维的对象来分隔,这个对象就是超平面),在这个超平面左边的数据点对应的
y
y
y全是
−
1
-1
−1,则右边数据点对应的
y
y
y全是
1
1
1。
名词讲解:
- 线性可分与线性不可分:
线性可分,是指可以用一个线性函数把样本没有误差地分开。(线性函数:二维空间中的直线、三维空间中的平面以及高维空间中的其他线性函数。)
线性不可分,是指有部分样本用线性分类面划分时会产生分类误差的情况。在这种情况下,SVM就通过一个非线性映射函数把样本映射到一个线性可分的高维空间,并建立线性分类面,则该高维空间的分类面对应的就是输入空间中的非线性分类面。(示意图如下所示)
- 超平面:当数据集是1024维时,需要1023维来划分数据集,也就是说需要N-1维的对象来分隔,这个对象就是超平面。通俗来说,就是当数据集的维数越高,不能用图形来表示的分隔对象就称为“超平面”。
观察上图发现,中间实线代表的超平面“抗扰动”性最好,因为这个平面离直线两边的数据间隔最大,对训练集的数据的噪声有最大的”容忍能力“。
这个超平面可以用函数 f ( x ) = w T x + b f(x)=w^{T}x+b f(x)=wTx+b表示。
当 w T x + b = 0 w^{T}x+b=0 wTx+b=0 时, x x x便是位于超平面上的点;
当 w T x + b > 0 w^{T}x+b>0 wTx+b>0 时, x x x对应 y = 1 y=1 y=1 的数据点;
当 w T x + b < 0 w^{T}x+b<0 wTx+b<0 时, x x x对应 y = − 1 y=-1 y=−1 的数据点。
我就产生了一个疑问,为什么划分为 y = 1 y=1 y=1 和 y = − 1 y=-1 y=−1呢?其他的数值可不可以呢? 答案是肯定的,可以使用其他数值表示。比如说,可以使用 y = − 100 y=-100 y=−100 表示反例, y = 200 y=200 y=200 表示正例,或者 y = 0 y=0 y=0 表示反例, y = 30 y=30 y=30 表示正例。y只是一个label(标识),标注为 − 1 , 1 {-1,1} −1,1只是为了描述方便。若 y = 0 y=0 y=0 表示反例, y = 30 y=30 y=30 表示正例,需要将分正类的标准变为 ( y − 15 ) ∗ f ( x ) > 0 (y-15)*f(x)>0 (y−15)∗f(x)>0 即可。
又产生了一个疑问:将正负样本划分为1和-1还有什么其他好处吗? 正如上面解释的,第一是为了描述方便;第二是为了构为了使得后面距离 y ∗ f ( x ) > 0 y*f(x)>0 y∗f(x)>0成立,如果负样本用0表示, y ∗ f ( x ) y*f(x) y∗f(x)就都等于0了。
接下来,想要确定分类函数 f ( x ) = w T x + b f(x)=w^{T}x+b f(x)=wTx+b中的两个参数 w w w 和 b b b(其中 w w w 是法向量, b b b 是截距),该如何去确定呢?答案是寻找两条边界端或者极端划分直线中间的最大间隔。
(2)为何需要最大化间隔
寻找最大间隔的目的:为了能更好的划分不同类别的点, 如果我们在边界的位置发生了一个小错误,如它在垂直方向上被颠倒,这就会降低导致错误分类的几率。
为了说明最大间隔,首先来了解 函数间隔(Functional margin)与几何间隔(Geometrical margin) 之间的关系。
通常来说,一个点距离超平面的远近可以为分类预测的确信度或者准确度。
在超平面 w T x + b = 0 w^{T}x+b=0 wTx+b=0 确定的情况下, ∣ w T x + b ∣ |w^{T}x+b| ∣wTx+b∣可以表示点 x x x到距离超平面的远近。当 ∣ w T x + b ∣ |w^{T}x+b| ∣wTx+b∣的符号与类标记 y y y的符号一致时,表示分类正确,反之,分类不正确。(通俗来说,就是根据 y ( w T + b ) y(w^{T}+b) y(wT+b) 的正负性来判定或者表示分类的正确性和确信度)
因此,引出了定义样本到分类间隔距离的函数间隔的概念。
- 函数间隔的定义: γ ^ = y ( w T + b ) = y f ( x ) ⋯ ⋯ ① \hat{\gamma} =y(w^{T}+b)=yf(x) \cdots \cdots① γ^=y(wT+b)=yf(x)⋯⋯①
- 关于超平面
(
w
,
b
)
(w,b)
(w,b)关于训练集
T
T
T 的函数间隔的定义:
设法找出超平面 ( w , b ) (w,b) (w,b)关于训练集 T T T中所有样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的函数间隔的最小值,其中, x x x是特征, y y y是结果标签, i i i是第 i i i个样本。 γ ^ = m i n γ ^ i ⋯ ⋯ ② \hat{\gamma} =min\hat{\gamma} _{i} \cdots \cdots② γ^=minγ^i⋯⋯② 这样又产生了一个问题,上面定义的函数间隔虽然可以表示分类预测的正确性与确信度,但在选择分类超平面时,只有函数间隔是不够完整的。如果成比例的改变 w w w和 b b b(比如,变为 2 w 2w 2w和 2 b 2b 2b),虽然超平面没有改变,但间隔函数的值 f ( x ) f(x) f(x)变成了原来的2倍。
为了解决这个问题,可以对法向量 w w w加上约束条件,使得表面上看起来规范化。因此,就引出了真正定义点到超平面的距离——几何间隔 。
- 几何间隔的定义:(下图表示超平面)
公式解释:
如图所示,有: x = x 0 + γ w ∥ w ∥ ⋯ ⋯ ③ x=x_{0}+\gamma\frac{w}{\left \| w \right \|} \cdots \cdots③ x=x0+γ∥w∥w⋯⋯③ 又有: x 0 x_{0} x0在超平面上,所以满足 f ( x 0 ) = 0 f(x_{0})=0 f(x0)=0 w T x + b = 0 ⋯ ⋯ ④ w^{T}x+b=0\cdots \cdots④ wTx+b=0⋯⋯④ 将③代入④得: γ = w T x + b ∥ w ∥ = f ( x ) ∥ w ∥ ⋯ ⋯ ⑤ \gamma =\frac{ w^{T}x+b }{\left \| w \right \|}=\frac{ f(x)}{\left \| w \right \|} \cdots \cdots⑤ γ=∥w∥wTx+b=∥w∥f(x)⋯⋯⑤其中, ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣为 w w w的二阶范数 。
详细的公式求解请参考 最大间隔分类器 推导
为了得到
γ
\gamma
γ的绝对值,另
γ
\gamma
γ乘上对应的类别
y
y
y,即可得出几何间隔的计算公式(用
γ
^
\hat{\gamma }
γ^表示):
γ
^
=
y
γ
=
γ
^
∥
w
∥
⋯
⋯
⑥
\hat{\gamma }=y\gamma=\frac{\hat{\gamma }}{\left \| w \right \|} \cdots \cdots⑥
γ^=yγ=∥w∥γ^⋯⋯⑥
从上述的定义可以看出,几何间隔就是函数间隔除以
∥
w
∥
{\left \| w \right \|}
∥w∥,且函数间隔
y
(
w
T
+
b
)
=
y
f
(
x
)
y(w^{T}+b)=yf(x)
y(wT+b)=yf(x)实际上就是
∣
f
(
x
)
∣
\left | f(x) \right |
∣f(x)∣,是人为定义的一个间隔度量。其实几何间隔公式应该为:
γ
^
=
∣
f
(
x
)
∣
∥
w
∥
⋯
⋯
⑦
\hat{\gamma }=\frac{\left | f(x) \right |}{\left \| w \right \|}\cdots \cdots⑦
γ^=∥w∥∣f(x)∣⋯⋯⑦这才是直观上的点到超平面的距离。
对比二维空间中点到直线的距离公式:若一条直线的方程ax+by+c=0,点P的坐标是(x0,y0),该点到直线的距离的公式如下所示。
如果用向量表示,假设 w = ( a , c ) , f ( x ) = w . x + b w=(a,c),f(x)=w.x+b w=(a,c),f(x)=w.x+b,那么距离公式为 γ ^ = ∣ f ( x ) ∣ ∥ w ∥ \hat{\gamma }=\frac{\left | f(x) \right |}{\left \| w \right \|} γ^=∥w∥∣f(x)∣。
(3)最大间隔分类器
对一个数据点进行分类,当超平面离数据点的间隔越大,则分类的确信度也越大。为了使得分类的确信度尽可能高,要让所选择的超平面能够最大化这个间隔的值。如下图所示,间隔为
G
a
p
/
2
Gap/2
Gap/2。
从前面的推导中可以知道,函数间隔不适用求最大化间隔值,由于在超平面固定后,等比例地缩放
w
w
w和
b
b
b,会导致
f
(
x
)
=
w
T
x
+
b
f(x)=w^{T}x+b
f(x)=wTx+b的值任意大。但几何间隔除以
∥
w
∥
{\left \| w \right \|}
∥w∥,使得在缩放
w
w
w和
b
b
b的时候,几何间隔
γ
^
\hat{\gamma }
γ^的值不会改变,只会随着超平面的变化而变化,因此它更适合用于间隔最大化。
于是,就可以导出最大间隔分类器的计算公式为:(需要参数 w w w和 b b b都取得最大值) m a x γ ^ = m a x w , b 1 ∥ w ∥ ⋯ ⋯ ⑧ max\hat{\gamma }=\underset{w,b}{max}\frac{1}{\left \| w \right \|}\cdots \cdots⑧ maxγ^=w,bmax∥w∥1⋯⋯⑧ 其中,需要满足一些条件,根据间隔的定义,有: y i ( w T x i + b ) = γ ^ i ≥ γ ^ ( i = 1 , 2 , ⋯ , n ) ⋯ ⋯ ⑨ y_{i}(w^{T}x_{i}+b)=\hat{\gamma }_{i}\geq \hat{\gamma } (i=1,2,\cdots ,n)\cdots \cdots⑨ yi(wTxi+b)=γ^i≥γ^(i=1,2,⋯,n)⋯⋯⑨
即: m a x γ ^ = m a x w , b 1 ∥ w ∥ s . t . y i ( w T x i + b ) ≥ 1 ( i = 1 , 2 , ⋯ , n ) ⋯ ⋯ ⑩ \begin{matrix}max\hat{\gamma }=\underset{w,b}{max}\frac{1}{\left \| w \right \|} \\s.t.y_{i}(w^{T}x_{i}+b)\geq1 (i=1,2,\cdots ,n)\end{matrix}\cdots \cdots⑩ maxγ^=w,bmax∥w∥1s.t.yi(wTxi+b)≥1(i=1,2,⋯,n)⋯⋯⑩ 其中,s.t.的意思是subject to,它导出的是约束条件。上式也称为SVM的基本型目标函数。
相当于在约束条件 y i ( w T x i + b ) ≥ 1 ( i = 1 , 2 , ⋯ , n ) y_{i}(w^{T}x_{i}+b)\geq1 (i=1,2,\cdots ,n) yi(wTxi+b)≥1(i=1,2,⋯,n)下,最大化这个 1 ∥ w ∥ \frac{1}{\left \| w \right \|} ∥w∥1值。
上面的公式也等价为: m i n w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ≥ 1 ( i = 1 , 2 , ⋯ , n ) ⋯ ⋯ ⑪ \begin{matrix}\underset{w,b}{min}\frac{1}{2}{\left \| w \right \|} ^{2}\\s.t.y_{i}(w^{T}x_{i}+b)\geq1 (i=1,2,\cdots ,n)\end{matrix}\cdots \cdots⑪ w,bmin21∥w∥2s.t.yi(wTxi+b)≥1(i=1,2,⋯,n)⋯⋯⑪
如上图所示,中间实线就是寻找到的最优超平面,它到两条虚线边界的距离相等,这个距离就是几何间隔
γ
^
\hat{\gamma }
γ^,两条虚线间隔边界之间的距离等于
2
γ
^
2\hat{\gamma }
2γ^,虚线间隔边界上的点就是支持向量。这些支持向量恰好位于间隔边界上,所以它们满足
y
(
w
T
x
+
b
)
=
1
y(w^{T}x+b)=1
y(wTx+b)=1或者
y
(
w
T
x
+
b
)
=
−
1
y(w^{T}x+b)=-1
y(wTx+b)=−1;不是支持向量的点,则有
y
(
w
T
x
+
b
)
>
1
y(w^{T}x+b)>1
y(wTx+b)>1或者
y
(
w
T
x
+
b
)
<
−
1
y(w^{T}x+b)<-1
y(wTx+b)<−1。
(4)凸优化
下面我们来讲一讲如何优化支持向量机的问题。我们可以看到,⑩式最大间隔分类器属于二次的,约束条件是线性的,这是一个凸二次规划的问题。这类问题可以直接用现成的QP (Quadratic Programming)优化计算包求解,若利用“对偶问题”来求解,效果会更好。本质上就是求线性不等式的二次优化问题。
提问:什么是凸?凸优化的含义是什么?
解释:
凸的几何意义表示为:如果集合C中任意2个元素连线上的点也在集合C中,则C为凸集。
凸优化就是给定一个凸函数,去寻找最低点。对于凸优化问题来说,局部最优解就是全局最优解。
更详细的解释可以参考 : 关于凸的详细解释
提问:为什么是二次规划问题?
解释:给一些概念来理解一下。
- 目标函数和约束条件都是变量的线性函数,叫做线性规划问题。
- 目标函数是变量的二次函数,约束条件是变量的线性函数,叫做二次规划问题。
- 目标函数和约束条件都是非线性函数,叫做非线性规划问题。
二次规划问题在数学上有其计算公式:
其约束条件为:
α
≥
0
,
∑
i
=
1
m
α
i
⋅
l
a
b
e
l
(
i
)
=
0
\alpha\geq0,\sum_{i=1}^{m}\alpha _{i}\cdot label^{(i)}=0
α≥0,i=1∑mαi⋅label(i)=0
其中,尖括号表示两个向量的内积。上面的公式是基于数据点的,
l
a
b
e
l
(
i
)
,
l
a
b
e
l
(
j
)
,
x
(
i
)
,
x
(
j
)
label^{(i)},label^{(j)},x^{(i)},x^{(j)}
label(i),label(j),x(i),x(j)都是已知数,表示数据集中
x
x
x对应的数值为
l
a
b
e
l
label
label(比如,
x
(
i
)
x^{(i)}
x(i)对应的是
l
a
b
e
l
(
i
)
label^{(i)}
label(i)),
α
\alpha
α是拉格朗日乘子。
α
i
\alpha_{i}
αi和
α
j
\alpha_{j}
αj在SMO优化算法中会使用到。
(5)利用拉格朗日函数求二次优化问题
为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题最优解。拉格朗日对偶性,是指通过给每一个约束条件加上一个拉格朗日乘子,然后定义出拉格朗日函数,通过该函数将约束条件融合进目标函数中。目的是,只需要通过要给目标函数包含约束条件,就可以清楚解释问题。
提问:什么是拉格朗日乘子法?
解释:基本的拉格朗日乘子法就是求函数 f ( x 1 , x 2 , . . . ) f(x1,x2,...) f(x1,x2,...)在约束条件 g ( x 1 , x 2 , . . . ) = 0 g(x1,x2,...)=0 g(x1,x2,...)=0下的极值的方法。其主要思想是将约束条件函数与原函数联立,从而求出使原函数取得极值的各个变量的解。
(摘自百度百科)
回顾一下,公式⑩属于SVM的基本目标函数:
m
a
x
γ
^
=
m
a
x
w
,
b
1
∥
w
∥
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
(
i
=
1
,
2
,
⋯
,
n
)
⋯
⋯
⑩
\begin{matrix}max\hat{\gamma }=\underset{w,b}{max}\frac{1}{\left \| w \right \|} \\s.t.y_{i}(w^{T}x_{i}+b)\geq1 (i=1,2,\cdots ,n)\end{matrix}\cdots \cdots⑩
maxγ^=w,bmax∥w∥1s.t.yi(wTxi+b)≥1(i=1,2,⋯,n)⋯⋯⑩
为了求解这个函数,常规套路是:将求解极大值问题转换成极小值问题,也就是公式⑪所示。
m
i
n
w
,
b
1
2
∥
w
∥
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
(
i
=
1
,
2
,
⋯
,
n
)
⋯
⋯
⑪
\begin{matrix}\underset{w,b}{min}\frac{1}{2}{\left \| w \right \|} ^{2}\\s.t.y_{i}(w^{T}x_{i}+b)\geq1 (i=1,2,\cdots ,n)\end{matrix}\cdots \cdots⑪
w,bmin21∥w∥2s.t.yi(wTxi+b)≥1(i=1,2,⋯,n)⋯⋯⑪ 那么如何进一步求解呢?这就需要使用拉格朗日乘子法进行求解。
公式⑪属于带约束的优化问题,基本公式写为: m i n x f 0 ( x ) \underset{x}{min}f_{0}(x) xminf0(x) s . t . h i ( x ) = 0 , i = 1 , ⋯ , q f i ( x ) ≤ 0 , i = 1 , ⋯ , m \begin{aligned}s.t.&h_{i}(x)=0,i=1,\cdots,q\\ &f_{i}(x)\leq 0,i=1,\cdots,m \\\end{aligned} s.t.hi(x)=0,i=1,⋯,qfi(x)≤0,i=1,⋯,m 对公式⑪每一个约束(共有n个约束项),添加拉格朗日乘子 α i ≥ 0 \alpha_{i}\geq0 αi≥0,则整个问题的目标函数可写为: L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) ) ⋯ ⋯ ⑫ L(w,b,\alpha )=\frac{1}{2}\left \| w \right \|^{2}+\sum_{i=1}^{n}\alpha _{i}(1-y_{i}(w^{T}x_{i}+b))\cdots \cdots⑫ L(w,b,α)=21∥w∥2+i=1∑nαi(1−yi(wTxi+b))⋯⋯⑫ 或者 L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i ( y i ( w T x i + b ) − 1 ) ⋯ ⋯ ⑫ L(w,b,\alpha )=\frac{1}{2}\left \| w \right \|^{2}-\sum_{i=1}^{n}\alpha _{i}(y_{i}(w^{T}x_{i}+b)-1)\cdots \cdots⑫ L(w,b,α)=21∥w∥2−i=1∑nαi(yi(wTxi+b)−1)⋯⋯⑫约束条件为: y i ( w T x i + b ) ≥ 1 ( i = 1 , 2 , ⋯ , n ) y_{i}(w^{T}x_{i}+b)\geq1 (i=1,2,\cdots ,n) yi(wTxi+b)≥1(i=1,2,⋯,n)
提问:为什么使用这样的拉格朗日乘子?为什么构建这样的函数?
解释:由于目标函数是不等式约束,求解这样的二次规划问题,需要选择用KKT条件。KKT条件需要 α i ≥ 0 \alpha_{i}\geq0 αi≥0这样的条件,因此就需要通过KKT条件产生原问题的对偶问题。(什么是KKT条件,后面会解释)
由公式⑫可以看出:由于
α
i
≥
0
\alpha_{i}\geq0
αi≥0,
当约束条件之一不满足(即在可行解区域外) 的时候,比如
y
k
(
w
T
x
k
+
b
)
<
1
y_{k}(w^{T}x_{k}+b)<1
yk(wTxk+b)<1,我们将
α
\alpha
α设为
∞
\infty
∞,那么
L
(
w
,
b
,
α
)
=
∞
L(w,b,\alpha)=\infty
L(w,b,α)=∞。
当约束条件均满足(即在可行解区域内) 的时候,
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)才有最优值,且公式为
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
L(w,b,\alpha)=\frac{1}{2}\left \| w \right \|^{2}
L(w,b,α)=21∥w∥2。
所有优化 1 2 ∥ w ∥ 2 \frac{1}{2}\left \| w \right \|^{2} 21∥w∥2等价于优化 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)。需要注意的是,约束条件仍然是 α i ≥ 0 \alpha_{i}\geq0 αi≥0。
回顾我们设计的初衷,想要建立一个在可行解区域内与原目标函数相同,在可行解区域外函数值趋近于无穷大的新函数,那么这样的需求我们已经达到了。
下面就转变成求解最值问题了。若先求最大值,再求最小值。这样的话,首先就要面对带有需要求解的参数 w w w和 b b b的方程,而 α i α_{i} αi又是不等式约束,这个求解过程不好做。所以,需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下。
那么就把问题转换为将不易求解的优化问题转化为易求解的优化问题:
然后令
θ
(
w
)
=
m
a
x
α
i
≥
0
L
(
w
,
b
,
α
)
⋯
⋯
⑬
\theta(w)=\underset{\alpha _{i}\geq 0}{max}L(w,b,\alpha )\cdots \cdots⑬
θ(w)=αi≥0maxL(w,b,α)⋯⋯⑬
所求解的目标函数可以写为:
m
i
n
w
,
b
θ
(
w
)
=
m
i
n
w
,
b
m
a
x
α
i
≥
0
L
(
w
,
b
,
α
)
=
p
∗
⋯
⋯
⑭
\underset{w,b}{min}\theta(w)=\underset{w,b}{min}\underset{\alpha _{i}\geq 0}{max}L(w,b,\alpha )=p^{*}\cdots \cdots⑭
w,bminθ(w)=w,bminαi≥0maxL(w,b,α)=p∗⋯⋯⑭
满足一定条件下,等价于
m
a
x
α
i
≥
0
m
i
n
w
,
b
L
(
w
,
b
,
α
)
=
d
∗
⋯
⋯
⑮
\underset{\alpha _{i}\geq 0}{max}\underset{w,b}{min}L(w,b,\alpha )=d^{*}\cdots \cdots⑮
αi≥0maxw,bminL(w,b,α)=d∗⋯⋯⑮ 交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用
d
∗
d^{*}
d∗来表示,而且
d
∗
≤
p
∗
d^{*}≤p^{*}
d∗≤p∗。
我们关心的是 d = p d=p d=p的时候,这才是需要求的解。需要什么条件才能让 d = p d=p d=p呢?
- 首先必须满足这个优化问题是凸优化问题。
- 其次,需要满足KKT条件。
凸优化问题的定义是:求取最小值的目标函数为凸函数的一类优化问题。目标函数是凸函数我们已经知道,这个优化问题又是求最小值。所以最优化问题就是凸优化问题。
下面就引出了KKT条件知识点了。
补充知识:
根据对偶性,⑭⑮两个公式只是将最大和最小的位置交换,这样使得运算方便一些。交换以后的新问题是原始问题的对偶问题。
补充知识:
一定条件指的是,要使得⑭⑮两个式子等价需满足strong duality (强对偶),而后有学者在强对偶下提出了KKT条件,且KKT条件的成立要满足constraint qualifications(约束规范),而constraint qualifications之一就是Slater条件。所谓Slater 条件,即指:凸优化问题,如果存在一个点x,使得所有等式约束都成立,并且所有不等式约束都严格成立(即取严格不等号,而非等号),则满足Slater 条件。对于此处,Slater 条件成立,所以 d ∗ ≤ p ∗ d^{*}≤p^{*} d∗≤p∗可以取等号。
(6)KKT条件
KKT条件的全称是Karush-Kuhn-Tucker条件。
KKT条件,是指一个线性规划问题能有最优解的充分和必要条件。
一般地,一个带约束的优化数学模型的标准形式可以表示为:
m
i
n
f
(
x
)
⋯
⋯
⑯
minf(x)\cdots \cdots⑯
minf(x)⋯⋯⑯
s
.
t
.
h
j
(
x
)
=
0
,
j
=
1
,
⋯
,
p
g
k
(
x
)
≤
0
,
k
=
1
,
⋯
,
q
x
∈
X
⊂
ℜ
n
\begin{aligned}s.t.&h_{j}(x)=0,j=1,\cdots,p\\ &g_{k}(x)\leq 0,k=1,\cdots,q \\ &x\in X\subset \Re ^{n}\end{aligned}
s.t.hj(x)=0,j=1,⋯,pgk(x)≤0,k=1,⋯,qx∈X⊂ℜn 其中,
f
(
x
)
f(x)
f(x)是需要最小化的函数,
h
(
x
)
h(x)
h(x)是等式约束,
g
(
x
)
g(x)
g(x)是不等式约束,
p
p
p和
q
q
q分别是等式约束和不等式约束的数量。
KKT条件是说最优值条件必须满足以下条件:
条件1:经过拉格朗日函数处理之后的新目标函数 L ( w , b , α ) L(w,b,α) L(w,b,α)对 α α α求导为零;
条件2: h ( x ) = 0 h(x) =0 h(x)=0;
条件3: α ∗ g ( x ) = 0 α*g(x) = 0 α∗g(x)=0。
(因为 g ( x ) ≤ 0 g(x)\leq 0 g(x)≤0,如果要满足这个等式,必须 a = 0 a=0 a=0或者 g ( x ) = 0 g(x)=0 g(x)=0)
详细证明请参考 KKT条件的证明步骤
由上面可知,凸优化问题和KKT条件都满足了,将原始问题转化成了对偶问题。就引出了下面(7)对偶问题的求解。
- 若 f ( x ) f(x) f(x), h ( x ) h(x) h(x), g ( x ) g(x) g(x)三个函数都是线性函数,则该优化问题称为线性规划。若任意一个是非线性函数,则称为非线性规划。若目标函数为二次函数,约束全为线性函数,称为二次规划。
- 若 f ( x ) f(x) f(x)为凸函数, g ( x ) g(x) g(x)为凸函数, h ( x ) h(x) h(x)为线性函数,则该问题称为凸优化。注意这里不等式约束 g ( x ) ≤ 0 g(x)\leq0 g(x)≤0则要求 g ( x ) g(x) g(x)为凸函数,若 g ( x ) ≥ 0 g(x)\geq0 g(x)≥0则要求 g ( x ) g(x) g(x)为凹函数。
- 凸优化的任一局部极值点也是全局极值点,局部最优也是全局最优。
- 不是凸优化的话,这两个条件只是极小值点的必要条件,还需要附加多一个正定的条件才能变成充要条件。如下图所示。
提问:为什么要用到KKT条件呢?
解释:对于含有不等式约束的优化问题,常用的方法是KKT条件。把所有的不等式约束、等式约束和目标函数全部写为一个式子 L ( a , b , x ) = f ( x ) + a ∗ g ( x ) + b ∗ h ( x ) L(a, b, x)= f(x) + a*g(x)+b*h(x) L(a,b,x)=f(x)+a∗g(x)+b∗h(x)。
那么根据前面讲解的拉格朗日函数,我们可以得到如下的公式:
m i n L ( w , b , α ) = f ( x ) + ∑ j = 1 p w j h j ( x ) + ∑ k = 1 q b k g k ( x ) minL(w,b,\alpha)=f(x)+\sum_{j=1}^{p}w_{j}h_{j}(x)+\sum_{k=1}^{q}b_{k}g_{k}(x) minL(w,b,α)=f(x)+j=1∑pwjhj(x)+k=1∑qbkgk(x)
而KKT条件指的是最优化数学模型的形式中的最小点 x ∗ x_{*} x∗ 满足下面两个条件:
(7)求解对偶问题
求解对偶问题,需要分成三个步骤:
- L ( w , b , α ) L(w,b,α) L(w,b,α) 对 w , b w,b w,b求最小化;
- 再对 α α α求最大化;
- 利用SMO算法求解对偶问题中的拉格朗日乘子。
- 首先固定
α
α
α,要让
L
L
L关于
w
w
w和
b
b
b最小化,分别对
w
w
w和
b
b
b求偏导数。由于对偶性质分别得到两个条件,即:
m i n w , b m a x α i ≥ 0 L ( w , b , α ) → m a x α i ≥ 0 m i n w , b L ( w , b , α ) \underset{w,b}{min}\underset{\alpha _{i}\geq 0}{max}L(w,b,\alpha )\rightarrow \underset{\alpha _{i}\geq 0}{max}\underset{w,b}{min}L(w,b,\alpha ) w,bminαi≥0maxL(w,b,α)→αi≥0maxw,bminL(w,b,α)
对 w 求 偏 导 : ∂ L ∂ w = 0 ⇒ w = ∑ i = 1 n α i y i x i ⋯ ⋯ ⑰ 对w求偏导:\frac{\partial L}{\partial w}=0\Rightarrow w=\sum_{i=1}^{n}\alpha _{i}y_{i}x_{i}\cdots \cdots⑰ 对w求偏导:∂w∂L=0⇒w=i=1∑nαiyixi⋯⋯⑰ 对 b 求 偏 导 : ∂ L ∂ b = 0 ⇒ ∑ i = 1 n α i y i = 0 ⋯ ⋯ ⑱ 对b求偏导:\frac{\partial L}{\partial b}=0\Rightarrow\sum_{i=1}^{n}\alpha _{i}y_{i}=0\cdots \cdots⑱ 对b求偏导:∂b∂L=0⇒i=1∑nαiyi=0⋯⋯⑱
提问:为什么求偏导就是极小值呢?
解释:由于目标函数 L L L是2阶的凸函数,因此求偏导数就是极小值。
将公式⑰⑱计算得到的结果代入公式⑫中:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
x
i
+
b
)
−
1
)
⋯
⋯
⑫
L(w,b,\alpha )=\frac{1}{2}\left \| w \right \|^{2}-\sum_{i=1}^{n}\alpha _{i}(y_{i}(w^{T}x_{i}+b)-1)\cdots \cdots⑫
L(w,b,α)=21∥w∥2−i=1∑nαi(yi(wTxi+b)−1)⋯⋯⑫ 求解,得到:
L
(
w
,
b
,
α
)
=
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
−
b
∑
i
=
1
n
α
i
y
i
+
∑
i
=
1
n
α
i
L(w,b,\alpha )=\frac{1}{2}\sum_{i,j=1}^{n}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}-\sum_{i,j=1}^{n}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}-b\sum_{i=1}^{n}\alpha _{i}y_{i}+\sum_{i=1}^{n}\alpha _{i}
L(w,b,α)=21i,j=1∑nαiαjyiyjxiTxj−i,j=1∑nαiαjyiyjxiTxj−bi=1∑nαiyi+i=1∑nαi
化简得到:
L
(
w
,
b
,
α
)
=
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
n
α
i
⋯
⋯
⑲
L(w,b,\alpha )=-\frac{1}{2}\sum_{i,j=1}^{n}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}+\sum_{i=1}^{n}\alpha _{i}\cdots \cdots⑲
L(w,b,α)=−21i,j=1∑nαiαjyiyjxiTxj+i=1∑nαi⋯⋯⑲
s
.
t
.
α
i
≥
0
,
i
=
1
,
⋯
,
n
∑
i
=
1
n
α
i
y
i
=
0
\begin{aligned}s.t.&\alpha_{i}\geq0,i=1,\cdots,n\\ &\sum_{i=1}^{n}\alpha _{i}y_{i}=0\end{aligned}
s.t.αi≥0,i=1,⋯,ni=1∑nαiyi=0
说明: 转换后变成公式⑲,
x
i
x_{i}
xi是样本点,
y
i
y_{i}
yi是标签,均为已知参数。因此只需要求解未知数
α
\alpha
α即可。约束条件分别是:对b求偏导和拉格朗日乘子法自带的条件。
详细的推导过程:
下面举一个SVM求解的例子:如下图所示。
有两个约束条件,分别是:
条件1,由于 x 3 x_{3} x3是负样本,则 y 3 = − 1 y_{3}=-1 y3=−1,则 ∑ i = 1 n α i y i = 0 \sum_{i=1}^{n}\alpha _{i}y_{i}=0 ∑i=1nαiyi=0可化简为 α 1 + α 2 − α 3 = 0 \alpha _{1}+\alpha _{2}-\alpha _{3}=0 α1+α2−α3=0。
条件2,拉格朗日乘子法的性质,即 α i ≥ 0 , i = 1 , 2 , 3 \alpha_{i}\geq0,i=1,2,3 αi≥0,i=1,2,3。
知道约束条件后,将数据代入求解,(根据内积的方法来计算,比如: α 2 \alpha_{2} α2的系数由 4 × 4 + 3 × 3 = 25 4×4+3×3=25 4×4+3×3=25,详细的请参考内积公式) 1 2 ( 18 α 1 2 + 25 α 2 2 + 2 α 3 2 + 42 α 1 α 2 − 12 α 1 α 3 − 14 α 2 α 3 ) − α 1 − α 2 − α 3 ⋯ ( 1 ) \frac{1}{2}(18\alpha _{1}^{2}+25\alpha _{2}^{2}+2\alpha _{3}^{2}+42\alpha _{1}\alpha _{2}-12\alpha _{1}\alpha _{3}-14\alpha _{2}\alpha _{3})-\alpha _{1}-\alpha _{2}-\alpha _{3}\cdots(1) 21(18α12+25α22+2α32+42α1α2−12α1α3−14α2α3)−α1−α2−α3⋯(1) 由于: α 1 + α 2 = α 3 \alpha _{1}+\alpha _{2}=\alpha _{3} α1+α2=α3,化简可得: 4 α 1 2 + 13 2 α 2 2 + 10 α 1 α 2 − 2 α 1 − 2 α 2 4\alpha _{1}^{2}+\frac{13}{2}\alpha _{2}^{2}+10\alpha _{1}\alpha _{2}-2\alpha _{1}-2\alpha _{2} 4α12+213α22+10α1α2−2α1−2α2 分别对 α 1 , α 2 \alpha _{1},\alpha _{2} α1,α2求偏导数,使偏导数等于0可得:
α 1 = 0 \alpha _{1}=0 α1=0, α 2 = − 2 / 13 \alpha _{2}=-2/13 α2=−2/13(这一项不满足约束条件 α i ≥ 0 , i = 1 , 2 , 3 \alpha_{i}\geq0,i=1,2,3 αi≥0,i=1,2,3)
α 1 = 0.25 \alpha _{1}=0.25 α1=0.25, α 2 = 0 \alpha _{2}=0 α2=0(满足约束条件)
将上面的结果带入到原始式子(1)中,得到 α 3 = − 0.25 \alpha _{3}=-0.25 α3=−0.25
所以,最小值在(0.25,0,0.25)处取得。
-
对 α α α求最大化,是关于对偶问题的最优化问题。经过第一步求 w w w和 b b b,得到拉格朗日函数的公式中已经没有了这两个参数,只有 α α α。
由第一步计算得到的式子为: m a x α [ ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j ] ⋯ ⋯ ⑳ \underset{\alpha }{max}\left [\sum_{i=1}^{n}\alpha _{i}-\frac{1}{2}\sum_{i,j=1}^{n}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}\right ]\cdots \cdots⑳ αmax[i=1∑nαi−21i,j=1∑nαiαjyiyjxiTxj]⋯⋯⑳ s . t . α i ( x ) ≥ 0 , i = 1 , ⋯ , p ∑ i = 1 n α i y i = 0 \begin{aligned}s.t.&\alpha_{i}(x)\geq0,i=1,\cdots,p\\ &\sum_{i=1}^{n}\alpha _{i}y_{i}=0\end{aligned} s.t.αi(x)≥0,i=1,⋯,pi=1∑nαiyi=0 这样就求出了 α i \alpha_{i} αi,根据 w = ∑ i = 1 m α i y ( i ) x ( i ) w=\sum_{i=1}^{m}\alpha _{i}y^{(i)}x^{(i)} w=∑i=1mαiy(i)x(i) 就可以计算出 w w w,然后通过
可以计算出 b b b,最终计算出分离超平面和分类决策函数。 -
利用SMO算法求解对偶问题中的拉格朗日乘子 α α α。
m a x α [ ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j ] ⋯ ⋯ ⑳ \underset{\alpha }{max}\left [\sum_{i=1}^{n}\alpha _{i}-\frac{1}{2}\sum_{i,j=1}^{n}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}\right ]\cdots \cdots⑳ αmax[i=1∑nαi−21i,j=1∑nαiαjyiyjxiTxj]⋯⋯⑳ s . t . α i ( x ) ≥ 0 , i = 1 , ⋯ , p ∑ i = 1 n α i y i = 0 \begin{aligned}s.t.&\alpha_{i}(x)\geq0,i=1,\cdots,p\\ &\sum_{i=1}^{n}\alpha _{i}y_{i}=0\end{aligned} s.t.αi(x)≥0,i=1,⋯,pi=1∑nαiyi=0 上述式子要解决的是在参数 { a i , a 2 , ⋯ , a n } \left \{ a_{i} ,a_{2},\cdots ,a_{n}\right \} {ai,a2,⋯,an}上最大值 w w w的问题,而 y ( i ) , x ( i ) y^{(i)},x^{(i)} y(i),x(i)是已知数。
(8)松弛变量
当样本数据线性不可分时,可以尝试使用核函数来将特征映射到高维,这样很可能就可分了。然而,映射后也不能100%保证可分。那怎么办呢,需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面。
观察下面两幅图:
可以观察到,一个离群点(可能是噪声)可以造成超平面的移动,间隔缩小,可见之前的模型对噪声是很敏感的。如果离群点在另外一个类中,那么这时候就是线性不可分了。
考虑这种情况后,应该允许一些点游离,并且可以违背模型中的限制条件(比如,函数间隔大于1)。这样就通过引入松弛变量来允许数据点可以处在分隔面错误的一侧。 为了解决这个问题,改进的新模型如下所示(称为软间隔):
m
i
n
y
,
w
,
b
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ζ
i
⋯
⋯
(
21
)
min_{y,w,b}\frac{1}{2}\left \| w \right \|^{2}+C\sum_{i=1}^{m}\zeta _{i}\cdots\cdots(21)
miny,w,b21∥w∥2+Ci=1∑mζi⋯⋯(21)
s
.
t
.
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≥
1
−
ζ
i
,
i
=
1
,
⋯
,
m
ζ
i
≥
0
,
i
=
1
,
⋯
,
m
\begin{aligned}s.t.&y^{(i)}(w^{T}x^{(i)}+b)\geq 1-\zeta _{i},i=1,\cdots,m\\ &\zeta _{i}\geq0,i=1,\cdots,m\end{aligned}
s.t.y(i)(wTx(i)+b)≥1−ζi,i=1,⋯,mζi≥0,i=1,⋯,m
其中,
ζ
i
\zeta _{i}
ζi是非负的,称为松弛变量,就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域当中。
有了松弛变量之后,需要重新调整目标函数,以对离群点进行处罚, 目标函数后面加上的 C ∑ i = 1 m ζ i C\sum_{i=1}^{m}\zeta _{i} C∑i=1mζi 就表示离群点越多,目标函数的数值就越大。但是,需要的是尽可能小的目标函数。
这里的C是离群点的权重(惩罚因子),是用于控制“最大化间隔”和“保证大部分点的函数间隔小于1”。
- y ( i ) ( w T x ( i ) + b ) > 1 y^{(i)}(w^{T}x^{(i)}+b)> 1 y(i)(wTx(i)+b)>1 且 α = 0 \alpha=0 α=0,表明点在边界外,就是非支持向量
- y ( i ) ( w T x ( i ) + b ) = 1 y^{(i)}(w^{T}x^{(i)}+b)= 1 y(i)(wTx(i)+b)=1 且 0 < α < 0 0<\alpha<0 0<α<0,表明点在分隔超平面上,是支持向量
- y ( i ) ( w T x ( i ) + b ) < 1 y^{(i)}(w^{T}x^{(i)}+b)< 1 y(i)(wTx(i)+b)<1 且 α = C \alpha=C α=C,表明点在分隔超平面内,是误差点,C表示它该受到的惩罚因子程度
C越大表明离群点对目标函数的影响就越大,就容易过拟合;反之,有可能欠拟合。
根据上述,目标函数控制了离群点的数目和程度,使得大部分样本点仍然遵守限制条件。
比如:正类有10000个样本,而负类只有100个(C越大表示100个负样本的影响越大,就会出现过拟合,所以C决定了负样本对模型拟合程度的好坏。
(9)SMO高效优化算法
SVM有很多种实现方式,最流行的一种实现是: 序列最小优化(Sequential Minimal Optimization, SMO)算法。 接下来还会介绍一种称为 核函数(kernel) 的方式,将SVM扩展到更多数据集上。
注意:SVM几何含义比较直观,但其算法实现较复杂,牵扯大量数学公式的推导。
- SMO的用途:用于训练 SVM。
- SMO的目标:求出一系列 α \alpha α 和 b b b,一旦求出 α \alpha α,就很容易计算出权重向量 w w w 并得到分隔超平面。
- SMO的思想:是将大优化问题分解为多个小优化问题来求解的。
- SMO的原理:每次循环选择两个 α \alpha α 进行优化处理,一旦找出一对合适的 α \alpha α,那么就增大一个同时减少一个。
合适必须要符合一定的条件:
- 这两个 α \alpha α 必须要在间隔边界之外 ;
- 这两个 α \alpha α 还没有进行过区间化处理或者不在边界上。
之所以要同时改变2个 α \alpha α,其原因是有一个约束条件: ∑ i = 1 n α i y i = 0 \sum_{i=1}^{n}\alpha _{i}y_{i}=0 ∑i=1nαiyi=0;如果只是修改一个
α \alpha α,很可能导致约束条件失效。
总结:求解SVM算法,就是从最大间隔出发(目的是为了确定法向量w),转化为求对变量w和b的凸二次规划问题。在满足约束条件 y i ( w T x i + b ) ≥ 1 ( i = 1 , 2 , ⋯ , n ) y_{i}(w^{T}x_{i}+b)\geq1 (i=1,2,\cdots ,n) yi(wTxi+b)≥1(i=1,2,⋯,n)的前提下,求解 ∥ w ∥ 2 \left \| w \right \|^{2} ∥w∥2的最小值。
(三)核函数
在机器学习中,对于线性可分的数据研究比较透彻,可以采用SVM、LR、感知机等成熟的机器学习模型。但是对于非线性的模型,就需要引入核函数来进行处理了,它是将数据转化为分类器易于理解的形式。
(1)核函数的概念
设 χ \chi χ是输入空间(欧式空间 R n R^{n} Rn的子集或者离散集合), H H H为特征空间(希泊尔特空间),如果存在一个从 χ \chi χ到 H H H的映射: ϕ ( x ) : χ → H ⋯ ⋯ ① \phi (x):\chi \rightarrow H\cdots\cdots① ϕ(x):χ→H⋯⋯①使得 χ \chi χ中的点 x x x能够计算得到 H H H空间中的点 h h h: h = ϕ ( x ) ⋯ ⋯ ② h=\phi (x)\cdots\cdots② h=ϕ(x)⋯⋯② 对于所有数据 χ \chi χ中的点 x , z x,z x,z都成立, x x x和 z z z是 χ \chi χ中的点。函数 k ( x , z ) k(x,z) k(x,z)满足条件: k ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) ⋯ ⋯ ③ k(x,z)=\phi (x) \cdot\phi (z)\cdots\cdots③ k(x,z)=ϕ(x)⋅ϕ(z)⋯⋯③ 则 k ( x , z ) k(x,z) k(x,z)称为核函数,而 ϕ ( x ) \phi(x) ϕ(x)称为映射函数。其中, ϕ ϕ ϕ是输入空间 R n R^{n} Rn到特征空间 H H H的映射,特征空间一般是比输入空间高维的空间。注意,特征空间 H H H和映射函数 ϕ ϕ ϕ的取法并不唯一,可以取不同的特征空间完成分类任务,而同一个特征空间可以由不同的映射函数得到。
(2)核函数的思想
对于线性不可分问题,可以把低纬度空间映射到高维空间实现分类,映射函数是 ϕ ϕ ϕ,对于SVM来说,就是把 w ⋅ x w⋅x w⋅x的空间映射成高维空间,即变换 ϕ ( w ) ϕ(w) ϕ(w)和 ϕ ( x ) ϕ(x) ϕ(x)进行点乘计算,然而映射函数比较难找到,而点乘的结果比较容易找到。
核技巧就是从结果出发,而不必知道映射函数 ϕ ϕ ϕ,如公式③所示。
(3)常用的核函数公式
- 多项式核函数 :通过多项式来作为特征映射函数 。
k ( x , z ) = ( x ⋅ z + 1 ) p , p ∈ Z + k(x,z)=(x⋅z+1)^{p},p\in Z^{+} k(x,z)=(x⋅z+1)p,p∈Z+
- 优点:可以拟合出复杂的分隔超平面。
- 缺点:参数太多。有 γ , c , n γ,c,n γ,c,n三个参数要选择,选择起来比较困难;另外多项式的阶数不宜太高否则会给模型求解带来困难。
- 高斯(BRF)核函数 :
k ( x , z ) = e − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 k(x,z)=e^{−\frac{||x−z||^{2}}{2σ^{2}}} k(x,z)=e−2σ2∣∣x−z∣∣2
- 优点:可以把特征映射到无限多维,并且没有多项式计算那么困难,参数也比较好选择。
- 缺点:不容易解释,计算速度比较慢,容易过拟合。
- 线性核函数 :这是最简单的核函数,它直接计算两个输入特征向量的内积。
k ( x , z ) = < x , z > k(x,z)=<x,z> k(x,z)=<x,z>
- 优点:简单高效,结果易解释,总能生成一个最简洁的线性分割超平面
- 缺点:只适用线性可分的数据集
在实际计算中,通常会选用高斯核函数。
(4)如何选择核函数
可以根据样本量 m m m和特征量 n n n进行选择:
- 特征数 n n n>>样本数 m m m(如m=10~1000,n=10000):选逻辑回归或者线性函数SVM
- 特征数 n n n较少,样本数 m m m量中(如m=10~10000,n=1~1000):选择高斯SVM
- 特征数 n n n<<样本数 m m m(如m=50000+,n=1~1000):选多项式或高斯SVM