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

本文深入探讨了两种异常检测方法:One-Class SVM (OCSVM) 和 Support Vector Data Description (SVDD),详细解析了它们的数学原理、优化目标及求解过程。OCSVM通过构建超平面划分正常与异常数据,而SVDD则定义了一个超球体边界来包围正常数据。两者均利用核技巧和二次规划求解器进行优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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⋅Φ(xi))≥ρ \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ρ 的正负和 www 向量中的元素正负同时调整就不会影响超平面,那么假如 ρ>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∥2min⁡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

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

min⁡w∈F,ρ∈R−ρ+12∥w∥2 subject to (w⋅Φ(xi))≥ρ \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=0w * x - b = 0wxb=0 为例,当 w 确定时,∣b∣|b|b 越大,直线离原点越远:

在这里插入图片描述

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

min⁡w∈F,ξ∈Rℓ,ρ∈R12∥w∥2+1νℓ∑iξi−ρ subject to (w⋅Φ(xi))≥ρ−ξ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) 用于调节松弛程度,根据该目标函数进行优化求解得到 wwwρ\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,ξ,ρ,α,β)=12∥w∥2+1vℓ∑iξi−ρ−∑iαi((w⋅Φ(xi))−ρ+ξ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 } , \rhow,ξ,ρ 求偏导,可以写出部分 KKT条件:

w=∑iαiΦ(xi)αi=1vℓ−βi≤1vℓ,∑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

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

f(x)=sgn⁡(∑iαik(xi,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⁡α12∑ijαiαjk(xi,xj) 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,\rhow,ρ,那么问题来了,数据跨越了零点怎么办? 做法很简单,使用映射函数将数据映射到一个空间,在该空间上数据不横跨原点,比如使用高斯核(Φ(x)=exp⁡(−x2)⋅(1,21!x,222!x2,…)\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!2x,2!22x2,))或二阶多项式核(Φ2(x)=(1,x1,x2,…,xd,x12,x1x2,…,x1xd,x2x1,x22,…,x2xd,…,xd2)\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 定义了一个模型,该模型给出了一个包围全部数据的封闭边界:超球体。球体的特征是中心 aaa 和半径 R>0R>0R>0。我们通过最小化 R2R^2R2 来最小化球体的体积,并要求球体包含所有训练样本 xix_ixi。这与Schólkopf、Burges和Vapnik(1995)中用于估计分类器的VC维数的方法(由包围数据的最小球体的直径限定)相同。并且文章中证明了该方法与 OCSVM 求解的超平面相似。其最优化目标如下:

min⁡R,aR2+C∑iξis.t.∥xi−a∥2≤R2+ξ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

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

L(R,a,αi,γi,ξi)=R2+C∑iξi−∑iαi{R2+ξi−(∥xi∥2−2a⋅xi+∥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αixi∑iαi=∑iαixi∂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(xi⋅xi)−∑i,jαiαj(xi⋅xj) 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(xi⋅xi)−∑i,jαiαj(xi⋅xj) 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,\xiR,a,ξ 即可。

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FlameAlpha

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

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

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

打赏作者

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

抵扣说明:

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

余额充值