文章目录
支持向量机(Support Vector Machine
)是Cortes
和Vapnik
于1995
年首先提出的 ,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够 推广应用到函数拟合等其他机器学习问题中。
1963
年,Vapnik
在解决模式识别问题时提出了支持向量方法,这种方法从训练集中选择一 组特征子集,使得对特征子集的划分等价于对整个数据集的划分,这组特征子集就被称为 支持向量(Support Vector
,SV);
1971
年,Kimeldorf
提出使用线性不等约束重新构 造SV
的核空间,解决了一部分线性不可分问题;1990
年,Grace
、Boser
和Vapnik
等人开始对SVM
进行研究; 1995
年,Vapnik
正式提出统计学习理论。
SVM涉及的相关概念
支持向量机和线性分类器(如逻辑回归)都是线性模型。虽然SVM
是线性模型,但是它的求解过程要比线性模型困难不少。
- 它是一种最大间隔的线性分类器,它只会考虑在
decision bound
比较近的这些点,而在逻辑回归问题中,即使离决策边界很远,它还是会产生一个loss function
。 - 通过核函数可以做非线性的问题。
对于分类问题,分开两类数据其实有很多种解法,那哪一种解法是最好的呢?也就是说SVM
是从线性可分情况下的最优分类面发展而来,最优分类面就是要求分类线不但能将 两类正确分开,且使分类间隔最大(分类间隔最大能够使得算法在测试数据集上取得较好效果,或者说数据本身存在噪声,较大的分类间隔能够取得较好效果)。
SVM
考虑寻找一个满足分类要求的超平面,并 且使训练集中的点距离分类面尽可能的远,也 就是寻找一个分类面使它两侧的空白区域 (margin
)最大。这与逻辑回归算法不一样,在逻辑回归算法中所有的点都会影响分类边界,而在SVM
算法中不会,它更多考虑的是支持向量。
过两类样本中离分类面最近的点且平行于最 优分类面的超平面上 H 1 H_{1} H1, H 2 H_{2} H2的训练样本就叫 做支持向量。
分类任务
分类任务就是确定对象属于哪个预定义的目标类。分类任务的输入数据是记录的集合,每条记录也称为实例或样例,用元组( x , y x, y x,y) 表示,其中 x x x 是属性的 集合, y y y 是类标记(也称目标属性)。在回归模型中,目标属性值是连续的; 而在分类模型中,目标属性是离散的。
考虑二分类任务,其目标属性为
y
∈
{
0
,
1
}
y \in \{0,1\}
y∈{0,1},而线性回归模型参数的预测值
z
=
w
T
x
+
b
z=w^{T}x+b
z=wTx+b是实值,于是我们需要将实值
z
z
z通过Sigmoid
函数转换为0
或1
。Sigmoid
函数定义如下:
Logistic回归:目的是从特征中学习出一个0/1
分类模型,这个模型是将特征的线性组合作为自变量,由于自变量的取值范围是(
−
∞
,
+
∞
-\infty,+\infty
−∞,+∞)。因此使用Sigmoid
函数将自变量映射到(0,1)上,映射后的值被认为是属于
y
=
1
y=1
y=1的概率。假设函数为:
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}} hθ(x)=g(θTx)=1+e−θTx1
根据Sigmoid
函数的特性,假设:
p ( y = 1 ∣ x ; θ ) = h θ ( x ) p(y=1|x;\theta)=h_{\theta}(x) p(y=1∣x;θ)=hθ(x)
p ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) p(y=0|x;\theta)=1-h_{\theta}(x) p(y=0∣x;θ)=1−hθ(x)
上式表示,已知样本 x x x和参数 θ \theta θ的情况下,样本 x x x属于正样本( y = 1 y=1 y=1)和负样本( y = 0 y=0 y=0)的条件概率:若 h θ ( x ) > 0.5 h_{\theta}(x) > 0.5 hθ(x)>0.5则属于正样本,反之属于负样本。当然在实际操作过程中你可以把这个值设置地大一点,使得在测试过程中效果更好。
分类任务进一步理解
从上面可以看出, h θ ( x ) h_{\theta}(x) hθ(x)只和 θ T x \theta^{T}x θTx有关, θ T x > 0 \theta^{T}x > 0 θTx>0,那么 h θ ( x ) > 0.5 h_{\theta}(x) > 0.5 hθ(x)>0.5, g ( z ) g(z) g(z)只是用来映射的,真实的类别决定权在于 θ T x \theta^{T}x θTx。当 θ T x > > 0 \theta^{T}x >> 0 θTx>>0时, h θ ( x ) h_{\theta}(x) hθ(x)趋于1,反之趋于0。如果我们只从 θ T x \theta^{T}x θTx出发,那么模型应该尽可能的让训练数据中 y = 1 y=1 y=1的特征 θ T x > > 0 \theta^{T}x >> 0 θTx>>0,而 y = 0 y=0 y=0的特征 θ T x < < 0 \theta^{T}x << 0 θTx<<0。
因此Logistic
回归就是要学习得到参数
θ
\theta
θ,使得正例的特征远远大于0,负例的特征远远小于0,而且要在全部训练数据上达到这个目标。
将目标属性
y
∈
{
0
,
1
}
y \in \{0,1\}
y∈{0,1}替换为
y
∈
{
−
1
,
1
}
y \in \{-1,1\}
y∈{−1,1},再将
θ
T
x
\theta^{T}x
θTx改写为
w
T
x
+
b
w^{T}x+b
wTx+b,可以看出:线性分类函数跟Logistic
回归的形式化表示
h
θ
(
x
)
=
g
(
θ
T
x
)
=
g
(
w
T
x
+
b
)
h_{\theta}(x)=g(\theta^{T}x)=g(w^{T}x+b)
hθ(x)=g(θTx)=g(wTx+b)没有区别。将假设函数
h
w
,
b
(
x
)
=
g
(
w
T
x
+
b
)
h_{w,b}(x)=g(w^{T}x+b)
hw,b(x)=g(wTx+b)中的
g
(
x
)
g(x)
g(x)做一个简化,将其映射到
y
=
−
1
y=-1
y=−1和
y
=
1
y=1
y=1上,映射如下:
g ( z ) = { 1 , z ⩾ 0 − 1 , z < 0 g(z)=\left\{\begin{array}{ll} 1, & z \geqslant 0 \\ -1, & z<0 \end{array}\right. g(z)={1,−1,z⩾0z<0
- 线性可分数据集
需要注意的是:对于上述问题我们需要数据集是线性可分的,不然不管如何分类都找不到这样一个平面。
线性可分数据集:存在某个超平面 S S S能够将数据集的正实例和负实例完全划分 到超平面的两侧,则称为线性可分数据集;否则,线性不可分。
上图中的这些数据就是线性可分的,所以可以用一条直线将这两类数据分开,二维中是一条直线,多维中就是一个超平面。
这个超平面可以用分类函数 f ( x ) = w T x + b f(x)=w^{T}x+b f(x)=wTx+b表示,在进行分类时,将 x x x代入 f ( x ) f(x) f(x)中, f ( x ) = 0 f(x)=0 f(x)=0表示数据点在超平面上; f ( x ) > 0 f(x)>0 f(x)>0对应 y = 1 y=1 y=1的数据点; f ( x ) < 0 f(x) < 0 f(x)<0对应 y = − 1 y=-1 y=−1的数据点。
SVM算法
SVM所要解决的问题
假定给定数据图,圆的为正类,方的为负类,要想通过一个划分超平面(这里是二维,所以是条直线)将不同类别的样本分开。从图中可以看出,能将训练样本分开的划分超平面可能有很多,但是我们应该去选择哪一个呢?
直观上,我们应该选择中间红色的那个,因为它对于 训练样本局部扰动的“容忍”性最好;
比如,训练集外的样本可能比图中的样本更接近两类 的划分超平面,这将使许多划分超平面出现错误,而 红色的超平面受到的影响是最小的,也就是说,这个 划分超平面的分类结果是最鲁棒的,对未知样本的泛 化能力最强。
在所有的划分超平面中,有一个平面是最好的,它可以尽可能地让所有的样本点都离该划分 超平面最远,这就是SVM
要做的。
函数间隔
有三个实例 A 、 B 、 C A、B、C A、B、C均在划分超平面的正类一侧,点 A A A举例超平面较远,若预测为正类,叫比较确信预测是正确的;点 C C C距离超平面较近,若预测为正类就不那么确信了;点 B B B介于 A A A、 C C C之间,预测其为正类的确信度也在 A A A、 C C C之间。
一般来说,一个点距离超平面的远近可以相对地表示分类预测的确信程度。
可以看出:当一个点 x x x被正确预测时,那么 w T x + b w^{T}x+b wTx+b的符号与类标记 y y y的符号相同,因而所以可用 y ( w T x + b ) y(w^{T}x+b) y(wTx+b)来表示分类的正确性及确信度;
对于给定的训练数据集 T T T和超平面( w , b w,b w,b):
定义超平面( w , b w,b w,b)关于样本点 x i x_{i} xi的函数间隔为 δ i = y i ( w T x + b ) \delta_{i}=y_{i}(w^{T}x+b) δi=yi(wTx+b)。
定义超平面( w , b w,b w,b)关于数据集 T T T的函数间隔为超平面( w , b w,b w,b)关于 T T T中所有样本点的函数间隔的最小值 δ = m i n { δ i , x i ∈ T } \delta =min\{\delta_{i},x_{i} \in T\} δ=min{δi,xi∈T}。
几何间隔
- w w w为平面 w T x + b = 0 w^{T}x+b=0 wTx+b=0 的法向量
取超平面任意点 x ′ x^{\prime} x′和 x ′ ′ x^{\prime \prime} x′′,满足 w T x ′ + b = 0 w^{T}x^{\prime}+b=0 wTx′+b=0和 w T x ′ ′ + b = 0 w^{T}x^{\prime \prime}+b=0 wTx′′+b=0,将两式相减,得到 w T ( x ′ − x ′ ′ ) = 0 w^{T}(x^{\prime}-x^{\prime \prime})=0 wT(x′−x′′)=0,由于 x ′ − x ′ ′ x^{\prime}-x^{\prime \prime} x′−x′′表示平面上的任意向量,而向量 w w w和它们的点乘为0,说明 w w w是这个平面的法向量。
- 点 x 0 x_{0} x0到超平面 S S S: w T x + b w^{T}x+b wTx+b=0的距离 d d d(d为正值)。即 ∣ x 0 x 1 ⃗ ∣ = d |\vec{x_{0}x_{1}}|=d ∣x0x1∣=d。
设
x
0
x_{0}
x0在平面
S
S
S上的投影为
x
1
x_{1}
x1,则有
w
T
x
1
+
b
w^{T}x_{1}+b
wTx1+b=0;由向量
x
0
x
1
⃗
\vec{x_{0}x_{1}}
x0x1与平面
S
S
S的法向量
w
w
w平行,即两个向量的夹角余弦等于1
,可知:
∣ w x 0 x ⃗ 1 ∣ = ( w 1 ) 2 + ( w 2 ) 2 + … + ( w N ) 2 d = ∥ w ∥ d \left|w \vec{x_{0} x}_{1}\right|=\sqrt{\left(w^{1}\right)^{2}+\left(w^{2}\right)^{2}+\ldots+\left(w^{N}\right)^{2}} d=\|w\| d ∣wx0x1∣=(w1)2+(w2)2+…+(wN)2d=∥w∥d
另外,直接计算其内积,可以得到:
w ⋅ x 0 x ⃗ 1 = w 1 ( x 0 1 − x 1 1 ) + w 2 ( x 0 2 − x 1 2 ) + … + w N ( x 0 N − x 1 N ) = w 1 x 0 1 + w 2 x 0 2 + … + w N x 0 N − ( w 1 x 1 1 + w 2 x 1 2 + … + w N x 1 N ) w \cdot \vec{x_{0}x}_{1}=w^{1}\left(x_{0}^{1}-x_{1}^{1}\right)+w^{2}\left(x_{0}^{2}-x_{1}^{2}\right)+\ldots+w^{N}\left(x_{0}^{N}-x_{1}^{N}\right)=w^{1} x_{0}^{1}+w^{2} x_{0}^{2}+\ldots+w^{N} x_{0}^{N}-\left(w^{1} x_{1}^{1}+w^{2} x_{1}^{2}+\ldots+w^{N} x_{1}^{N}\right) w⋅x0x1=w1(x01−x11)+w2(x02−x12)+…+wN(x0N−x1N)=w1x01+w2x02+…+wNx0N−(w1x11+w2x12+…+wNx1N)
由于有 w T x + b = 0 w^{T}x+b=0 wTx+b=0,因此上式等于: = w 1 x 0 1 + w 2 x 0 2 + … + w N x 0 N − ( − b ) =w^{1} x_{0}^{1}+w^{2} x_{0}^{2}+\ldots+w^{N} x_{0}^{N}-(-b) =w1x01+w2x02+…+wNx0N−(−b)
因此,可以等到: ∥ w ∥ d = ∣ w ⋅ x 0 + b ∣ \|w\| d=\left|w \cdot x_{0}+b\right| ∥w∥d=∣w⋅x0+b∣,从而距离 d d d的计算公式为: d = ∣ w ⋅ x 0 + b ∣ ∥ w ∥ d=\frac{\left|w \cdot x_{0}+b \right|}{\|w\|} d=∥w∥∣w⋅x0+b∣。
- 对于给定的训练数据集 T T T和超平面( w , b w,b w,b):
定义超平面( w , b w,b w,b)关于样本点( x i , y i x_{i},y_{i} xi,yi)的几何间隔公式如下,它一般是样本点到超平面的带符号的距离,当样本点被超平面正确分类时,就是样本点到超平面的距离(将每个样本点 x i x_{i} xi带入距离计算公式 d = ∣ w ⋅ x 0 + b ∣ ∥ w ∥ d=\frac{\left|w \cdot x_{0}+b \right|}{\|w\|} d=∥w∥∣w⋅x0+b∣)。
γ i = y i ( w ∥ w ∥ ⋅ x i + b ∥ w ∥ ) \gamma_{i}=y_{i}\left(\frac{w}{\|w\|} \cdot x_{i}+\frac{b}{\|w\|}\right) γi=yi(∥w∥w⋅xi+∥w∥b)
定义超平面(
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)的几何间隔的最小值
γ
=
min
{
γ
i
,
(
x
i
,
y
i
)
∈
T
}
\gamma=\min \left\{\gamma_{i},\left(x_{i}, y_{i}\right) \in T\right\}
γ=min{γi,(xi,yi)∈T},表示为距离超平面距离最小的那个样本。此时相当于能够找到支持向量所对应的样本,通过调整参数
w
w
w让其几何间隔最大,就是SVM
所要做的事情。
几何间隔与函数间隔的关系为: γ = δ / ∥ w ∥ \gamma=\delta /\|w\| γ=δ/∥w∥。
如果超平面的参数 w w w和 b b b成比例的改变(超平面没有变),函数间隔也按此比例改变, 但是几何间隔不变。
支持向量的函数间隔为1,SVM
的优化目标为:
max ω , b 1 ∥ w ∥ (non-convex objective) s.t. y ( i ) ( w ⊤ x ( i ) + b ) ≥ 1 , i = 1 , … , m \begin{aligned} \max _{\omega, b} & \frac{1}{\|w\|} \quad \text { (non-convex objective) } \\ & \text { s.t. } y^{(i)}\left(w^{\top} x^{(i)}+b\right) \geq 1, \quad i=1, \ldots, m \end{aligned} ω,bmax∥w∥1 (non-convex objective) s.t. y(i)(w⊤x(i)+b)≥1,i=1,…,m
约束条件表示的是最大化的一定是支持向量。要求解上述问题我们需要一定的凸优化基础,接下来简要介绍一下所需数学知识部分。
凸优化基础
拉格朗日对偶性 – 原问题
假设 f ( x ) f(x) f(x), c i ( x ) c_{i}(x) ci(x), h j ( x ) h_{j}(x) hj(x)是定义在 R n R^{n} Rn上的连续可微函数,称以下的约束最优化问题 为原问题:
min x ∈ R n f ( x ) s.t. c i ( x ) ≤ 0 , i = 1 , 2 , ⋯ , k h j ( x ) = 0 , j = 1 , 2 , ⋯ , l \begin{array}{ll} \min _{x \in R^{n}} & f(x) \\ \text {s.t.} & c_{i}(x) \leq 0, \quad i=1,2, \cdots, k \\ & h_{j}(x)=0, \quad j=1,2, \cdots, l \end{array} minx∈Rns.t.f(x)ci(x)≤0,i=1,2,⋯,khj(x)=0,j=1,2,⋯,l
对于上述约束化问题首先引入拉格朗日函数 ( 将等式和不等式约束融入到一个目标函数中去,从而只用一个函数表达我们的问题。):
L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) L(x, \alpha, \beta)=f(x)+\sum_{i=1}^{k} \alpha_{i} c_{i}(x)+\sum_{j=1}^{l} \beta_{j} h_{j}(x) L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)
其中, x = ( x ( 1 ) , x ( 2 ) , ⋯ , x ( n ) ) T ∈ R n x=\left(x^{(1)}, x^{(2)}, \cdots, x^{(n)}\right)^{T} \in R^{n} x=(x(1),x(2),⋯,x(n))T∈Rn, α i \alpha_{i} αi, β j \beta_{j} βj是拉格朗日乘子, α i ≥ 0 \alpha_{i} \geq 0 αi≥0。
-
构建关于 x x x的函数: θ P ( x ) = max α , β ; α i ≥ 0 L ( x , α , β ) \theta_{P}(x)=\max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta) θP(x)=maxα,β;αi≥0L(x,α,β)。
-
假设给定某个违反原始问题约束条件的 x x x,即存在某个 i i i使得 c i ( x ) > 0 c_{i}(x) > 0 ci(x)>0或 h j ( x ) ≠ 0 h_{j}(x) \neq 0 hj(x)=0。
若 c i ( x ) > 0 c_{i}(x) > 0 ci(x)>0,可令 α i → + ∞ \alpha_{i} \rightarrow + \infty αi→+∞,使得 θ P ( x ) = + ∞ \theta_{P}(x) = + \infty θP(x)=+∞;若 h i ( x ) ≠ 0 h_{i}(x) \neq 0 hi(x)=0,可令 β j \beta_{j} βj 使 β j h j ( x ) → + ∞ \beta_{j}h_{j}(x) \rightarrow + \infty βjhj(x)→+∞,使得 θ P ( x ) = + ∞ \theta_{P}(x) = + \infty θP(x)=+∞。将其余 α i \alpha_{i} αi, β j \beta_{j} βj均取值为0。即:
θ P ( x ) = max α , β ; α i ≥ 0 [ f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) ] = + ∞ \theta_{P}(x)=\max _{\alpha, \beta ; \alpha_{i} \geq 0}\left[f(x)+\sum_{i=1}^{k} \alpha_{i} c_{i}(x)+\sum_{j=1}^{l} \beta_{j} h_{j}(x)\right]=+\infty θP(x)=α,β;αi≥0max[f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)]=+∞
假设给定某个符合原始问题约束条件的 x x x,即 c i ( x ) ≤ 0 c_{i}(x) \leq 0 ci(x)≤0 且 h j ( x ) = 0 h_{j}(x) = 0 hj(x)=0,则:
θ P ( x ) = max α , β ; α i ≥ 0 [ f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) ] = f ( x ) \theta_{P}(x)=\max _{\alpha, \beta ; \alpha_{i} \geq 0}\left[f(x)+\sum_{i=1}^{k} \alpha_{i} c_{i}(x)+\sum_{j=1}^{l} \beta_{j} h_{j}(x)\right]=f(x) θP(x)=α,β;αi≥0max[f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)]=f(x)
由以上两个式子可以得到:
θ P ( x ) = { f ( x ) , x 满足原始问题约束 + ∞ , 否则 \theta_{P}(x)=\left\{\begin{array}{l} f(x), x \text { 满足原始问题约束} \\ +\infty, \text{否则} \end{array}\right. θP(x)={f(x),x 满足原始问题约束+∞,否则
则极小化问题 θ P ( x ) \theta_{P}(x) θP(x) 有:
min x θ P ( x ) = min x max α , β ; α i ≥ 0 L ( x , α , β ) \min _{x} \theta_{P}(x)=\min _{x} \max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta) xminθP(x)=xminα,β;αi≥0maxL(x,α,β)
与原问题等价,即有相同的解。(因为当趋向无穷时,问题无解,因此必须 满足约束条件)。
- 广义拉格朗日函数的极小极大问题: min x max α , β ; α i ≥ 0 L ( x , α , β ) \min _{x} \max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta) minxmaxα,β;αi≥0L(x,α,β)。
拉格朗日对偶性 – 对偶问题
- 构建关于 α \alpha α 和 β \beta β 的函数:
θ D ( α , β ) = min x L ( x , α , β ) \theta_{D}(\alpha, \beta)=\min _{x} L(x, \alpha, \beta) θD(α,β)=xminL(x,α,β)
- 则其极大化问题称为广义拉格朗日函数的极大极小问题
max α , β ; α i ≥ 0 θ D ( α , β ) = max α , β ; α i ≥ 0 min x L ( x , α , β ) \max _{\alpha, \beta ; \alpha_{i} \geq 0} \theta_{D}(\alpha, \beta)=\max _{\alpha, \beta ; \alpha_{i} \geq 0} \min _{x} L(x, \alpha, \beta) α,β;αi≥0maxθD(α,β)=α,β;αi≥0maxxminL(x,α,β)
- 将其表示为约束最优化问题,称为原始问题的对偶问题
max α , β ; α i ≥ 0 θ D ( α , β ) = max α , β ; α i ≥ 0 min x L ( x , α , β ) s.t. α i ≥ 0 , i = 1 , 2 , ⋯ , k \begin{aligned} \max _{\alpha, \beta ; \alpha_{i} \geq 0} \theta_{D}(\alpha, \beta)=& \max _{\alpha, \beta ; \alpha_{i} \geq 0} \min _{x} L(x, \alpha, \beta) \\ \text { s.t. } & \alpha_{i} \geq 0, \quad i=1,2, \cdots, k \end{aligned} α,β;αi≥0maxθD(α,β)= s.t. α,β;αi≥0maxxminL(x,α,β)αi≥0,i=1,2,⋯,k
原问题与对偶问题之间的关系
- 弱对偶性:若原始问题与对偶问题都有最优解,则对偶问题最优解与原问题最优解具备以下关系:
d ∗ = max α , β ; α i ≥ 0 min x L ( x , α , β ) ≤ min x max α , β ; α i ≥ 0 L ( x , α , β ) = p ∗ d^{*}=\max _{\alpha, \beta ; \alpha_{i} \geq 0} \min _{x} L(x, \alpha, \beta) \leq \min _{x} \max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta)=p^{*} d∗=α,β;αi≥0maxxminL(x,α,β)≤xminα,β;αi≥0maxL(x,α,β)=p∗
- 强对偶性:满足 d ∗ = p ∗ d^{*} = p^{*} d∗=p∗
- 强对偶是一个非常好的性质,因为在强对偶成立的情况下,可以通过求解对偶问题来得到 原始问题的解,在
SVM
中就是这样做的。 - 当然并不是所有的对偶问题都满足强对偶性 ,在
SVM
中是直接假定了强对偶性的成立, 其实只要满足一些条件,强对偶性是成立的,比如说KKT
条件。
KKT
条件:对于原始问题及其对偶问题,假设函数
f
(
x
)
f(x)
f(x)和
c
i
(
x
)
c_{i}(x)
ci(x)是凸函数,
h
j
(
x
)
h_{j}(x)
hj(x)是仿射函数,且不等式约束
c
i
(
x
)
c_{i}(x)
ci(x)是严格可行的,即存在
x
x
x,对所有
i
i
i有
c
i
(
x
)
<
0
c_{i}(x) < 0
ci(x)<0,则存在
x
∗
x^{*}
x∗,
α
∗
\alpha^{*}
α∗,
β
∗
\beta^{*}
β∗,使
x
∗
x^{*}
x∗是原始问题的解,
α
∗
\alpha^{*}
α∗,
β
∗
\beta^{*}
β∗是对偶问题的解的充分必要条件是
x
∗
x^{*}
x∗,
α
∗
\alpha^{*}
α∗,
β
∗
\beta^{*}
β∗满足下面的Karush-Kuhn-Tucker (KKT)
条件:
∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 α i ∗ c i ( x ∗ ) = 0 , i = 1 , 2 , ⋯ , k c i ( x ∗ ) ≤ 0 , i = 1 , 2 , ⋯ , k α i ∗ ≥ 0 , i = 1 , 2 , ⋯ , k h j ( x ∗ ) = 0 , j = 1 , 2 , ⋯ , l \begin{aligned} &\nabla_{x} L\left(x^{*}, \alpha^{*}, \beta^{*}\right)=0\\ &\alpha_{i}^{*} c_{i}\left(x^{*}\right)=0, \quad i=1,2, \cdots, k\\ &c_{i}\left(x^{*}\right) \leq 0, \quad i=1,2, \cdots, k\\ &\alpha_{i}^{*} \geq 0, \quad i=1,2, \cdots, k\\ &h_{j}\left(x^{*}\right)=0, \quad j=1,2, \cdots, l \end{aligned} ∇xL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,i=1,2,⋯,kci(x∗)≤0,i=1,2,⋯,kαi∗≥0,i=1,2,⋯,khj(x∗)=0,j=1,2,⋯,l
线性可分支持向量机
线性可分SVM
设有如下两类样本的训练集:
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} D={(x1,y1),(x2,y2),⋯,(xN,yN)}
线性可分情况意味着存在超平面,使训练点中的正类和负类样本分别位于该超平面的两侧。
w ⋅ x + b = 0 w \cdot x + b = 0 w⋅x+b=0
如果能确定这样的参数对( w , b w, b w,b) 的话,就可以构造决策函数来进行识别新样本。
f ( x ) = s g n ( w ⋅ x + b ) f(x) = sgn(w\cdot x + b) f(x)=sgn(w⋅x+b)
硬间隔最大化
存在的问题:这样的参数对( w , b w,b w,b)有许多。
解决办法是采用最大间隔原则:即选择使得训练集 D D D 对于线性函数 w ⋅ x + b w \cdot x + b w⋅x+b 的几何间隔取最大值的参数对( w , b w,b w,b),并由此构造优化问题。
目标函数:
max M = 2 ∥ w ∥ ⇒ min 1 2 w T w \max M=\frac{2}{\|w\|} \Rightarrow \min \frac{1}{2} w^{T} w maxM=∥w∥2⇒min21wTw
约束条件:
w ⋅ x i + b ≥ 1 if y i = + 1 w ⋅ x i + b ≤ − 1 if y i = − 1 y i ( w ⋅ x i + b ) − 1 ≥ 0 \begin{aligned} w \cdot x_{i}+b \geq 1 & \text { if } & y_{i}=+1 \\ w \cdot x_{i}+b \leq-1 & \text { if } & y_{i}=-1 \\ y_{i}\left(w \cdot x_{i}+b\right) &-1 \geq 0 \end{aligned} w⋅xi+b≥1w⋅xi+b≤−1yi(w⋅xi+b) if if −1≥0yi=+1yi=−1
基于对偶的线性可分SVM学习算法
构建拉格朗日对偶函数: L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i [ y i ( w ⋅ x + b ) − 1 ] L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{N} \alpha_{i}\left[y_{i}(w \cdot x+b)-1\right] L(w,b,α)=21∥w∥2−∑i=1Nαi[yi(w⋅x+b)−1]
根据拉格朗日对偶性,原问题的对偶问题是极大极小问题: max α min w , b L ( w , b , α ) \max _{\alpha} \min _{w, b} L(w, b, \alpha) maxαminw,bL(w,b,α) 即需要先求 L ( w , b , α ) L(w,b,\alpha) L(w,b,α) 对 w , b w,b w,b的极小,再求对 α \alpha α的极大。
(1) 固定 α \alpha α,让 L L L关于 w , b w,b w,b最小化,分别对 w , b w,b w,b求偏导数,令 ∂ L / ∂ w \partial L / \partial w ∂L/∂w和 ∂ L / ∂ b \partial L / \partial b ∂L/∂b等于零:
∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y i x i = 0 ∇ b L ( w , b , α ) = 0 \begin{array}{c} \nabla_{w} L(w, b, \alpha)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\ \nabla_{b} L(w, b, \alpha)=0 \end{array} ∇wL(w,b,α)=w−∑i=1Nαiyixi=0∇bL(w,b,α)=0
可以得到:
w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 \begin{array}{c} w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} \\ \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \end{array} w=∑i=1Nαiyixi∑i=1Nαiyi=0
(2) 将结果代入拉格朗日函数中,整理后可得:
min w , b L ( w , b , α ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \min _{w, b} L(w, b, \alpha)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
根据拉格朗日对偶性,原问题的对偶问题是极大极小问题:
即需要先求 L ( w , b , α ) L(w,b,\alpha) L(w,b,α) 对 w , b w,b w,b的极小,再求对 α \alpha α 的极大。
(3) 求 m i n w , b L ( w , b , α ) min_{w,b}L(w,b,\alpha) minw,bL(w,b,α)对 α \alpha α的极大,即是对偶问题:
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i s.t. ∑ i = 1 N α i j = 0 α i ⩾ 0 , i = 1 , 2 , … , N \begin{aligned} &\max _{\alpha} \quad-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}\\ &\text { s.t. } \sum_{i=1}^{N} \alpha_{i j}=0\\ &\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, N \end{aligned} αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi s.t. i=1∑Nαij=0αi⩾0,i=1,2,…,N
对偶问题:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i x = ∑ i = 1 N a n = 0 α i ⩾ 0 , i = 1 , 2 , … , N \begin{aligned} &\min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i}\\ &x=\sum_{i=1}^{N} a_{n}=0\\ &\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, N \end{aligned} αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαix=i=1∑Nan=0αi⩾0,i=1,2,…,N
(4) 求解上述问题可得到最优的 α ∗ \alpha^{*} α∗ ,进而求得 w ∗ , b ∗ w^{*},b^{*} w∗,b∗,最终获得分离超平面和分类决策函数:
w ∗ = ∑ i = 1 N α i ∗ y i x i b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) \begin{array}{c} w^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i} \\ b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) \end{array} w∗=∑i=1Nαi∗yixib∗=yj−∑i=1Nαi∗yi(xi⋅xj)
分类超平面:
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^{N} \alpha^{*}_{i} y_{i}\left(x \cdot x_{i}\right)+b^{*}=0 i=1∑Nαi∗yi(x⋅xi)+b∗=0
分类决策函数:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}\right) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
以上是推导过程,实际使用过程是这样的:
- 构造并求解最优化问题
求得最优解: α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯ , α N ∗ ) \alpha^{*} = (\alpha^{*}_{1}, \alpha_{2}^{*}, \cdots, \alpha_{N}^{*}) α∗=(α1∗,α2∗,⋯,αN∗)
min a 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i st ∑ i = 1 N a i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , N \begin{aligned} &\min _{a} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i}\\ &\text { st } \sum_{i=1}^{N} a_{i}y_{i}=0\\ &\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, N \end{aligned} amin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi st i=1∑Naiyi=0αi⩾0,i=1,2,…,N
- 计算 w ∗ , b ∗ w^{*},b^{*} w∗,b∗:
w ∗ = ∑ i = 1 N α i ∗ y i x i w^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i} w∗=i=1∑Nαi∗yixi
选择 α ∗ \alpha^{*} α∗的一个正分量 α j ∗ \alpha_{j}^{*} αj∗,计算:
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
- 求得分离超平面:
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}=0 i=1∑Nαi∗yi(x⋅xi)+b∗=0
- 获得分类决策函数:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}\right) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
- 我们得到的原问题的对偶问题的目标函数为:
max α i ⩾ 0 L ( w , b , α ) = max α i ≥ 0 1 2 ∥ w ∥ 2 + ∑ i = 1 α i [ y i ( w ⋅ x + b ) − 1 ] \max _{\alpha_{i} \geqslant 0} L(w, b, \alpha)=\max _{\alpha_{i} \geq 0} \frac{1}{2}\|w\|^{2}+\sum_{i=1} \alpha_{i}\left[y_{i}(w \cdot x+b)-1\right] αi⩾0maxL(w,b,α)=αi≥0max21∥w∥2+i=1∑αi[yi(w⋅x+b)−1]
第一项为正则化项,第二项为模型精度。
-
如果 x i x_{i} xi是支持向量的话,上式中 y i ( w x + b ) − 1 = 0 y_{i}(wx+b)-1=0 yi(wx+b)−1=0 (因为此向量到分类超平面的函数间隔为1);
-
对于非支持向量来说,函数间隔会大于1,因此会有 y i ( w x + b ) − 1 > 0 y_{i}(wx+b)-1 > 0 yi(wx+b)−1>0,由于有约束条件 α i ≥ 0 \alpha_{i} \geq 0 αi≥0,因此为了满足最大化,在最优解 α ∗ \alpha^{*} α∗中,必须有 α i = 0 \alpha_{i}=0 αi=0。
-
结构风险最小化:目标函数第二项为模型精度,第一项为正则化项,有效保证稀疏性,以降低置信风险,因而
SVM
是基于结构风险最小化的学习方法。
线性不可分支持向量机
线性不可分
- 设有如下两类样本的训练集:
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} D={(x1,y1),(x2,y2),⋯,(xN,yN)}
线性不可分情况意味着不存在这样的超平面,使训练点中的正类和负类样本能 够完全分别位于该超平面的两侧,即无法将它们完全分开。如果要用超平面来 划分的话,必然有错分的点。
w ⋅ x + b = 0 w \cdot x + b =0 w⋅x+b=0
现实情况:我们只会线性可分的方法;
处理思路:允许分类误差,并且在目标函数 中引入对分类误差的惩罚。
软间隔最大化
-
允许支持向量机在一些样本上出错,需要我们将硬间隔最大化改为软间隔最大化,当然,在最大化软间隔的同时,不满足约束的样本应尽可能的少。 y i ( w ⋅ x + b ) = 1 y_{i}(w \cdot x +b) = 1 yi(w⋅x+b)=1软间隔要求是 y i ( w ⋅ x + b ) ≥ 1 y_{i}(w \cdot x +b ) \geq 1 yi(w⋅x+b)≥1。
-
为了解决某些样本不满足约束的情况,对每个样本点( x i , y i x_{i},y_{i} xi,yi)引入一个松弛变量 ξ i ≥ 0 \xi_{i} \geq 0 ξi≥0,使函数间隔加上松弛变量大于等于1,这样约束条件就变为:
y i ( w ⋅ x + b ) ≥ 1 − ξ i y_{i}(w \cdot x+b) \geq 1-\xi_{i} yi(w⋅x+b)≥1−ξi
- 为了避免 ξ i \xi_{i} ξi取太大的值,需要在目标函数中对他们进行惩罚,其中 C > 0 C > 0 C>0称为惩罚系数, C C C值大时,对误分类的惩罚增加, C C C值小时对误分类的惩罚减小。
1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i} 21∥w∥2+Ci=1∑Nξi
有了上面的思路,可以和线性可分支持向量机一样来考虑线性支持向量机的学习问题,线性不可分的线性支持向量机的学习问题就变为如下凸二次规划问题:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i s.t. y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , ⋯ , N ξ i ≥ 0 , i = 1 , ⋯ , N \begin{aligned} &\min _{w, b, \xi} \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}\\ &\text {s.t. } \quad y_{i}\left(w \cdot x_{i}+b\right) \geq 1-\xi_{i}, i=1, \cdots, N\\ &\xi_{i} \geq 0, i=1, \cdots, N \end{aligned} w,b,ξmin21∥w∥2+Ci=1∑Nξis.t. yi(w⋅xi+b)≥1−ξi,i=1,⋯,Nξi≥0,i=1,⋯,N
- 通过求解以上凸二次规划问题,即软间隔最大化问题,得到分离超平面为:
w ∗ ⋅ x + b ∗ = 0 w ^{*} \cdot x + b^{*} = 0 w∗⋅x+b∗=0
相应的分类决策函数为:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w ^{*} \cdot x + b^{*}) f(x)=sign(w∗⋅x+b∗)
基于对偶的学习算法
构建拉格朗日对偶函数:
L ( w , b , ξ , α , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i [ y i ( w ⋅ x i + b ) − 1 + ξ i ] − ∑ i = 1 N μ i ξ i L(w, b, \xi, \alpha, \mu)=\frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}-\sum_{i=1}^{N} \alpha_{i}\left[y_{i}\left(w \cdot x_{i}+b\right)-1+\xi_{i}\right]-\sum_{i=1}^{N} \mu_{i} \xi_{i} L(w,b,ξ,α,μ)=21∥w∥2+Ci=1∑Nξi−i=1∑Nαi[yi(w⋅xi+b)−1+ξi]−i=1∑Nμiξi
α i ≥ 0 \alpha_{i} \geq 0 αi≥0, μ i ≥ 0 \mu_{i} \geq 0 μi≥0,需要先求 L ( w , b , ξ , α , μ ) L(w,b,\xi, \alpha,\mu) L(w,b,ξ,α,μ)对 w , b , ξ w,b,\xi w,b,ξ的极小,再求对 α \alpha α的极大。
(1) 分别对 w , b , ξ w,b,\xi w,b,ξ求偏导数,令 ∂ L / ∂ w , ∂ L / ∂ b , ∂ L / ∂ ξ \partial L / \partial w, \partial L / \partial b, \partial L / \partial \xi ∂L/∂w,∂L/∂b,∂L/∂ξ等于零:
∇ w L ( w , b , ξ , α , μ ) = w − ∑ i = 1 N α i y i x i = 0 ∇ b L ( w , b , ξ , α , μ ) = − ∑ i = 1 N α i y i = 0 ∇ ξ i L ( w , b , ξ , α , μ ) = C − α i − μ i = 0 \begin{array}{c} \nabla_{w} L(w, b, \xi, \alpha, \mu)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\ \nabla_{b} L(w, b, \xi, \alpha, \mu)=-\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ \nabla_{\xi_{i}} L(w, b, \xi, \alpha, \mu)=C-\alpha_{i}-\mu_{i}=0 \end{array} ∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0
可以推出:
w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 C − α i − μ i = 0 \begin{array}{c} w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} \\ \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ C-\alpha_{i}-\mu_{i}=0 \end{array} w=∑i=1Nαiyixi∑i=1Nαiyi=0C−αi−μi=0
(2) 将结果代入拉格朗日函数中,整理后可得:
min w , b , ξ L ( w , b , ξ , α , μ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \min _{w, b, \xi} L(w, b, \xi, \alpha, \mu)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,b,ξminL(w,b,ξ,α,μ)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
(3) 求 m i n w , b , ξ L ( w , b , ξ , α , μ ) min_{w,b,\xi}L(w,b,\xi,\alpha,\mu) minw,b,ξL(w,b,ξ,α,μ)对 α \alpha α的极大,即得对偶问题:
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 C − α i − μ i = 0 α i ⩾ 0 μ i ⩾ 0 , i = 1 , 2 , … , N \begin{aligned} \max _{\alpha} &-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} \\ & \text { s.t. } \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & C-\alpha_{i}-\mu_{i}=0 \\ & \alpha_{i} \geqslant 0 \\ \mu_{i} \geqslant 0, & i=1,2, \ldots, N \end{aligned} αmaxμi⩾0,−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi s.t. i=1∑Nαiyi=0C−αi−μi=0αi⩾0i=1,2,…,N
对偶问题,凸二次规划问题,有唯一的最优解:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , … , N \begin{array}{c} \min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \ldots, N \end{array} minα21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi s.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,…,N
(4) 求解上述问题可得到最优的 α ∗ \alpha^{*} α∗,进而求得 w ∗ , b ∗ w^{*},b^{*} w∗,b∗,最终获得分离超平面和分类决策函数:
w ∗ = ∑ i = 1 N α i ′ y i x i b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) \begin{aligned} w^{*} &=\sum_{i=1}^{N} \alpha_{i}^{\prime} y_{i} x_{i} \\ b^{*}=& y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) \end{aligned} w∗b∗==i=1∑Nαi′yixiyj−i=1∑Nαi∗yi(xi⋅xj)
得到分类超平面:
w ∗ ⋅ x + b ∗ = 0 w^{*} \cdot x + b^{*} = 0 w∗⋅x+b∗=0
得到分类决策函数:
f ( x ) = sign ( w ∗ ⋅ x + b ∗ ) f(x)=\operatorname{sign}\left(w^{*} \cdot x+b^{*}\right) f(x)=sign(w∗⋅x+b∗)
以上是推导过程,实际使用过程是这样的:
- 构造并求解最优化问题
求得最优解: α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯ , α N ∗ ) \alpha^{*} = (\alpha^{*}_{1}, \alpha_{2}^{*}, \cdots, \alpha_{N}^{*}) α∗=(α1∗,α2∗,⋯,αN∗)
min a 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i st ∑ i = 1 N a i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , … , N \begin{aligned} &\min _{a} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i}\\ &\text { st } \sum_{i=1}^{N} a_{i}y_{i}=0\\ &0 \leq \alpha_{i} \leq C, \quad i=1,2, \ldots, N \end{aligned} amin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi st i=1∑Naiyi=00≤αi≤C,i=1,2,…,N
- 计算 w ∗ , b ∗ w^{*},b^{*} w∗,b∗:
w ∗ = ∑ i = 1 N α i ∗ y i x i w^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i} w∗=i=1∑Nαi∗yixi
选择 α ∗ \alpha^{*} α∗的一个正分量 0 < α j ∗ < C 0 < \alpha_{j}^{*} < C 0<αj∗<C,计算:
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
- 求得分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^{*} \cdot x + b^{*} = 0 w∗⋅x+b∗=0
- 获得分类决策函数:
f ( x ) = s i g n ( w ∗ ⋅ x ) + b ∗ f(x)=sign(w^{*} \cdot x) + b^{*} f(x)=sign(w∗⋅x)+b∗
软间隔支持向量
软间隔支持向量具有以下性质:
-
软间隔的支持向量 x i x_{i} xi或在间隔边界上,或在间隔边界与分离超平面之间,,或在分离超平面 误分一侧; L ( w , b , ξ , α , μ ) L(w,b,\xi,\alpha,\mu) L(w,b,ξ,α,μ)。
-
若 α i ∗ < C \alpha_{i}^{*} < C αi∗<C,则 ξ i = 0 \xi_{i} = 0 ξi=0(前面偏导条件),支持向量 x i x_{i} xi恰好落在间隔边界上;
-
若 α i ∗ = C \alpha_{i}^{*} = C αi∗=C, 0 < ξ i < 1 0 < \xi_{i} < 1 0<ξi<1,则 y i ( w ⋅ x ) + b > 1 − ξ i > 0 y_{i}(w \cdot x) + b > 1-\xi_{i} > 0 yi(w⋅x)+b>1−ξi>0,则正确分类,支持向量 x i x_{i} xi在间隔边界与分离超平面之间;
-
若 α i ∗ = C \alpha_{i}^{*} = C αi∗=C, ξ i = 1 \xi_{i} = 1 ξi=1,则支持向量 x i x_{i} xi在分离超平面上;
-
若 α i ∗ = C \alpha_{i}^{*} = C αi∗=C, ξ i > 1 \xi_{i} > 1 ξi>1,则分类错误,支持向量 x i x_{i} xi在分离超平面的误分一侧。
非线性支持向量机
非线性数据
在现实任务中,我们得到的数据一般都不是线性可分的,这时线性可分支持向 量机就不适用了。非线性数据意味着不存在这样的超平面,使训练点中的正类 和负类样本能够完全分别位于该超平面的两侧。
Kernel核函数方法
核方法的主要思想: 基于这样一个假设:“在低维空间中不能线性分割的点集,通过转化为高维空间中的点集 时,很有可能变为线性可分的”。
具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核 函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优的分离超平面, 从而把平面上本身不好分的非线性数据分开。
SVM
处理非线性数据的一般方法:
选择一个非线性特征集,并将数据改写成新的表达方式,这等价于应用一个固定的非线性 映射,将数据映射到高维特征空间,在高维特征空间中使用线性分类器。
f ( x ) = ∑ i = 1 n w i ϕ i ( x ) + b f(x)=\sum_{i=1}^{n} w_{i} \phi_{i}(x)+b f(x)=i=1∑nwiϕi(x)+b
其中, ϕ ( ) \phi() ϕ() 表示从输入空间到某个高维特征空间的映射。
这意味着线性分类方法求解非线性分类问题一般分为两步:
- 使用一个变换将原空间的数据映射到新空间。
- 在新空间里使用线性分类学习方法从训练数据中学习分类模型。
映射函数相当于把原来的分类函数进行了映射:
f ( x ) = ∑ i = 1 n α i y i ⟨ x i , x ⟩ + b f(x)=\sum_{i=1}^{n} \alpha_{i} y_{i}\left\langle x_{i}, x\right\rangle+b f(x)=i=1∑nαiyi⟨xi,x⟩+b
映射之后为:
f ( x ) = ∑ i = 1 n α i y i ⟨ ϕ ( x i ) , ϕ ( x ) ⟩ + b f(x)=\sum_{i=1}^{n} \alpha_{i} y_{i}\left\langle\phi\left(x_{i}\right), \phi(x)\right\rangle+b f(x)=i=1∑nαiyi⟨ϕ(xi),ϕ(x)⟩+b
而其中的 α \alpha α 可以通过求解如下对偶问题得到:
max α ∑ i = 1 n α i − 1 2 ∑ i , j = 1 N α i α j y i y j ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ s.t. ∑ i = 1 n α i y i = 0 α i ≥ 0 , i = 1 , ⋯ , n \begin{aligned} &\max _{\alpha} \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left\langle\phi\left(x_{i}\right), \phi\left(x_{j}\right)\right\rangle\\ &\text {s.t.} \quad \sum_{i=1}^{n} \alpha_{i} y_{i}=0\\ &\alpha_{i} \geq 0, i=1, \cdots, n \end{aligned} αmaxi=1∑nαi−21i,j=1∑Nαiαjyiyj⟨ϕ(xi),ϕ(xj)⟩s.t.i=1∑nαiyi=0αi≥0,i=1,⋯,n
- 使用映射函数方法的再思考:
设两个向量 x 1 ( η 1 , η 2 ) T x_{1}(\eta_{1},\eta_{2})^{T} x1(η1,η2)T和 x 2 = ( ξ 1 , ξ 2 ) x_{2} = (\xi_{1},\xi_{2}) x2=(ξ1,ξ2),而 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)即是五维空间的映射,因此可以将 x 1 , x 2 x_{1},x_{2} x1,x2先通过 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)映射到五维空间,然年计算内积:
ϕ ( x 1 ) = ( η 1 , η 1 2 , η 2 , η 2 2 , η 1 η 2 ) T , ϕ ( x 2 ) = ( ξ 1 , ξ 1 2 , ξ 2 , ξ 2 2 , ξ 1 ξ 2 ) T ⟨ ϕ ( x 1 ) , ϕ ( x 2 ) ⟩ = η 1 ξ 1 + η 1 2 ζ 1 z + η 2 ζ 2 + η 2 2 ζ 2 2 + η 1 η 2 ξ 1 ∗ ξ 2 \begin{array}{c} \phi\left(x_{1}\right)=\left(\eta_{1}, \eta_{1}^{2}, \eta_{2}, \eta_{2}^{2}, \eta_{1} \eta_{2}\right)^{T}, \phi\left(x_{2}\right)=\left(\xi_{1}, \xi_{1}^{2}, \xi_{2}, \xi_{2}^{2}, \xi_{1} \xi_{2}\right)^{T} \\ \left\langle\phi\left(x_{1}\right), \phi\left(x_{2}\right)\right\rangle=\eta_{1} \xi_{1}+\eta_{1}^{2} \zeta_{1}^{z}+\eta_{2} \zeta_{2}+\eta_{2}^{2} \zeta_{2}^{2}+\eta_{1} \eta_{2} \xi_{1}^{*} \xi_{2} \end{array} ϕ(x1)=(η1,η12,η2,η22,η1η2)T,ϕ(x2)=(ξ1,ξ12,ξ2,ξ22,ξ1ξ2)T⟨ϕ(x1),ϕ(x2)⟩=η1ξ1+η12ζ1z+η2ζ2+η22ζ22+η1η2ξ1∗ξ2
另外,我们注意到:
( ⟨ x 1 , x 2 ⟩ + 1 ) 2 = ⟨ x 1 , x 2 ⟩ 2 + 2 ⟨ x 1 , x 2 ⟩ + 1 = ( η 1 ξ 1 + η 2 ξ 2 ) 2 + 2 ( η 1 ξ 1 + η 2 ξ 2 ) + 1 = 2 η 1 ξ 1 + η 1 2 ξ 1 + 2 η 2 ξ 2 + η 2 2 ξ 2 + 2 η 1 η 2 ξ 1 ξ 2 + 1 \begin{array}{c} \left(\left\langle x_{1}, x_{2}\right\rangle+1\right)^{2}=\left\langle x_{1}, x_{2}\right\rangle^{2}+2\left\langle x_{1}, x_{2}\right\rangle+1 \\ =\left(\eta_{1} \xi_{1}+\eta_{2} \xi_{2}\right)^{2}+2\left(\eta_{1} \xi_{1}+\eta_{2} \xi_{2}\right)+1 \\ =2 \eta_{1} \xi_{1}+\eta_{1}^{2} \xi_{1}+2 \eta_{2} \xi_{2}+\eta_{2}^{2} \xi_{2}+2 \eta_{1} \eta_{2} \xi_{1} \xi_{2}+1 \end{array} (⟨x1,x2⟩+1)2=⟨x1,x2⟩2+2⟨x1,x2⟩+1=(η1ξ1+η2ξ2)2+2(η1ξ1+η2ξ2)+1=2η1ξ1+η12ξ1+2η2ξ2+η22ξ2+2η1η2ξ1ξ2+1
可以发现,上面的两个式子有很多相同的地方,实际上,我们只需要把某几个维度线性缩放 一下,然后加上一个常数维度,具体来说,上面这个式子的计算实际上和映射效果相同:
φ ( X 1 , X 2 ) = ( 2 X 1 , X 1 2 , 2 X 2 , X 2 2 , 2 X 1 X 2 , 1 ) T \varphi\left(X_{1}, X_{2}\right)=\left(\sqrt{2} X_{1}, X_{1}^{2}, \sqrt{2} X_{2}, X_{2}^{2}, \sqrt{2} X_{1} X_{2}, 1\right)^{T} φ(X1,X2)=(2X1,X12,2X2,X22,2X1X2,1)T
- 两种方法的区别:
一个是映射到高维空间中,然后再根据内积的公式计算:
ϕ ( x 1 ) = ( η 1 , η 1 2 , η 2 , η 2 2 , η 1 η 2 ) T , ϕ ( x 2 ) = ( ξ 1 , ξ 1 2 , ξ 2 , ξ 2 2 , ξ 1 ξ 2 ) T ⟨ ϕ ( x 1 ) , ϕ ( x 2 ) ⟩ = η 1 ξ 1 + η 1 2 ξ 1 2 + η 2 ξ 2 + η 2 2 ξ 2 2 + η 1 η 2 ξ 1 ξ 2 \begin{array}{c} \phi\left(x_{1}\right)=\left(\eta_{1}, \eta_{1}^{2}, \eta_{2}, \eta_{2}^{2}, \eta_{1} \eta_{2}\right)^{T}, \phi\left(x_{2}\right)=\left(\xi_{1}, \xi_{1}^{2}, \xi_{2}, \xi_{2}^{2}, \xi_{1} \xi_{2}\right)^{T} \\ \left\langle\phi\left(x_{1}\right), \phi\left(x_{2}\right)\right\rangle=\eta_{1} \xi_{1}+\eta_{1}^{2} \xi_{1}^{2}+\eta_{2} \xi_{2}+\eta_{2}^{2} \xi_{2}^{2}+\eta_{1} \eta_{2} \xi_{1} \xi_{2} \end{array} ϕ(x1)=(η1,η12,η2,η22,η1η2)T,ϕ(x2)=(ξ1,ξ12,ξ2,ξ22,ξ1ξ2)T⟨ϕ(x1),ϕ(x2)⟩=η1ξ1+η12ξ12+η2ξ2+η22ξ22+η1η2ξ1ξ2
而另一个则直接在原始空间中计算,而不需要显式地写出映射后的结果:
φ ( X 1 , X 2 ) = ( 2 X 1 , X 1 2 , 2 X 2 , X 2 2 , 2 X 1 X 2 , 1 ) T \varphi\left(X_{1}, X_{2}\right)=\left(\sqrt{2} X_{1}, X_{1}^{2}, \sqrt{2} X_{2}, X_{2}^{2}, \sqrt{2} X_{1} X_{2}, 1\right)^{T} φ(X1,X2)=(2X1,X12,2X2,X22,2X1X2,1)T
现在我们回忆下前面提到的维度爆炸,在前一种方法已经无法计算的情况下,后一种方法却 依旧能处理,甚至无穷维度也没有问题。
我们把这里的计算两个向量在隐式映射过后在空间中的内积的函数叫做核函数,例如,前面 的例子中,核函数为,例如,前面的例子中,核函数为:
k ( x 1 , x 2 ) = ( ⟨ x 1 , x 2 ⟩ + 1 ) 2 k\left(x_{1}, x_{2}\right)=\left(\left\langle x_{1}, x_{2}\right\rangle+1\right)^{2} k(x1,x2)=(⟨x1,x2⟩+1)2
核函数能够简化映射空间中的内积运算。
- 核函数的定义:
设 X \mathcal{X} X是输入空间, H \mathcal{H} H为特征空间,,如果存在一个从 X \mathcal{X} X到 H \mathcal{H} H的映射: ϕ ( x ) : X → H \phi(x): \mathcal{X} \rightarrow \mathcal{H} ϕ(x):X→H。使得对所有 x , z ∈ X x,z \in \mathcal{X} x,z∈X,函数 K ( x , z ) K(x,z) K(x,z)满足条件: k ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) k(x, z)=\phi(x) \cdot \phi(z) k(x,z)=ϕ(x)⋅ϕ(z)。则称 k ( x , z ) k(x,z) k(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数,式中 ϕ ( x ) ⋅ ϕ ( z ) \phi(x) \cdot \phi(z) ϕ(x)⋅ϕ(z)为内积。
- 核技巧:
在核函数 k ( x , z ) k(x,z) k(x,z)给定的条件下,可以利用求解线性分类问题的方法求解非线性分类问题的支持向量机;学习是隐式地在特征空间进行,不需要显示地定义特征空间和映射函数,这样的技巧称为核技巧。
使用核技巧,解决了计算的复杂性问题,避开了直接在高维空间中进行计算,,而结果却是等价的。
- 针对任意一个映射,手工设计出相应的核函数是很困难的,所以我们通常是在 常用的核函数中,按照问题和数据特点,进行选择:
多项式核函数:
k ( x i , x j ) = ( x i T x j ) p k(x_{i},x_{j}) = (x_{i}^{T}x_{j})^{p} k(xi,xj)=(xiTxj)p
p ≥ 1 p \geq 1 p≥1为多项式的次数。
高斯核函数:
k ( x i , x j ) = exp ( − ∥ x i − x j ∥ 2 2 σ 2 ) k\left(x_{i}, x_{j}\right)=\exp \left(-\frac{\left\|x_{i}-x_{j}\right\|^{2}}{2 \sigma^{2}}\right) k(xi,xj)=exp(−2σ2∥xi−xj∥2)
δ ≥ 1 \delta \geq 1 δ≥1为高斯核的带宽。在实际应用中,采用较多的是高斯核函数,这个核可以将原始空间映射为高维空间(也就是我们前面提到的空间映射)。
- 高斯核函数中参数 σ \sigma σ对模型性能的影响。
如果 σ \sigma σ选得过大的话,高次特征上的权重实际上衰减的非常快,所以实际上相当于一个低维的子空间;
性质1. 当 σ \sigma σ趋于无穷时,SVM的判别函数为一常函数,其推广能力或对新样本的正确分类能力为零,即把所有样本点判别为同一类。
如果 σ \sigma σ选得过小的话,则可以将任意的数据映射为线性可分的–当然这并不完全是好事,因为随着而来的是非常严重的过拟合问题;
性质 2. 若RBF
核中尺度参数
σ
\sigma
σ趋于0,则拉格朗日 乘子向量的所有分量都大于0,即全部样本点都是 支持向量。
总的来说,通过调控参数
σ
\sigma
σ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。
线性核函数:
k ( x i , x j ) = x i T x j k(x_{i},x_{j}) = x_{i}^{T}x_{j} k(xi,xj)=xiTxj
核函数的本质
通常我们遇到的数据都是线性不可分的,我们需要将其映射到高维空间,但是这 可能带来维度灾难;这时候,核函数便是一种很好的解决方法,核函数的价值就 在于它虽然也是将特征进行从低维到高维的映射,但是核函数的巧妙之处在于它 事先在低维上进行计算,而将实质上的分类效果表现在高维上,这样做也就避免 了在高维空间中的复杂运算。
基于Kernel
的SVM
:假设现在你是一个农场主,圈养了一批羊,但为了预防狼群 袭击羊群,你需要搭建一个篱笆来把羊和狼分开,但是篱笆应该建在哪儿呢?
基于核函数的非线性支持向量机
给定训练数据集 T = { ( x 1 , y 1 ) , ⋯ , ( x N , y N ) } T=\{(x_{1},y_{1}),\cdots , (x_{N},y_{N})\} T={(x1,y1),⋯,(xN,yN)}, y i ∈ { − 1 , + 1 } y_{i} \in \{-1,+1\} yi∈{−1,+1}, i = 1 , ⋯ , N i = 1, \cdots ,N i=1,⋯,N,训练方法:
(1) 选取适当的核函数 k ( x i , x j ) k(x_{i}, x_{j}) k(xi,xj)和适当的参数 C C C,构造并求解最优化问题,得到最优的 α ∗ \alpha^{*} α∗:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , … , N \begin{array}{c} \min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ 0 \leqslant \alpha_{i} \leqslant C, i=1,2, \ldots, N \end{array} minα21∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi s.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,…,N
(2) 选择 α ∗ \alpha^{*} α∗的一个分量 0 < α j ∗ < C 0< α_{j}^{*}<C 0<αj∗<C计算: b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i , x j ) b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K\left(x_{i}, x_{j}\right) b∗=yj−∑i=1Nαi∗yiK(xi,xj)。
(3)构造分类决策函数: f ( x ) = sign ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K\left(x, x_{i}\right)+b^{*}\right) f(x)=sign(∑i=1Nαi∗yiK(x,xi)+b∗)
最小二乘支持向量机
LSSVM概述
LSSVM提出的背景
-
支持向量机是针对小样本问题,基于结构风险最小化,较好地解决了以往机器学习模型中的 过学习、非线性、维数灾难以及局部极小值等问题,具有较好的泛化能力;
-
然而,该方法在大规模训练样本时,存在训练速度慢、稳定性差等缺陷,从而制约了其使用 范围(学习过程中需要求解二次规划问题);
-
因此,1999年,
Suykens
和Vandewalle
等人在SVM
的基础上提出LSSVM
(Least Square Support Vector Machine, LSSVM),该算法的计算复杂度大为减少,使得训练速度得到提高。 -
最小二乘支持向量机(
LSSVM
)是标准支持向量机的一种扩展,该算法将支持 向量机的求解从二次规划问题转化为线性方程组。 -
它与支持向量机的不同之处在于它把不等式约束改成等式约束,并把经验风险 由偏差的一次方改为二次方。
分类问题回顾:
给定训练数据集 T = { ( x 1 , y 1 ) , ⋯ , ( x N , y N ) } T=\{(x_{1},y_{1}),\cdots , (x_{N},y_{N})\} T={(x1,y1),⋯,(xN,yN)},其中 x i ∈ R n , y i ∈ { − 1 , + 1 } , i = 1 , … , N x_{i} \in \mathbb{R}^{n}, y_{i} \in\{-1,+1\}, i=1, \ldots, N xi∈Rn,yi∈{−1,+1},i=1,…,N;
分类支持向量机的目标是构造如下形式的分类器,使得 f ( x ) f(x) f(x)能够将样本正确分类
f ( x ) = sign [ ω T φ ( x ) + b ] f(x)=\operatorname{sign}\left[\omega^{T} \varphi(x)+b\right] f(x)=sign[ωTφ(x)+b]
LSSVM
分类算法:
(1) 构建LSSVM
的分类优化问题的目标函数:
min 1 2 w T w + 1 2 r ∑ i = 1 N ξ i 2 \min \frac{1}{2} w^{T} w+\frac{1}{2} r \sum_{i=1}^{N} \xi_{i}^{2} min21wTw+21ri=1∑Nξi2
(2) 相比于SVM
,其约束条件有所不同,它将SVM
的不等式约束改为等式约束:
y i [ w T φ ( x i ) + b ] = 1 − ξ i , i = 1 , 2 , … , N y_{i}\left[w^{T} \varphi\left(x_{i}\right)+b\right]=1-\xi_{i}, i=1,2, \dots, N yi[wTφ(xi)+b]=1−ξi,i=1,2,…,N
(3) 构造拉格朗日函数:
L = 1 2 w T w + 1 2 r ∑ i = 1 N ξ i 2 − ∑ i = 1 N α i { y i [ w T φ ( x i ) + b ] − 1 + ξ } L=\frac{1}{2} w^{T} w+\frac{1}{2} r \sum_{i=1}^{N} \xi_{i}^{2}-\sum_{i=1}^{N} \alpha_{i}\left\{y_{i}\left[w^{T} \varphi\left(x_{i}\right)+b\right]-1+\xi\right\} L=21wTw+21ri=1∑Nξi2−i=1∑Nαi{yi[wTφ(xi)+b]−1+ξ}
(4) 根据KKT
条件,取最优值时应该满足对各变量的偏导数为0
的约束条件:
{ ω = ∑ i = 1 N α i y i φ ( x i ) ∑ i = 1 N α i y i = 0 α i = r ξ i y i [ ω T × φ ( x i ) + b ] − 1 + ξ i = 0 \left\{\begin{array}{l} \omega=\sum_{i=1}^{N} \alpha_{i} y_{i} \varphi\left(x_{i}\right) \\ \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ \alpha_{i}=r \xi_{i} \\ y_{i}\left[\omega^{T} \times \varphi\left(x_{i}\right)+b\right]-1+\xi_{i}=0 \end{array}\right. ⎩⎪⎪⎨⎪⎪⎧ω=∑i=1Nαiyiφ(xi)∑i=1Nαiyi=0αi=rξiyi[ωT×φ(xi)+b]−1+ξi=0
消去 w w w和 ξ \xi ξ得到线性系统
[ 0 Y T Y Z Z T + r − 1 I ] [ b a ] = [ 0 1 ] \left[\begin{array}{cc} 0 & \mathbf{Y}^{T} \\ \mathbf{Y} & \mathbf{Z} \mathbf{Z}^{T}+r^{-1} \mathbf{I} \end{array}\right]\left[\begin{array}{l} b \\ a \end{array}\right]=\left[\begin{array}{l} 0 \\ 1 \end{array}\right] [0YYTZZT+r−1I][ba]=[01]
(5) 在上式的线性方程组系统中:
{ Z = [ φ ( x 1 ) T y 1 , φ ( x 2 ) T y 2 , ⋯ , φ ( x l ) T y l , ] T Y = [ y 1 , y 2 , ⋯ , y l ] T 1 = [ 1 , 1 , ⋯ , 1 ] T α = [ α 1 , α 2 , ⋯ , α l ] T \left\{\begin{array}{l} \mathbf{Z}=\left[\varphi\left(x_{1}\right)^{T} y_{1}, \varphi\left(x_{2}\right)^{T} y_{2}, \cdots, \varphi\left(x_{l}\right)^{T} y_{l},\right]^{T} \\ \mathbf{Y}=\left[y_{1}, y_{2}, \cdots, y_{l}\right]^{T} \\ \mathbf{1}=[1,1, \cdots, 1]^{T} \\ \boldsymbol{\alpha}=\left[\alpha_{1}, \alpha_{2}, \cdots, \alpha_{l}\right]^{T} \end{array}\right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧Z=[φ(x1)Ty1,φ(x2)Ty2,⋯,φ(xl)Tyl,]TY=[y1,y2,⋯,yl]T1=[1,1,⋯,1]Tα=[α1,α2,⋯,αl]T
(6) 令 A = Z Z T + r − 1 I A=ZZ^{T}+r^{-1}I A=ZZT+r−1I,可以求得上述线性方程组的解,进而获得分类决策函数
{ α = A − 1 ( 1 − Y b ) b = Y T A − 1 1 Y T A − 1 Y \left\{\begin{array}{l} \alpha=\mathbf{A}^{-1}(\mathbf{1}-\mathbf{Y} b) \\ b=\frac{\mathbf{Y}^{T} \mathbf{A}^{-1} \mathbf{1}}{\mathbf{Y}^{T} \mathbf{A}^{-1} \mathbf{Y}} \end{array}\right. {α=A−1(1−Yb)b=YTA−1YYTA−11
得到:
f ( x ) = sign [ ∑ i = 1 N α i y i k ( x , x i ) + b ] f(x)=\operatorname{sign}\left[\sum_{i=1}^{N} \alpha_{i} y_{i} k\left(x, x_{i}\right)+b\right] f(x)=sign[i=1∑Nαiyik(x,xi)+b]
回归问题回顾
给定训练数据集 T = { ( x 1 , y 1 ) , ⋯ , ( x N , y N ) } T=\{(x_{1},y_{1}),\cdots , (x_{N},y_{N})\} T={(x1,y1),⋯,(xN,yN)},其中 x i ∈ R n , y i ∈ R , i = 1 , … , N x_{i} \in \mathbb{R}^{n}, y_{i} \in R, i=1, \ldots, N xi∈Rn,yi∈R,i=1,…,N;
回归(Regression
)支持向量机的目标是构造如下形式的预测函数,使得
f
(
x
)
f(x)
f(x)能够与样本的实际 函数值近似
f ( x ) = ω T φ ( x ) + b f(x)=\omega^{T} \varphi(x)+b f(x)=ωTφ(x)+b
最小二乘支持向量回归算法LSSVR
(1) 构建LSSVR
的优化问题的目标函数:
min 1 2 w T w + 1 2 r ∑ i = 1 N ξ i 2 \min \frac{1}{2} w^{T} w+\frac{1}{2} r \sum_{i=1}^{N} \xi_{i}^{2} min21wTw+21ri=1∑Nξi2
(2) 相比于SVM
,其约束条件有所不同,它将SVM
的不等式约束改为等式约束:
y i = ω T φ ( x i ) + b + ξ i , i = 1 , 2 , ⋯ , N y_{i}=\omega^{T} \varphi\left(x_{i}\right)+b+\xi_{i}, i=1,2, \cdots, N yi=ωTφ(xi)+b+ξi,i=1,2,⋯,N
(3) 构造拉格朗日函数:
L = 1 2 ω T ω + 1 2 r ∑ i = 1 l ξ i 2 − ∑ i = 1 l α i { ω T φ ( x i ) + b + ξ i − y i } L=\frac{1}{2} \omega^{T} \omega+\frac{1}{2} r \sum_{i=1}^{l} \xi_{i}^{2}-\sum_{i=1}^{l} \alpha_{i}\left\{\omega^{T} \varphi\left(x_{i}\right)+b+\xi_{i}-y_{i}\right\} L=21ωTω+21ri=1∑lξi2−i=1∑lαi{ωTφ(xi)+b+ξi−yi}
(4)根据KKT
条件,取最优值时应该满足对各变量的偏导数为0
的约束条件:
{ ω = ∑ i = 1 l α i φ ( x i ) − ∑ i = 1 l α i = 0 α i = r ξ i i = 1 , ⋯ , N ω T φ ( x i ) + b + ξ i − y i = 0 i = 1 , ⋯ , N \left\{\begin{array}{l} \omega=\sum_{i=1}^{l} \alpha_{i} \varphi\left(x_{i}\right) \\ -\sum_{i=1}^{l} \alpha_{i}=0 \\ \alpha_{i}=r \xi_{i} \quad i=1, \cdots, N \\ \omega^{T} \varphi\left(x_{i}\right)+b+\xi_{i}-y_{i}=0 \quad i=1, \cdots, N \end{array}\right. ⎩⎪⎪⎨⎪⎪⎧ω=∑i=1lαiφ(xi)−∑i=1lαi=0αi=rξii=1,⋯,NωTφ(xi)+b+ξi−yi=0i=1,⋯,N
消去 w w w和 ξ \xi ξ得到线性系统:
[ 0 1 T 1 Z Z T + r − 1 I ] [ b α ] = [ 0 y ] \left[\begin{array}{cc} 0 & \mathbf{1}^{T} \\ \mathbf{1} & \boldsymbol{Z} \boldsymbol{Z}^{T}+r^{-1} \boldsymbol{I} \end{array}\right]\left[\begin{array}{l} b \\ \alpha \end{array}\right]=\left[\begin{array}{l} 0 \\ y \end{array}\right] [011TZZT+r−1I][bα]=[0y]
(5) 在上式的线性方程组系统中:
{ Z = [ φ ( x 1 ) , φ ( x 2 ) , ⋯ , φ ( x N ) ] T y = [ y 1 , y 2 , ⋯ , y N ] T 1 = [ 1 , 1 , ⋯ 1 ] T α = [ α 1 , α 2 , ⋯ α N ] T \left\{\begin{array}{l} Z=\left[\varphi\left(x_{1}\right), \varphi\left(x_{2}\right), \cdots, \varphi\left(x_{N}\right)\right]^{T} \\ y=\left[y_{1}, y_{2}, \cdots, y_{N}\right]^{T} \\ \mathbf{1}=[1,1, \cdots 1]^{T} \\ \alpha=\left[\alpha_{1}, \alpha_{2}, \cdots \alpha_{N}\right]^{T} \end{array}\right. ⎩⎪⎪⎨⎪⎪⎧Z=[φ(x1),φ(x2),⋯,φ(xN)]Ty=[y1,y2,⋯,yN]T1=[1,1,⋯1]Tα=[α1,α2,⋯αN]T
(6) 令 A = Z Z T + r − 1 I A=ZZ^{T}+r^{-1}I A=ZZT+r−1I,可以求得上述线性方程组的解,进而获得回归函数。
{ b = 1 T A − 1 y 1 T A − 1 1 α = A − 1 ( y − b 1 ) \left\{\begin{array}{l} b=\frac{1^{T} A^{-1} y}{1^{T} A^{-1} 1} \\ \alpha=A^{-1}(y-b 1) \end{array}\right. {b=1TA−111TA−1yα=A−1(y−b1)
得到:
f ( x ) = ∑ i = 1 N α i k ( x , x i ) + b f(x)=\sum_{i=1}^{N} \alpha_{i} k\left(x, x_{i}\right)+b f(x)=i=1∑Nαik(x,xi)+b
在Python中使用支持向量机分类算法
在Scikit-Learn
库中,支持向量机算法族都在sklearn.svm
包中,当前版本一共有8
个类。看起来也与其他机器学习算法族一样似乎有不少变种,其实并不太一样,支持向量机算法总的来说就一种,只是在核函数上有不同的选择,以及用于解决不同的问题,包括分类问题、回归问题和无监督学习问题中的异常点检测,具体为:
LinearSVC
类:基于线性核函数的支持向量机分类算法。LinearSVR
类:基于线性核函数的支持向量机回归算法。SVC
类:可选择多种核函数的支持向量机分类算法,通过“kernel”
参数可以传入“linear”
选择线性函数、传入“polynomial”
选择多项式函数、传入“rbf”
选择径向基函数、传入“sigmoid”
选择Logistics
函数作为核函数,以及设置“precomputed”
使用预设核值矩阵。默认以径向基函数作为核函数。SVR
类:可选择多种核函数的支持向量机回归算法。NuSVC
类:与SVC
类非常相似,但可通过参数“nu”
设置支持向量的数量。NuSVR
类:与SVR
类非常相似,但可通过参数“nu”
设置支持向量的数量。OneClassSVM
类:用支持向量机算法解决无监督学习的异常点检测问题。
from sklearn.datasets import load_iris
from sklearn.svm import SVC
# 载入鸢尾花数据集
X, y = load_iris(return_X_y=True)
clf = SVC().fit(X, y) # 训练模型
print(clf.predict(X)) # 分类预测
print(clf.score(X, y))
参考
【1】本文主要参考东北大学大数据科学课程SVM小节。