常见的分类问题分为二分类和多分类,而多分类可以拆解为多个二分类问题。在二分类问题中,分类器对一个的样本的判断为非正即负,分类结果一定是二者之一。

理想情况下,二分类中的每类样本数据要求巨大且相等。但是在现实世界却往往是相反的,在二分类问题中,正负类样本可能是严重失衡,这种情况也有解决的办法,那就是不平衡性学习。而考虑到极端情况,某一类样本少到几乎没有,但是又及其重要时应该如何分类?这就出现了 one class classification。仅有一类样本用于训练,而其他类别总称为(outlier)信息缺失。

例子:
在这里插入图片描述
有一个数据集包含苹果和梨子的样本,每个样本有2个特征:宽度和重量,数据集中的每个样本都可以表示为2维空间的一个点,红色*表示苹果,蓝色的+表示梨,虚线内的样本表示整个训练集。

对于二分类问题来说,图中的黑线正好可以将数据集中的样本分成苹果或者梨,即使新来一个样本,分类的结果也只能苹果或者梨子;

对于one class classification 来说,整个训练集为一类,把苹果+梨作为一个类别,而虚线则是这个类的范围,如果在虚线内则认为是属于苹果+梨类,反之,如图中黑点,则是不属于苹果+梨类,至于到底是属于什么类不清楚,分类器只知道是或者不是属于该类。

当训练集不是二维的时候,图中的虚线也转变成了一个封闭的超球面,把整个训练集包裹,在球面内的则是属于该类,外面则是其他类。
在这里插入图片描述
有一个找这个超球面的算法叫做:
支持向量数据描述 support vector data description(SVDD) 是一种单值分类算法,能够实现目标样本和非目标样本的区分,通常应用于异常检测和故障检测等领域。

其原理如下:
对于一组正类训练数据 x ∈ R n × d \mathbf{x}\in R^{n\times d} xRn×d ,其中 n n n 是样本个数, d d d 是特征维度。首先通过非线性变换函数 Φ : x → F \Phi:\mathbf{x}\rightarrow\mathbf{F} Φ:xF 将数据从原始空间映射到特征空间,然后在特征空间中寻找一个体积最小的超球体,为了构造这样最小的超球体,SVDD需要解决以下优化问题:
min ⁡ ε ( a , R , ξ ) = R 2 + C ∑ i = 1 n ξ i s . t . { ∥ x i − a ∥ 2 ≤ R 2 + ξ i ξ i ≥ 0 ∀ i = 1 , 2 , … , n \min\varepsilon(\mathbf{a},R,\xi)=R^2+C\sum_{i=1}^{n}\xi_i \\ s.t. \begin{cases} \|\mathbf{x}_i-\mathbf{a}\|^2\leq R^2+\xi_i\\ \xi_i\geq0\\ \forall i=1,2,\dots,n \end{cases} \\ minε(a,R,ξ)=R2+Ci=1nξis.t. xia2R2+ξiξi0i=1,2,,n
其中, R R R 是为超球体半径, a \mathbf{a} a 为球心, ξ \xi ξ 为松弛因子, C C C 为权衡超球体和误分率的惩罚参数。

该优化问题求解:
1、首先根据拉格朗日乘子法构造拉格朗日函数:
L ( R , a , ξ , α , γ ) = R 2 + C ∑ i = 1 n ξ i − ∑ i = 1 n α i { R 2 + ξ i − ( x i ⋅ x i − 2 a ⋅ x i + a ⋅ a ) } − ∑ i = 1 n γ i ξ i L(R,\mathbf{a},\xi,\alpha,\gamma)=R^2+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\alpha_i\{R^2+\xi_i-(\mathbf{x}_i\cdot\mathbf{x}_i-2\mathbf{a}\cdot\mathbf{x}_i+\mathbf{a}\cdot\mathbf{a})\}-\sum_{i=1}^n\gamma_i\xi_i L(R,a,ξ,α,γ)=R2+Ci=1nξii=1nαi{R2+ξi(xixi2axi+aa)}i=1nγiξi
对于 R 、 a R、\mathbf{a} Ra来说 L L L必须最小化,而对于 α 、 γ \alpha、\gamma αγ来说, L L L 必须最大化。

分别对每个变量求偏导为0:
∂ L ∂ R = 2 R − 2 R ∑ i = 1 n α i = 0 , 即: ∑ i = 1 n α i = 1 \frac{\partial L}{\partial R}=2R-2R\sum_{i=1}^n\alpha_i=0,即:\sum_{i=1}^n\alpha_i=1 RL=2R2Ri=1nαi=0,即:i=1nαi=1
∂ L ∂ a = 2 ∑ i = 1 n α i x i − 2 a = 0 ,即 a = ∑ i = 1 n α i x i \frac{\partial L}{\partial \mathbf{a}}=2\sum_{i=1}^n\alpha_i\mathbf{x}_i-2\mathbf{a}=0,即 \mathbf{a}=\sum_{i=1}^n\alpha_i\mathbf{x}_i aL=2i=1nαixi2a=0,即a=i=1nαixi
∂ L ∂ ξ = C − α i − γ i = 0 ,即 0 ≤ α i ≤ C \frac{\partial L}{\partial \xi}=C-\alpha_i-\gamma_i=0,即 0 \leq\alpha_i\leq C ξL=Cαiγi=0,即0αiC
把结果带入到 L L L 中得到:
L = x i ⋅ x i − 2 ∑ i = 1 n α i ( x j ⋅ x i ) − ∑ i = 1 , j = 1 n α i α j ( x i , x j ) s . t . 0 ≤ α i ≤ C , ∑ i = 1 n α i = 1 L=\mathbf{x}_i\cdot\mathbf{x}_i-2\sum_{i=1}^n\alpha_i(\mathbf{x}_j\cdot\mathbf{x}_i)-\sum_{i=1,j=1}^n\alpha_i\alpha_j(\mathbf{x}_i,\mathbf{x}_j)\\ s.t.0 \leq\alpha_i\leq C,\sum_{i=1}^n\alpha_i=1 L=xixi2i=1nαi(xjxi)i=1,j=1nαiαj(xi,xj)s.t.0αiC,i=1nαi=1

对于在球内的对象 z \mathbf{z} z 到球心的距离有:
∥ z − a ∥ 2 = ( z ⋅ z ) − 2 ∑ i α i ( z ⋅ x i ) + ∑ i , j α i α j ( x i ⋅ z ) ≤ R 2 \|\mathbf{z}-\mathbf{a}\|^2=(\mathbf{z}\cdot\mathbf{z})-2\sum_{i}\alpha_i(\mathbf{z}\cdot\mathbf{x}_i)+\sum_{i,j}\alpha_i\alpha_j(\mathbf{x}_i\cdot\mathbf{z})\leq R^2 za2=(zz)2iαi(zxi)+i,jαiαj(xiz)R2
z \mathbf{z} z 为超球面边界上的点时:
R 2 = ( x k ⋅ x k ) − 2 ∑ i α i ( x k ⋅ x i ) + ∑ i , j α i α j ( x i ⋅ x k ) R^2=(\mathbf{x}_k\cdot\mathbf{x}_k)-2\sum_{i}\alpha_i(\mathbf{x}_k\cdot\mathbf{x}_i)+\sum_{i,j}\alpha_i\alpha_j(\mathbf{x}_i\cdot\mathbf{x}_k) R2=(xkxk)2iαi(xkxi)+i,jαiαj(xixk)

因此,对于满足 x k ∈ S V b n d \mathbf{x}_k \in SV^{bnd} xkSVbnd,即处于超平面内,即 0 ≤ x k ≤ C 0\leq\mathbf{x}_k\leq C 0xkC的支持向量集,我们称这种单分类器为支持向量数据描述(SVDD),记为:
f S V D D ( z ; α , R ) = I ( ∥ z − a ∥ 2 ≤ R 2 ) = I ( ( z ⋅ z − 2 ∑ i α i ( z ⋅ x i ) + ∑ i , j α i α j ( x i ⋅ x j ) ≤ R 2 ) \begin{aligned} f_{SVDD(\mathbf{z};\alpha,R)}&=I(\|\mathbf{z}-\mathbf{a}\|^2\leq R^2)\\ &=I\big((\mathbf{z}\cdot\mathbf{z}-2\sum_i\alpha_i(\mathbf{z}\cdot\mathbf{x}_i)+\sum_{i,j}\alpha_i\alpha_j(\mathbf{x}_i\cdot\mathbf{x}_j)\leq R^2\big) \end{aligned} fSVDD(z;α,R)=I(za2R2)=I((zz2iαi(zxi)+i,jαiαj(xixj)R2)

可以得到超球体的球心和半径的计算公式为:
a = ∑ i = 1 n α i ( x i ) \mathbf{a}=\sum_{i=1}^n\alpha_i(\mathbf{x}_i) a=i=1nαi(xi)
R = ( z ⋅ x i ) − 2 ∑ i = 1 n α i ( z ⋅ x i ) + ∑ i , j = 1 n α i α j ( x i x j ) R=\sqrt{(\mathbf{z}\cdot\mathbf{x}_i)-2\sum_{i=1}^n\alpha_i(\mathbf{z}\cdot\mathbf{x}_i)+\sum_{i,j=1}^n\alpha_i\alpha_j(\mathbf{x}_i\mathbf{x}_j)} R=(zxi)2i=1nαi(zxi)+i,j=1nαiαj(xixj)


参考文献:http://homepage.tudelft.nl/n9d04/thesis.pdf

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐