单类支持向量机(One-Class SVM)

假如现在有 ℓ \ell 个同一分布的观察数据,每条数据都有 p p p 个特征。如果现在加入一个或多个观察数据,那么是否这些数据与原有的数据十分不同,甚至我们可以怀疑其是否属于同一分布呢?反过来讲,是否这些数据与原有的数据十分相似,我们无法将其区分呢?这便是异常检测工具和方法需要解决的问题。即现在只有正常的数据,那么当异常数据加入时,我们是否可以将其分辨出来呢?

通常情况下,要学习训练出一个在 p p p 维空间上的粗糙封闭的边界线,来分割出初始观测分布的轮廓线。然后,如果观测数据位于边界限定的子空间内,则认为它们来自与初始观测相同的总体。否则,如果他们在边界之外,我们可以在一定程度上说他们是异常的。

OCSVM

一种实现方法是 One-Class SVM (OCSVM),首次是在论文《Support Vector Method for Novelty Detection》中由 Bernhard Schölkopf 等人在 2000 年提出, 其与 SVM 的原理类似,更像是将零点作为负样本点,其他数据作为正样本点,来训练支持向量机。策略是将数据映射到与内核相对应的特征空间,在数据与原点间构建超平面,该超平面与原点呈最大距离。

现在假设该超平面为:

w ⋅ Φ ( x ) − ρ = 0 w \cdot \Phi ( \mathbf { x } ) - \rho = 0 wΦ(x)ρ=0

目标就是在分类正确的基础上最大化超平面与原点的距离:

max ⁡ w ∈ F , ρ ∈ R ∣ ρ ∣ / ∥ w ∥ 2  subject to  ( w ⋅ Φ ( x i ) ) ≥ ρ \begin{array} { c c } \mathop{ \max} \limits_ { w \in F , \rho \in \mathbb { R } } & { |\rho| } / { \| w \| ^ { 2 }} \\ \text { subject to } & \left( w \cdot \Phi \left( \mathbf { x } _ { i } \right) \right) \geq \rho \end{array} wF,ρRmax subject to ρ/w2(wΦ(xi))ρ

同时根据超平面的定义,实际上 ρ \rho ρ 的正负和 w w w 向量中的元素正负同时调整就不会影响超平面,那么假如 ρ > 0 \rho > 0 ρ>0 ,那么优化问题可以重写为:

max ⁡ w ∈ F , ρ ∈ R ρ / ∥ w ∥ 2 \mathop{ \max} \limits_ { w \in F , \rho \in \mathbb { R } } { \rho} / { \| w \| ^ { 2 }} wF,ρRmaxρ/w2

为了防止参数求解的耦合问题,可以将其拆解为

max ⁡ w ∈ F , ρ ∈ R ρ + 1 / ∥ w ∥ 2 min ⁡ w ∈ F , ρ ∈ R − ρ + ∥ w ∥ 2 \begin{aligned} \mathop{ \max} \limits_ { w \in F , \rho \in \mathbb { R } } { \rho} + 1/{ \| w \| ^ { 2 }} \\ \mathop{ \min} \limits_ { w \in F , \rho \in \mathbb { R } } - { \rho} + { \| w \| ^ { 2 }} \end{aligned} wF,ρRmaxρ+1/w2wF,ρRminρ+w2

这样的话在求解问题时,由于 w w w 向量中元素的整体正负不会影响 ∥ w ∥ 2 { \| w \| ^ { 2 }} w2 的取值,那么其会保证 ρ \rho ρ 的最终取值为正值,也就是满足假设。同时为了方便梯度求解,将 ∥ w ∥ 2 { \| w \| ^ { 2 }} w2 添加一个 1 2 \frac{1}{2} 21 那么最终的优化目标可以写为:

min ⁡ w ∈ F , ρ ∈ R − ρ + 1 2 ∥ w ∥ 2  subject to  ( w ⋅ Φ ( x i ) ) ≥ ρ \begin{array} { c c } \mathop{ \min} \limits_ { w \in F , \rho \in \mathbb { R } } & - { \rho} + \frac{1}{2}{ \| w \| ^ { 2 }} \\ \text { subject to } & \left( w \cdot \Phi \left( \mathbf { x } _ { i } \right) \right) \geq \rho \end{array} wF,ρRmin subject to ρ+21w2(wΦ(xi))ρ

从另一方面想,实际上对于一个斜率一定的直线,当其偏移量的绝对值越大时,其离零点越来越近,下面以 w ∗ x − b = 0 w * x - b = 0 wxb=0 为例,当 w 确定时, ∣ b ∣ |b| b 越大,直线离原点越远:

在这里插入图片描述

加入松弛变量 ξ \xi ξ 后,其优化的目标函数可以写为:

min ⁡ w ∈ F , ξ ∈ R ℓ , ρ ∈ R 1 2 ∥ w ∥ 2 + 1 ν ℓ ∑ i ξ i − ρ  subject to  ( w ⋅ Φ ( x i ) ) ≥ ρ − ξ i , ξ i ≥ 0 \begin{array} { c c } \mathop{ \min} \limits_ { w \in F , \boldsymbol { \xi } \in \mathbb { R } ^ { \ell } , \rho \in \mathbb { R } } & \frac { 1 } { 2 } \| w \| ^ { 2 } + \frac { 1 } { \nu \ell } \sum _ { i } \xi _ { i } - \rho \\ \text { subject to } & \left( w \cdot \Phi \left( \mathbf { x } _ { i } \right) \right) \geq \rho - \xi _ { i } , \quad \xi _ { i } \geq 0 \end{array} wF,ξR,ρRmin subject to 21w2+ν1iξiρ(wΦ(xi))ρξi,ξi0

其中 v ∈ ( 0 , 1 ) v \in (0,1) v(0,1) 用于调节松弛程度,根据该目标函数进行优化求解得到 w w w ρ \rho ρ 后,对多部分样本来说,其决策函数 f ( x ) = sgn ⁡ ( ( w ⋅ Φ ( x ) ) − ρ ) f ( \mathbf { x } ) = \operatorname { sgn } ( ( w \cdot \Phi ( \mathbf { x } ) ) - \rho ) f(x)=sgn((wΦ(x))ρ) 输出为正。

为了求解对偶问题使用核技巧,这里使用 Lagrange 乘数 α i , β i \alpha_i,\beta_i αi,βi,可以写出拉格朗日方程:

L ( w , ξ , ρ , α , β ) = 1 2 ∥ w ∥ 2 + 1 v ℓ ∑ i ξ i − ρ − ∑ i α i ( ( w ⋅ Φ ( x i ) ) − ρ + ξ i ) − ∑ i β i ξ i \begin{aligned} L ( w , \boldsymbol { \xi } , \rho , \boldsymbol { \alpha } , \boldsymbol { \beta } ) = & \frac { 1 } { 2 } \| w \| ^ { 2 } + \frac { 1 } { v \ell } \sum _ { i } \xi _ { i } - \rho \\ & - \sum _ { i } \alpha _ { i } \left( \left( w \cdot \Phi \left( \mathbf { x } _ { i } \right) \right) - \rho + \xi _ { i } \right) - \sum _ { i } \boldsymbol { \beta } _ { i } \xi _ { i } \end{aligned} L(w,ξ,ρ,α,β)=21w2+v1iξiρiαi((wΦ(xi))ρ+ξi)iβiξi

那么根据对参数 w , ξ , ρ w , { \xi } , \rho w,ξ,ρ 求偏导,可以写出部分 KKT条件:

w = ∑ i α i Φ ( x i ) α i = 1 v ℓ − β i ≤ 1 v ℓ , ∑ i α i = 1 \begin{aligned} w & = \sum _ { i } \alpha _ { i } \Phi \left( \mathbf { x } _ { i } \right) \\ \alpha _ { i } & = \frac { 1 } { v \ell } - \boldsymbol { \beta } _ { i } \leq \frac { 1 } { v \ell } , \quad \sum _ { i } \alpha _ { i } = 1 \end{aligned} wαi=iαiΦ(xi)=v1βiv1,iαi=1

那么通过导出对偶问题和使用核技巧,便可以实现通过支持向量 { x i : i ∈ [ ℓ ] , α i > 0 } \left\{ \mathbf { x } _ { i } : i \in [ \ell ] , \alpha _ { i } > 0 \right\} {xi:i[],αi>0} 求得决策函数:

f ( x ) = sgn ⁡ ( ∑ i α i k ( x i , x ) − ρ ) f ( \mathbf { x } ) = \operatorname { sgn } \left( \sum _ { i } \alpha _ { i } k \left( \mathbf { x } _ { i } , \mathbf { x } \right) - \rho \right) f(x)=sgn(iαik(xi,x)ρ)

现在也可以写出对偶问题了:

min ⁡ α 1 2 ∑ i j α i α j k ( x i , x j )  subject to  0 ≤ α i ≤ 1 ν ℓ , ∑ i α i = 1 \min _ { \boldsymbol { \alpha } } \frac { 1 } { 2 } \sum _ { i j } \alpha _ { i } \alpha _ { j } k \left( \mathbf { x } _ { i } , \mathbf { x } _ { j } \right) \text { subject to } 0 \leq \alpha _ { i } \leq \frac { 1 } { \nu \ell } , \sum _ { i } \alpha _ { i } = 1 αmin21ijαiαjk(xi,xj) subject to 0αiν1,iαi=1

之后使用二次规划求解器求解 α \alpha α 即可,然后再根据 KKT 条件求出 w , ρ w,\rho w,ρ,那么问题来了,数据跨越了零点怎么办? 做法很简单,使用映射函数将数据映射到一个空间,在该空间上数据不横跨原点,比如使用高斯核( Φ ( x ) = exp ⁡ ( − x 2 ) ⋅ ( 1 , 2 1 ! x , 2 2 2 ! x 2 , … ) \Phi(x)=\exp \left(-x^{2}\right) \cdot\left(1, \sqrt{\frac{2}{1 !}} x, \sqrt{\frac{2^{2}}{2 !}} x^{2}, \ldots\right) Φ(x)=exp(x2)(1,1!2 x,2!22 x2,))或二阶多项式核( Φ 2 ( x ) = ( 1 , x 1 , x 2 , … , x d , x 1 2 , x 1 x 2 , … , x 1 x d , x 2 x 1 , x 2 2 , … , x 2 x d , … , x d 2 ) \Phi_{2}(\mathbf{x})=\left(1, x_{1}, x_{2}, \ldots, x_{d}, x_{1}^{2}, x_{1} x_{2}, \ldots, x_{1} x_{d}, x_{2} x_{1}, x_{2}^{2}, \ldots, x_{2} x_{d}, \ldots, x_{d}^{2}\right) Φ2(x)=(1,x1,x2,,xd,x12,x1x2,,x1xd,x2x1,x22,,x2xd,,xd2)),可以看出其中有很多的恒非负数项,也就是在一个轴的一边,不会横跨原点。但是这都是博主的猜测,如果有读者看到论文的讲解部分可以留言纠正(英语水平有限🤷‍♂️)。

SVDD

另一种方法则是 SVDD,是在其同名论文《Support Vector Data Description》中由 DAVID M.J. TAX 等人提出。相比于 OCSVM,SVDD 定义了一个模型,该模型给出了一个包围全部数据的封闭边界:超球体。球体的特征是中心 a a a 和半径 R > 0 R>0 R>0。我们通过最小化 R 2 R^2 R2 来最小化球体的体积,并要求球体包含所有训练样本 x i x_i xi。这与Schólkopf、Burges和Vapnik(1995)中用于估计分类器的VC维数的方法(由包围数据的最小球体的直径限定)相同。并且文章中证明了该方法与 OCSVM 求解的超平面相似。其最优化目标如下:

min ⁡ R , a R 2 + C ∑ i ξ i s . t . ∥ x i − a ∥ 2 ≤ R 2 + ξ i , ξ i ≥ 0 ∀ i \begin{aligned} \mathop{\min} \limits_ { R , a } & R ^ { 2 } + C \sum _ { i } \xi _ { i } \\ s . t . & \left\| \mathbf { x } _ { i } - \mathbf { a } \right\| ^ { 2 } \leq R ^ { 2 } + \xi _ { i } , \quad \xi _ { i } \geq 0 \quad \forall i \end{aligned} R,amins.t.R2+Ciξixia2R2+ξi,ξi0i

其中 C C C 用于控制误差的容忍度。同时为了求解对偶问题使用核技巧,这里使用 Lagrange 乘数 α i > 0 , γ i > 0 \alpha_i > 0,\gamma_i > 0 αi>0,γi>0,可以写出拉格朗日方程:

L ( R , a , α i , γ i , ξ i ) = R 2 + C ∑ i ξ i − ∑ i α i { R 2 + ξ i − ( ∥ x i ∥ 2 − 2 a ⋅ x i + ∥ a ∥ 2 ) } − ∑ γ i ξ i \begin{aligned} L \left( R , \mathbf { a } , \alpha _ { i } , \gamma _ { i } , \xi _ { i } \right) = & R ^ { 2 } + C \sum _ { i } \xi _ { i } \\ & - \sum_i \alpha _ { i } \left\{ R ^ { 2 } + \xi _ { i } - \left( \left\| \mathbf { x } _ { i } \right\| ^ { 2 } - 2 \mathbf { a } \cdot \mathbf { x } _ { i } + \| \mathbf { a } \| ^ { 2 } \right) \right\} - \sum \gamma _ { i } \xi _ { i } \end{aligned} L(R,a,αi,γi,ξi)=R2+Ciξiiαi{R2+ξi(xi22axi+a2)}γiξi

求偏导为零,可以得出:

∂ L ∂ R = 0 : ∑ i α i = 1 ∂ L ∂ a = 0 : a = ∑ i α i x i ∑ i α i = ∑ i α i x i ∂ L ∂ ξ i = 0 : C − α i − γ i = 0 \begin{aligned} \frac { \partial L } { \partial R } = 0 : & \qquad \sum _ { i } \alpha _ { i } = 1 \\ \frac { \partial L } { \partial \mathbf { a } } = 0 : & \qquad \mathbf { a } = \frac { \sum _ { i } \alpha _ { i } \mathbf { x } _ { i } } { \sum _ { i } \alpha _ { i } } = \sum _ { i } \alpha _ { i } \mathbf { x } _ { i } \\ \frac { \partial L } { \partial \xi _ { i } } = 0 : & \qquad C - \alpha _ { i } - \gamma _ { i } = 0 \end{aligned} RL=0:aL=0:ξiL=0:iαi=1a=iαiiαixi=iαixiCαiγi=0

通过上述第三个式子可以得出:

0 ≤ α i ≤ C 0 \leq \alpha _ { i } \leq C 0αiC

拉格朗日方程可以重写为:

L = ∑ i α i ( x i ⋅ x i ) − ∑ i , j α i α j ( x i ⋅ x j ) L = \sum _ { i } \alpha _ { i } \left( \mathbf { x } _ { i } \cdot \mathbf { x } _ { i } \right) - \sum _ { i , j } \alpha _ { i } \alpha _ { j } \left( \mathbf { x } _ { i } \cdot \mathbf { x } _ { j } \right) L=iαi(xixi)i,jαiαj(xixj)

那么该优化目标可以重写为:

max ⁡ α ∑ i α i ( x i ⋅ x i ) − ∑ i , j α i α j ( x i ⋅ x j )  subject to  0 ≤ α i ≤ C \max _ { \boldsymbol { \alpha } } \sum _ { i } \alpha _ { i } \left( \mathbf { x } _ { i } \cdot \mathbf { x } _ { i } \right) - \sum _ { i , j } \alpha _ { i } \alpha _ { j } \left( \mathbf { x } _ { i } \cdot \mathbf { x } _ { j } \right) \text { subject to } 0 \leq \alpha _ { i } \leq C αmaxiαi(xixi)i,jαiαj(xixj) subject to 0αiC

之后使用二次规划求解器求解 α \alpha α 即可,然后再根据 KKT 条件求出 R , a , ξ R,a,\xi R,a,ξ 即可。

参考论文有:《Support Vector Data Description》,《Support Vector Method for Novelty Detection》,《Estimating the Support of a High-Dimensional Distribution》

  • 18
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FlameAlpha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值