假设给定一个特征空间上的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\lbrace (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \rbrace T={(x1,y1),(x2,y2),...,(xN,yN)}其中, x i ∈ R n x_i \in R^n xi∈Rn, y i ∈ { + 1 , − 1 } y_i \in \lbrace +1,-1 \rbrace yi∈{+1,−1}, i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N x i x_i xi为第 i i i个特征向量,也称为实例, y i y_i yi为 x i x_i xi的类标记,当 y i = + 1 y_i=+1 yi=+1时,称 x i x_i xi为正例;当 y i = − 1 y_i=-1 yi=−1时,称 x i x_i xi为负例, ( x i , y i ) (x_i,y_i) (xi,yi)称为样本点,再假设训练数据集是线性可分的。
给定线性可分训练数据集,通过最大间隔化或等价地求解相应的凸二次优化问题学习得到分离超平面 w ∗ ⋅ x + b ∗ = 0 w^*·x+b^*=0 w∗⋅x+b∗=0以及相应的分类决策函数 f ( x ) = s i g n ( w ∗ ‘ ⋅ x + b ∗ ) f(x)=sign(w^*`·x+b^*) f(x)=sign(w∗‘⋅x+b∗)称为支撑向量机。
一个点距离分离超平面的远近可以表示分类预测的确信度。在超平面 w ‘ ⋅ x + b = 0 w`·x+b=0 w‘⋅x+b=0确定的情况下, ∣ w ⋅ x + b ∣ |w·x+b| ∣w⋅x+b∣能够相应地表示点 x x x距离超平面的远近。而 w ⋅ x + b w·x+b w⋅x+b的符号与类标记 y y y的符号是否一致能够表示分类是否正确。所以使用函数间隔 γ ^ i = y i ( w ⋅ x i + b ) \hat{\gamma}_i=y_i(w·x_i+b) γ^i=yi(w⋅xi+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 = 1 , . . . , N γ ^ i \hat{\gamma}=\min_{i=1,...,N}\hat{\gamma}_i γ^=i=1,...,Nminγ^i当超平面不变的时候 w w w与 b b b成比例缩放时,函数间隔也成比例缩放为了解决这个问题在函数间隔的基础上定义几何间隔
下面考虑如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束优化问题: max w , b γ \max_{w,b}\quad \gamma w,bmaxγ s . t . y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) ⩾ γ , i = 1 , 2 , . . . , N s.t.\quad y_i(\frac{w}{||w||}·x_i+\frac{b}{||w||})\geqslant \gamma ,\quad i=1,2,...,N s.t.yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)⩾γ,i=1,2,...,N即我们希望最大化超平面 ( w , b ) (w,b) (w,b)关于训练数据集的几何间隔,约束条件表示的是超平面 ( w , b ) (w,b) (w,b)关于每一个训练样本点的几何间隔至少是 γ \gamma γ。又因为几何间隔与函数间隔之间的关系以及** w , b w,b w,b缩放对超平面本身无影响**,因此可以最优化问题写为 min w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min_{w,b}\frac{1}{2}||w||^2 w,bmin21∣∣w∣∣2 s . t . y i ( w ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , . . . , N s.t. \quad y_i(w·x_i+b)-1 \geqslant 0,\quad i=1,2,...,N s.t.yi(w⋅xi+b)−1⩾0,i=1,2,...,N由于目标函数是一个二次函数,约束为一个仿射不等式因此这是一个凸二次规划问题。对凸二次问题进行优化最后得到最优解 w ∗ , b ∗ w^*,b^* w∗,b∗因此得到分离超平面 w ∗ x + b ∗ = 0 w^*x+b^*=0 w∗x+b∗=0与分离超平面最近的点成为支撑向量,支撑向量所在的超平面为,正样例: w ∗ x + b = 1 w^*x+b=1 w∗x+b=1,负样例: w ∗ x + b = − 1 w^*x+b=-1 w∗x+b=−1几何表示为
在实际中求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。之所以要用对偶问题而不是原始问题进行求解是因为以下两个原因:
对于每一个不等式引入拉格朗日函数 L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 N a i y i ( w ⋅ x i + b ) + ∑ i = 1 N a i L(w,b,a)=\frac{1}{2}||w||^2-\sum_{i=1}^Na_iy_i(w·x_i+b)+\sum_{i=1}^Na_i L(w,b,a)=21∣∣w∣∣2−i=1∑Naiyi(w⋅xi+b)+i=1∑Nai其中, a = ( a 1 , a 2 , . . . , a N ) T a=(a_1,a_2,...,a_N)^T a=(a1,a2,...,aN)T为拉格朗日乘子向量。原始问题的对偶问题是 max a min w , b L ( w , b , a ) \max_a\min_{w,b}L(w,b,a) amaxw,bminL(w,b,a)先极小再极大
线性可分支持向量机学习方法,对线性不可分训练数据是不适用的,因此这时上述方法中的不等式并不都能成立。线性不可分意味着某些样本点 ( x i , y i ) (x_i,y_i) (xi,yi)不能满足函数间隔大于等于1的约束条件,为了解决这个问题对每一个样本 ( x i , y i ) (x_i,y_i) (xi,yi)引入了一个松弛变量 ξ i ⩾ 0 \xi_i\geqslant0 ξi⩾0。使函数间隔加上松弛变量大于等于1。这样,约束条件为 y i ( w ⋅ x i + b ) ⩾ 1 − ξ y_i(w·x_i+b)\geqslant1-\xi yi(w⋅xi+b)⩾1−ξ目标函数变为 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其中 C ⩾ 0 C\geqslant0 C⩾0称为惩罚参数。凸二次规划形式变为 min w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i \min_{w,b,\xi}\quad \frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i w,b,ξmin21∣∣w∣∣2+Ci=1∑Nξi s . t . y i ( w ⋅ x i + b ) ⩾ 1 − ξ , i = 1 , 2 , . . . , N s.t.\quad y_i(w·x_i+b)\geqslant 1-\xi,\quad i=1,2,...,N s.t.yi(w⋅xi+b)⩾1−ξ,i=1,2,...,N ξ i ⩾ 0 , 1 , 2 , . . . , N \xi_i\geqslant0,\quad 1,2,...,N ξi⩾0,1,2,...,N线性支撑向量机(与线性可分支撑向量机的区别)的定义如下:
对于给定线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大化问题,得到的分离超平面为 w ∗ ⋅ x + b ∗ = 0 w^*·x+b^*=0 w∗⋅x+b∗=0以及相应的分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*·x+b^*) f(x)=sign(w∗⋅x+b∗)称为支持向量机。注意线性支持向量机在数学形式上与线性可分支持向量机是完全相同的,其区别是在优化过程中 b b b的取值上,在线性支持向量机中 b b b最后是一个均值。
算法如下:
步骤2中,对任一适合条件 0 < a j ∗ < C 0
采用软间隔的线性支持向量机对大体上是线性可分的只是有少量数据是线性不可分的非线性数据集起到很好的效果,但是对那些在高维空间线性可分低维空间线性不可分的数据集则表现不佳,因此引入了核技巧,通过核函数可以把数据映射到高维空间中,这些数据在高维空间中是可以进行线性可分的。核函数定义如下:
设输入 x x x是输入空间(欧式空间的子集或离散集合),又设 H H H为特征空间(希尔伯特空间),如果存在一个从 x x x到 H H H的映射 ϕ ( x ) : χ → H \phi(x):\chi \rightarrow H ϕ(x):χ→H使得对所有 x , z ∈ x x,z \in x x,z∈x,函数 K ( x , z ) K(x,z) K(x,z)满足条件 K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x)·\phi(z) K(x,z)=ϕ(x)⋅ϕ(z)则称 K ( x , z ) K(x,z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数,式中 ϕ ( x ) ⋅ ϕ ( z ) \phi(x)·\phi(z) ϕ(x)⋅ϕ(z)为 ϕ ( x ) \phi(x) ϕ(x)和 ϕ ( z ) \phi(z) ϕ(z)的内积。
核技巧的想法是,在学习过程中只定义核函数 K ( x , z ) K(x,z) K(x,z),而不显式地定义映射函数 ϕ \phi ϕ。通常,直接计算 K ( x , z ) K(x,z) K(x,z)比较容易,而通过 ϕ ( x ) \phi(x) ϕ(x)和 ϕ ( z ) \phi(z) ϕ(z)计算 K ( x , z ) K(x,z) K(x,z)并不容易。
核技巧在支持向量机中的应用:
在对偶问题的目标函数中内积 x i ⋅ x j x_i·x_j xi⋅xj可以用核函数 K ( x i , x j ) = ϕ ( x ) ⋅ ϕ ( x j ) K(x_i,x_j)=\phi(x)·\phi(x_j) K(xi,xj)=ϕ(x)⋅ϕ(xj)来替代,此时对偶问题目标函数为 W ( a ) = 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j K ( x i , x j ) − ∑ i = 1 N a i W(a)=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_jK(x_i,x_j)-\sum_{i=1}^Na_i W(a)=21i=1∑Nj=1∑NaiajyiyjK(xi,xj)−i=1∑Nai同样,分类决策函数中的内积也可以用核函数代替,而分类决策函数式成为 f ( x ) = s i g n ( ∑ i = 1 N a i ∗ y i K ( x i , x ) + b ∗ ) f(x)=sign(\sum_{i=1}^Na^*_iy_iK(x_i,x)+b^*) f(x)=sign(i=1∑Nai∗yiK(xi,x)+b∗)
已知映射函数 ϕ \phi ϕ,可以通过 ϕ ( x ) \phi(x) ϕ(x)和 ϕ ( z ) \phi(z) ϕ(z)内积求得核函数 K ( x , z ) K(x,z) K(x,z)。不用构造映射 ϕ ( x ) \phi(x) ϕ(x)能否直接判断一个给定的函数 K ( x , z ) K(x,z) K(x,z)是不是核函数?,或者说,函数 K ( x , z ) K(x,z) K(x,z)满足什么条件才能成为核函数?,本节就是在讨论这个问题。通常来说核函数就是正定核函数。
正定核的等价定义
设 χ ⊂ R n \chi \subset R^n χ⊂Rn, K ( x , z ) K(x,z) K(x,z)是定义在 χ × χ \chi \times \chi χ×χ上的对称函数,如果任意 x i ∈ χ , i = 1 , 2 , . . . , m , K ( x , z ) x_i \in \chi,\quad i=1,2,...,m, \quad K(x,z) xi∈χ,i=1,2,...,m,K(x,z)对应的Gram矩阵 K = [ K ( x i , x j ) ] m × m K=[K(x_i,x_j)]_{m \times m} K=[K(xi,xj)]m×m是半正定矩阵,则称 K ( x , z ) K(x,z) K(x,z)是正定核。
序列最小化算法(SMO)要解如下的凸二次规划的对偶问题 min a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j K ( x i , x j ) − ∑ i = 1 N a i \min_a \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_jK(x_i,x_j)-\sum_{i=1}^Na_i amin21i=1∑Nj=1∑NaiajyiyjK(xi,xj)−i=1∑Nai s . t . ∑ i = 1 N a i y i = 0 s.t. \quad \sum_{i=1}^Na_iy_i=0 s.t.i=1∑Naiyi=0 0 ⩽ a i ⩽ C , i = 1 , 2 , . . . , N 0 \leqslant a_i \leqslant C,\quad i=1,2,...,N 0⩽ai⩽C,i=1,2,...,NSMO算法是一种启发式算法,简单说就是选择两个变量固定其他变量,求关于这两个变量的最优解,这两个变量的解应该更接近原始二次规划的解,因为这使得原始二次规划问题目标函数变得更小。重要的是这时子问题可以通过解析的方法求解,这样就可以大大提高算法的计算速度。子问题有两个变量一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。
假设选择的两个变量是 a 1 , a 2 a_1,a_2 a1,a2,其他变量 a i ( i = 3 , 4 , . . . , N ) a_i(i=3,4,...,N) ai(i=3,4,...,N)。于是SMO最优化的子问题写成 min a 1 , a 2 W ( a 1 , a 2 ) = 1 2 K 11 a 1 2 + 1 2 K 22 a 2 2 + y 1 y 2 K 12 a 1 a 2 − ( a 1 + a 2 ) + y 1 a 1 ∑ i = 3 N y i a i K i 1 + y 2 a 2 ∑ i = 3 N y i a i K i 2 \min_{a_1,a_2}\quad W(a_1,a_2)=\frac{1}{2}K_{11}a_1^2+\frac{1}{2}K_{22}a_2^2+y_1y_2K_{12}a_1a_2-(a_1+a_2)+y_1a_1\sum_{i=3}^Ny_ia_iK_{i1}+y_2a_2\sum_{i=3}^Ny_ia_iK_{i2} a1,a2minW(a1,a2)=21K11a12+21K22a22+y1y2K12a1a2−(a1+a2)+y1a1i=3∑NyiaiKi1+y2a2i=3∑NyiaiKi2 s . t . a 1 y 1 + a 2 y 2 = − ∑ i = 3 N y i a i = ζ s.t. \quad a_1y_1+a_2y_2=-\sum_{i=3}^Ny_ia_i=\zeta s.t.a1y1+a2y2=−i=3∑Nyiai=ζ 0 ⩽ a i ⩽ C , i = 1 , 2 0 \leqslant a_i \leqslant C,\quad i=1,2 0⩽ai⩽C,i=1,2其中 K i j = K ( x i , x j ) , i , j = 1 , 2 , . . . , N K_{ij}=K(x_i,x_j),i,j=1,2,...,N Kij=K(xi,xj),i,j=1,2,...,N, ζ \zeta ζ是常数,目标函数式中省略了不含 a 1 , a 2 a_1,a_2 a1,a2的常数项。最优化之后可以得到如下结果:
在不考虑不等式约束的情况下得到最优化解 a 2 n e w , u n c = a 2 o l d + y 2 ( E 1 − E 2 ) η a_2^{new,unc}=a_2^{old}+\frac{y_2(E_1-E_2)}{\eta} a2new,unc=a2old+ηy2(E1−E2)其中 a 2 n e w , u n c a_2^{new,unc} a2new,unc是未经剪切的初值, a 2 o l d a_2^{old} a2old是满足约束的初始值。 η = K 1 1 + K 2 2 − 2 K 1 2 = ∣ ∣ ϕ ( x 1 ) − ϕ ( x 2 ) ∣ ∣ 2 \eta=K_11+K_22-2K_12=||\phi(x_1)-\phi(x_2)||^2 η=K11+K22−2K12=∣∣ϕ(x1)−ϕ(x2)∣∣2 ϕ ( x ) \phi(x) ϕ(x)是输入空间到特征空间的映射, E i = g ( x i ) − y i = ( ∑ j = 1 N a j y j K ( x j , x i ) + b ) − y i E_i=g(x_i)-y_i=(\sum_{j=1}^Na_jy_jK(x_j,x_i)+b)-y_i Ei=g(xi)−yi=(j=1∑NajyjK(xj,xi)+b)−yi表示预测值与真实值之差, E i , i = 1 , 2 E_i,\quad i=1,2 Ei,i=1,2
经过剪辑后 a 2 n e w = { H , a 2 n e w . u n c > H a 2 n e w , u n c , L ⩽ a 2 n e w . u n c ⩽ H L , a 2 n e w , u n c < L a_2^{new} =\begin{cases}H, & \text{$a_2^{new.unc}>H$} \\a_2^{new,unc}, & \text{$L \leqslant a_2^{new.unc} \leqslant H$} \\L, & \text{$a_2^{new,unc}
如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。具体算法如下