只考虑线性可分的情况,分割超平面
一边的数据点所对应的y全是-1 ,另一边所对应的y全是1:
这个超平面可以用分类函数 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b表示,当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点,如下图所示(虚线间隔边界上的点就是支持向量
):
在超平面f(x)确定的情况下,|w*x+b|能够表示点x到距离超平面的远近,而通过观察w*x+b的符号与类标记y的符号是否一致可判断分类是否正确
,所以,可以用(y*(w*x+b))的正负性来
判定或表示分类的正确性。于此,我们便引出了函数间隔的概念。
函数间隔(functional margin)
: γ ^ = y f ( x ) = y ( w T x + b ) \hat \gamma=yf(x)=y(w^Tx+b) γ^=yf(x)=y(wTx+b)
但这样定义的函数间隔有问题,即如果成比例的改变w和b(如将它们改成2w和2b),则函数间隔的值f(x)却变成了原来的2倍(虽然此时超平面没有改变),所以只有函数间隔还远远不够。由此引出了几何间隔的概念。
几何间隔(geometrical margin)
: γ ^ = y f ( x ) ∣ ∣ w ∣ ∣ = y w T x + b ∣ ∣ w ∣ ∣ \hat \gamma=y\frac{f(x)}{||w||}=y\frac{w^Tx+b}{||w||} γ^=y∣∣w∣∣f(x)=y∣∣w∣∣wTx+b
几何间隔就是函数间隔除以||w||,而且函数间隔y*(wx+b) = y*f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。
在这里,数据集所有样本点(xi,yi)到超平面的几何间隔最小值则是超平面关于训练数据集的几何间隔
: γ ^ = m i n γ i , ( i = 1 , 2 , . . . n ) \hat \gamma=min \ \gamma_i, (i=1,2,...n) γ^=min γi,(i=1,2,...n),我们要做的就是找到两个超平面,使得这两个超平面之间的距离最大。
假设目前还未引入“Kernel”,只考虑线性可分的情况。存在两个支持平面
γ 1 \gamma_1 γ1和 γ 2 \gamma_2 γ2:
{ γ 1 : w T x + b = 1 γ 2 : w T x + b = − 1 \begin{cases} \gamma_1 : w^Tx+b=1\\ \gamma_2 : w^Tx+b=-1 \end{cases} {γ1:wTx+b=1γ2:wTx+b=−1
那么就是要求解支持平面的最大距离
为:
m a x ( d = 2 ∣ ∣ w ∣ ∣ ) max(d=\frac{2}{||w||}) max(d=∣∣w∣∣2),并且受限于: { γ 1 : w T x ( i ) + b ≥ 1 , i f y ( i ) = 1 γ 2 : w T x ( i ) + b ≤ − 1 , i f y ( i ) = − 1 \begin{cases}\gamma_1 : w^Tx^{(i)}+b \geq 1, & if \ y^{(i)}=1\\ \gamma_2 : w^Tx^{(i)}+b \leq -1, & if \ y^{(i)}=-1\end{cases} {γ1:wTx(i)+b≥1,γ2:wTx(i)+b≤−1,if y(i)=1if y(i)=−1
注意这里的1和-1其实是为了化简而这样和分类类别对应取值的,不影响最终的结果。
非凸函数,我们无法获得全局最优解的,只能获得局部最优解。
于是上面的求解问题转化为:
m i n w , b ( ∣ ∣ w ∣ ∣ 2 2 ) \mathop{min}\limits_{w,b} (\frac{||w||^2}{2}) w,bmin(2∣∣w∣∣2),并且受限于 y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , 2 , . . . n y^{(i)}(w^Tx^{(i)}+b) \geq 1,i=1,2,...n y(i)(wTx(i)+b)≥1,i=1,2,...n
求Step 2中的凸优化问题时,可以利用拉格朗日(Lagrange)乘子法将有约束优化问题转换为无约束优化问题
。转换为如下式子(必须满足KKT条件
):
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) , α i > 0 ( 3.1 ) L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^n \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)), \ \alpha_i>0 \ (3.1) L(w,b,α)=21∣∣w∣∣2+i=1∑nαi(1−y(i)(wTx(i)+b)), αi>0 (3.1)
说一下KKT条件:
设目标函数f(x),不等式约束为g(x),有的教程还会添加上等式约束条件h(x)。此时的约束优化问题描述如下:
则我们定义不等式约束下的拉格朗日函数L,则L表达式为:
求解上面的问题,我们同样可以使用等式约束条件的求解思路,对所有的参数进行求导,但是对于求解出的最优解,必须满足KKT条件(Karush-Kuhn-Tucker ):
(1) L(x, λ \lambda λ, v v v)对x求导为零;
(2)h(x) =0;
(3) λ \lambda λ*f(x) = 0;
求取这些等式之后就能得到候选最优值。其中第三个式子非常有趣,因为f(x)<=0,如果要满足这个等式,必须 λ = 0 \lambda=0 λ=0或者f(x)=0。KKT介绍完毕。
继续说我们之前要求的是 m i n w , b ( 1 2 ∣ ∣ w ∣ ∣ 2 ) \mathop{min}\limits_{w,b}(\frac{1}{2}||w||^2) w,bmin(21∣∣w∣∣2),实际就是要求 m i n w , b ( m a x α L ( w , b , α ) ) \mathop{min}\limits_{w,b}(\mathop{max}\limits_{\alpha} \ L(w,b,\alpha)) w,bmin(αmax L(w,b,α)),为什么呢?
【重点
】首先考虑如下两种情况:
也就是 m a x L ( w , b , α ) max \ L(w,b,\alpha) max L(w,b,α)只有 ∞ \infty ∞和 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2这两种情况,于是 m i n ( m a x L ( w , b , α ) ) = m i n ( ∞ , 1 2 ∣ ∣ w ∣ ∣ 2 ) = m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(max \ L(w,b,\alpha))=min(\infty,\frac{1}{2}||w||^2)=min(\frac{1}{2}||w||^2) min(max L(w,b,α))=min(∞,21∣∣w∣∣2)=min(21∣∣w∣∣2)。
m i n w , b ( m a x α L ( w , b , α ) ) = m a x α ( m i n w , b L ( w , b , α ) ) \mathop{min}\limits_{w,b}(\mathop{max}\limits_{\alpha} \ L(w,b,\alpha))=\mathop{max}\limits_{\alpha} (\mathop{min}\limits_{w,b} \ L(w,b,\alpha)) w,bmin(αmax L(w,b,α))=αmax(w,bmin L(w,b,α))
于是就是要求:
m a x α ( m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) ) , s . t . α i > 0 ( 4.1 ) \mathop{max}\limits_{\alpha} (\mathop{min}\limits_{w,b} \ \frac{1}{2}||w||^2+\sum_{i=1}^n \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b))),\ s.t.\ \alpha_i>0 \ (4.1) αmax(w,bmin 21∣∣w∣∣2+i=1∑nαi(1−y(i)(wTx(i)+b))), s.t. αi>0 (4.1)
(1)这里需要先求min,再求max,
对 w , b w,b w,b 分别求偏导可得: { ∂ L ∂ w = 0 ⇒ w = ∑ i = 1 n α i y ( i ) x ( i ) ∂ L ∂ b = 0 ⇒ ∑ i = 1 n α i y ( i ) = 0 \begin{cases} \frac{\partial L}{\partial w}=0 \Rightarrow w=\sum\limits_{i=1}^n \alpha_iy^{(i)}x^{(i)}\\ \frac{\partial L}{\partial b}=0 \Rightarrow \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ \end{cases} ⎩⎪⎨⎪⎧∂w∂L=0⇒w=i=1∑nαiy(i)x(i)∂b∂L=0⇒i=1∑nαiy(i)=0 (4.2)
这样就求到了 w , b w,b w,b的极值的情况。再带回公式(3.1),并公式(4.1),可以得到:
L ( w , b , α ) = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 n α i L(w,b,\alpha)=-\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (x_i \cdot x_j)+\sum_{i=1}^n \alpha_i L(w,b,α)=−21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)+i=1∑nαi
也就是 m i n w , b L ( w , b , α ) = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 n α i \mathop{min}\limits_{w,b} \ L(w,b,\alpha)=-\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (x_i \cdot x_j)+\sum_{i=1}^n \alpha_i w,bmin L(w,b,α)=−21∑i=1n∑j=1nαiαjyiyj(xi⋅xj)+∑i=1nαi
(2)求 m i n w , b L ( w , b , α ) \mathop{min}\limits_{w,b} \ L(w,b,\alpha) w,bmin L(w,b,α)关于 α \alpha α的极大值,就是我们要求的对偶问题:
m a x α − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 n α i s . t . ∑ i = 1 n α i y ( i ) = 0 α i ≥ 0 , i = 1 , 2 , . . . , n \begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (x_i \cdot x_j)+\sum_{i=1}^n \alpha_i \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & \alpha_i\geq0, i=1,2,...,n\\ \end{array} αmax −21∑i=1n∑j=1nαiαjyiyj(xi⋅xj)+∑i=1nαis.t. i=1∑nαiy(i)=0αi≥0,i=1,2,...,n
上面这个不等式约束问题可以用二次规划的方法解决。也可以用
SMO算法进行求解。
SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值
。
假设求得了最优解 α ∗ \alpha^* α∗,再通过公式(4.2)求出 w ∗ w^* w∗,然后任意选择一个支持向量代入 y ( w T x + b ) = 1 y(w^Tx+b)=1 y(wTx+b)=1求出 b ∗ b^* b∗,或者使用全部支持向量求出b再累加再求平均。
于是可以得到SVM的分类决策函数:
f ( x ) = s i g n ( w T + b ) = { − 1 i f ( w T + b ) < 0 0 i f ( w T + b ) = 0 1 i f ( w T + b ) > 0 f(x)=sign(w^T+b)= \begin{cases} & -1&if(w^T+b)<0\\ & 0 &if(w^T+b)=0\\ & 1 &if(w^T+b)>0\\ \end{cases} f(x)=sign(wT+b)=⎩⎪⎨⎪⎧−101if(wT+b)<0if(wT+b)=0if(wT+b)>0
在实际应用中,完全线性可分的样本是很少的,为了使SVM仍能生效,引入了软间隔
,也就是允许部分样本点不满足约束条件: 1 − y ( i ) ( w T x ( i ) + b ) ≤ 0 , i = 1 , 2 , . . . n 1-y^{(i)}(w^Tx^{(i)}+b) \leq 0,i=1,2,...n 1−y(i)(wTx(i)+b)≤0,i=1,2,...n。
为了度量这个间隔软到何种程度,我们为每个样本引入一个松弛变量 ξ i \xi_i ξi
,令 x i i ≥ 0 xi_i \geq 0 xii≥0,且 1 − y ( i ) ( w T x ( i ) + b ) − ξ i ≤ 0 1-y^{(i)}(w^Tx^{(i)}+b) - \xi_i \leq 0 1−y(i)(wTx(i)+b)−ξi≤0。增加软间隔后我们的优化目标变成了:
还是和之前的解决方法一样。转化后的对偶问题为:
m a x α − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 n α i s . t . ∑ i = 1 n α i y ( i ) = 0 C ≥ α i ≥ 0 , i = 1 , 2 , . . . , n \begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (x_i \cdot x_j)+\sum_{i=1}^n \alpha_i \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & C\geq\alpha_i\geq0, i=1,2,...,n\\ \end{array} αmax −21∑i=1n∑j=1nαiαjyiyj(xi⋅xj)+∑i=1nαis.t. i=1∑nαiy(i)=0C≥αi≥0,i=1,2,...,n
C为预设的一个常数,可以理解为错误样本的惩罚程度。
有时候样本点是完全线性不可分的,可以将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分。
我们用 x 表示原来的样本点,用 ϕ ( x ) \phi(x) ϕ(x) 表示 x 映射
到特征新的特征空间后到新向量。那么分割超平面可以表示为: f ( x ) = w T ϕ ( x ) + b f(x)=w^T \phi(x)+b f(x)=wTϕ(x)+b。
同理,优化问题变为:
m a x α − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( ϕ ( x i ) T ⋅ ϕ ( x j ) ) + ∑ i = 1 n α i s . t . ∑ i = 1 n α i y ( i ) = 0 C ≥ α i ≥ 0 , i = 1 , 2 , . . . , n \begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j ( \phi(x_i)^T \cdot \phi(x_j))+\sum_{i=1}^n \alpha_i \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & C\geq\alpha_i\geq0, i=1,2,...,n\\ \end{array} αmax −21∑i=1n∑j=1nαiαjyiyj(ϕ(xi)T⋅ϕ(xj))+∑i=1nαis.t. i=1∑nαiy(i)=0C≥αi≥0,i=1,2,...,n
基于Mercer定理,存在核函数
K K K,高维空间的内积可用核函数的结果来代替。也就是:
K ( x i , y i ) = ( ϕ ( x i ) ) T ϕ ( y i ) K(x_i , y_i)=(\phi(x_i))^T \phi(y_i) K(xi,yi)=(ϕ(xi))Tϕ(yi)
即将低维空间的数据代入核函数 K 中计算的值,可以代替数据映射到高维空间后的内积。
于是引入核函数之后的对偶问题变为:
m a x α − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) + ∑ i = 1 n α i s . t . ∑ i = 1 n α i y ( i ) = 0 C ≥ α i ≥ 0 , i = 1 , 2 , . . . , n \begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j K( x_i, x_j)+\sum_{i=1}^n \alpha_i \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & C\geq\alpha_i\geq0, i=1,2,...,n\\ \end{array} αmax −21∑i=1n∑j=1nαiαjyiyjK(xi,xj)+∑i=1nαis.t. i=1∑nαiy(i)=0C≥αi≥0,i=1,2,...,n
参考:
【1】从零推导支持向量机(SVM)
【2】支持向量机 SVM(非常详细)