支持向量机

计算(软间隔)SVM分类器等同于使下面表达式最小化

[

1

n

i

=

1

n

max

(

0

,

1

y

i

(

w

x

i

+

b

)

)

]

+

λ

w

2

.

(

2

)

{\displaystyle \left[{\frac {1}{n}}\sum _{i=1}^{n}\max \left(0,1-y_{i}(w\cdot x_{i}+b)\right)\right]+\lambda \lVert w\rVert ^{2}.\qquad (2)}

如上所述,由于我们关注的是软间隔分类器,

λ

{\displaystyle \lambda }

选择足够小的值就能得到线性可分类输入数据的硬间隔分类器。下面会详细介绍将(2)简化为二次规划问题的经典方法。之后会讨论一些最近才出现的方法,如次梯度下降法和坐标下降法。

原型

编辑

最小化(2)可以用下面的方式改写为目标函数可微的约束优化问题。

对所有

i

{

1

,

,

n

}

{\displaystyle i\in \{1,\,\ldots ,\,n\}}

我们引入变量

ζ

i

=

max

(

0

,

1

y

i

(

w

x

i

+

b

)

)

{\displaystyle \zeta _{i}=\max \left(0,1-y_{i}(w\cdot x_{i}+b)\right)}

。注意到

ζ

i

{\displaystyle \zeta _{i}}

是满足

y

i

(

w

x

i

+

b

)

1

ζ

i

{\displaystyle y_{i}(w\cdot x_{i}+b)\geq 1-\zeta _{i}}

的最小非负数。

因此,我们可以将优化问题叙述如下

minimize

1

n

i

=

1

n

ζ

i

+

λ

w

2

{\displaystyle {\text{minimize }}{\frac {1}{n}}\sum _{i=1}^{n}\zeta _{i}+\lambda \|w\|^{2}}

subject to

y

i

(

x

i

w

+

b

)

1

ζ

i

and

ζ

i

0

,

for all

i

.

{\displaystyle {\text{subject to }}y_{i}(x_{i}\cdot w+b)\geq 1-\zeta _{i}\,{\text{ and }}\,\zeta _{i}\geq 0,\,{\text{for all }}i.}

这就叫做原型问题。

对偶型

编辑

通过求解上述问题的拉格朗日对偶(英语:Duality (optimization)),得到简化的问题

maximize

f

(

c

1

c

n

)

=

i

=

1

n

c

i

1

2

i

=

1

n

j

=

1

n

y

i

c

i

(

x

i

x

j

)

y

j

c

j

,

{\displaystyle {\text{maximize}}\,\,f(c_{1}\ldots c_{n})=\sum _{i=1}^{n}c_{i}-{\frac {1}{2}}\sum _{i=1}^{n}\sum _{j=1}^{n}y_{i}c_{i}(x_{i}\cdot x_{j})y_{j}c_{j},}

subject to

i

=

1

n

c

i

y

i

=

0

,

and

0

c

i

1

2

n

λ

for all

i

.

{\displaystyle {\text{subject to }}\sum _{i=1}^{n}c_{i}y_{i}=0,\,{\text{and }}0\leq c_{i}\leq {\frac {1}{2n\lambda }}\;{\text{for all }}i.}

这就叫做对偶问题。由于对偶最小化问题是受线性约束的

c

i

{\displaystyle c_{i}}

的二次函数,所以它可以通过二次规划算法高效地解出。

这里,变量

c

i

{\displaystyle c_{i}}

定义为满足

w

=

i

=

1

n

c

i

y

i

x

i

{\displaystyle {\vec {w}}=\sum _{i=1}^{n}c_{i}y_{i}{\vec {x}}_{i}}

.

此外,当

x

i

{\displaystyle {\vec {x}}_{i}}

恰好在间隔的正确一侧时

c

i

=

0

{\displaystyle c_{i}=0}

,且当

x

i

{\displaystyle {\vec {x}}_{i}}

位于间隔的边界时

0

<

c

i

<

(

2

n

λ

)

1

{\displaystyle 0

。因此,

w

{\displaystyle {\vec {w}}}

可以写为支持向量的线性组合。

可以通过在间隔的边界上找到一个

x

i

{\displaystyle {\vec {x}}_{i}}

并求解

y

i

(

w

x

i

+

b

)

=

1

b

=

y

i

w

x

i

.

{\displaystyle y_{i}({\vec {w}}\cdot {\vec {x}}_{i}+b)=1\iff b=y_{i}-{\vec {w}}\cdot {\vec {x}}_{i}.}

得到偏移量

b

{\displaystyle b}

。(注意由于

y

i

=

±

1

{\displaystyle y_{i}=\pm 1}

因而

y

i

1

=

y

i

{\displaystyle y_{i}^{-1}=y_{i}}

。)

核技巧

编辑

假设我们要学习与变换后数据点

φ

(

x

i

)

{\displaystyle \varphi ({\vec {x}}_{i})}

的线性分类规则对应的非线性分类规则。此外,我们有一个满足

k

(

x

i

,

x

j

)

=

φ

(

x

i

)

φ

(

x

j

)

{\displaystyle k({\vec {x}}_{i},{\vec {x}}_{j})=\varphi ({\vec {x}}_{i})\cdot \varphi ({\vec {x}}_{j})}

的核函数

k

{\displaystyle k}

我们知道变换空间中的分类向量

w

{\displaystyle {\vec {w}}}

满足

w

=

i

=

1

n

c

i

y

i

φ

(

x

i

)

,

{\displaystyle {\vec {w}}=\sum _{i=1}^{n}c_{i}y_{i}\varphi ({\vec {x}}_{i}),}

其中

c

i

{\displaystyle c_{i}}

可以通过求解优化问题

maximize

f

(

c

1

c

n

)

=

i

=

1

n

c

i

1

2

i

=

1

n

j

=

1

n

y

i

c

i

(

φ

(

x

i

)

φ

(

x

j

)

)

y

j

c

j

=

i

=

1

n

c

i

1

2

i

=

1

n

j

=

1

n

y

i

c

i

k

(

x

i

,

x

j

)

y

j

c

j

{\displaystyle {\begin{aligned}{\text{maximize}}\,\,f(c_{1}\ldots c_{n})&=\sum _{i=1}^{n}c_{i}-{\frac {1}{2}}\sum _{i=1}^{n}\sum _{j=1}^{n}y_{i}c_{i}(\varphi ({\vec {x}}_{i})\cdot \varphi ({\vec {x}}_{j}))y_{j}c_{j}\\&=\sum _{i=1}^{n}c_{i}-{\frac {1}{2}}\sum _{i=1}^{n}\sum _{j=1}^{n}y_{i}c_{i}k({\vec {x}}_{i},{\vec {x}}_{j})y_{j}c_{j}\\\end{aligned}}}

subject to

i

=

1

n

c

i

y

i

=

0

,

and

0

c

i

1

2

n

λ

for all

i

.

{\displaystyle {\text{subject to }}\sum _{i=1}^{n}c_{i}y_{i}=0,\,{\text{and }}0\leq c_{i}\leq {\frac {1}{2n\lambda }}\;{\text{for all }}i.}

得到。与前面一样,可以使用二次规划来求解系数

c

i

{\displaystyle c_{i}}

。同样,我们可以找到让

0

<

c

i

<

(

2

n

λ

)

1

{\displaystyle 0

的索引

i

{\displaystyle i}

,使得

φ

(

x

i

)

{\displaystyle \varphi ({\vec {x}}_{i})}

位于变换空间中间隔的边界上,然后求解

b

=

w

φ

(

x

i

)

y

i

=

[

k

=

1

n

c

k

y

k

φ

(

x

k

)

φ

(

x

i

)

]

y

i

=

[

k

=

1

n

c

k

y

k

k

(

x

k

,

x

i

)

]

y

i

.

{\displaystyle {\begin{aligned}b={\vec {w}}\cdot \varphi ({\vec {x}}_{i})-y_{i}&=\left[\sum _{k=1}^{n}c_{k}y_{k}\varphi ({\vec {x}}_{k})\cdot \varphi ({\vec {x}}_{i})\right]-y_{i}\\&=\left[\sum _{k=1}^{n}c_{k}y_{k}k({\vec {x}}_{k},{\vec {x}}_{i})\right]-y_{i}.\end{aligned}}}

最后,可以通过计算下式来分类新点

z

sgn

(

w

φ

(

z

)

+

b

)

=

sgn

(

[

i

=

1

n

c

i

y

i

k

(

x

i

,

z

)

]

+

b

)

.

{\displaystyle {\vec {z}}\mapsto \operatorname {sgn}({\vec {w}}\cdot \varphi ({\vec {z}})+b)=\operatorname {sgn} \left(\left[\sum _{i=1}^{n}c_{i}y_{i}k({\vec {x}}_{i},{\vec {z}})\right]+b\right).}

现代方法

编辑

用于找到SVM分类器的最近的算法包括次梯度下降和坐标下降。当处理大的稀疏数据集时,这两种技术已经被证明有着显著的优点——当存在许多训练实例时次梯度法是特别有效的,并且当特征空间的维度高时,坐标下降特别有效。

次梯度下降

编辑

SVM的次梯度下降算法直接用表达式

f

(

w

,

b

)

=

[

1

n

i

=

1

n

max

(

0

,

1

y

i

(

w

x

i

+

b

)

)

]

+

λ

w

2

.

{\displaystyle f({\vec {w}},b)=\left[{\frac {1}{n}}\sum _{i=1}^{n}\max \left(0,1-y_{i}(w\cdot x_{i}+b)\right)\right]+\lambda \lVert w\rVert ^{2}.}

注意

f

{\displaystyle f}

w

{\displaystyle {\vec {w}}}

b

{\displaystyle b}

的凸函数。因此,可以采用传统的梯度下降(或SGD(英语:Stochastic gradient descent))方法,其中不是在函数梯度的方向上前进,而是在从函数的次梯度中选出的向量的方向上前进。该方法的优点在于,对于某些实现,迭代次数不随着数据点的数量

n

{\displaystyle n}

而增加或减少。[13]

坐标下降

编辑

SVM的坐标下降算法基于对偶问题

maximize

f

(

c

1

c

n

)

=

i

=

1

n

c

i

1

2

i

=

1

n

j

=

1

n

y

i

c

i

(

x

i

x

j

)

y

j

c

j

,

{\displaystyle {\text{maximize}}\,\,f(c_{1}\ldots c_{n})=\sum _{i=1}^{n}c_{i}-{\frac {1}{2}}\sum _{i=1}^{n}\sum _{j=1}^{n}y_{i}c_{i}(x_{i}\cdot x_{j})y_{j}c_{j},}

subject to

i

=

1

n

c

i

y

i

=

0

,

and

0

c

i

1

2

n

λ

for all

i

.

{\displaystyle {\text{subject to }}\sum _{i=1}^{n}c_{i}y_{i}=0,\,{\text{and }}0\leq c_{i}\leq {\frac {1}{2n\lambda }}\;{\text{for all }}i.}

对所有

i

{

1

,

,

n

}

{\displaystyle i\in \{1,\,\ldots ,\,n\}}

进行迭代,使系数

c

i

{\displaystyle c_{i}}

的方向与

f

/

c

i

{\displaystyle \partial f/\partial c_{i}}

一致。然后,将所得的系数向量

(

c

1

,

,

c

n

)

{\displaystyle (c_{1}',\,\ldots ,\,c_{n}')}

投影到满足给定约束的最接近的系数向量。(通常使用欧氏距离。)然后重复该过程,直到获得接近最佳的系数向量。所得的算法在实践中运行非常快,尽管已经证明的性能保证很少。[14]

上一篇: 阴阳师式神协战怎么设置使用 式神协助设置方法
下一篇: 民谣吉他一共有几品

相关推荐

白鞋黑裤子配什么颜色上衣好看
[Windows 11/10] 如何设置应用程序使用独立显卡运行
《街篮》什么人物厉害 人物能力TOP榜
《探索GMod的无限可能性:从自定义地图到多人联机模式的全方位指南》
美的空调环境感温包多少k,全面的分析下
未来天玑