“种一棵树最好的时间是十年前,其次是现在”
1 间隔
在logistic regression中已经看到,hθ(x)=gθ(x)=p(y=1∣x)h_{\theta}(x) = g_{\theta}(x) = p(y=1|x)hθ(x)=gθ(x)=p(y=1∣x),如果p(y=1∣x)>0.5p(y=1|x) > 0.5p(y=1∣x)>0.5,则判断样本为正样本。由sigmoid函数的形状可知,只有在θTx>0\theta^Tx > 0θTx>0时,才有p(y=1∣x)>0.5p(y=1|x) > 0.5p(y=1∣x)>0.5,且θTx\theta^TxθTx的值越大,p(y=1∣x)p(y=1|x)p(y=1∣x)的值才越大,也就表示我们对当前样本属于类别1的确信度越大。反之,θTx\theta^TxθTx的值越小,则表示当前样本属于类别0的确信度越大。
如上图所示,假设圆点表示负样本,方点表示正样本。在上述A、B、C三个正样本中,C最远离分类直线,分类结果的置信度最高,B次之,A最小。
我们在构建一个分类器时,除了希望对所有的样本能够尽可能正确的分类之外,我们还希望对每一个样本分类结果的置信度尽可能的高。
在下面的介绍中,以“+1”来表示正类的label,以“-1”来表示负类的label。
1.1 函数间隔
基于上一节的描述,我们希望对于正类样本y(i)=1y^{(i)} = 1y(i)=1,θTx(i)+b>>0\theta^Tx^{(i)}+b >> 0θTx(i)+b>>0且越大越好;而对于负类样本y(i)=−1y^{(i)} = -1y(i)=−1,θTx(i)+b<<0\theta^Tx^{(i)}+b << 0θTx(i)+b<<0且越小越好。
定义单个样本(x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i))在参数www和bbb下的函数间隔为:
r^(i)=y(i)(θTx(i)+b)\hat r^{(i)} = y^{(i)}(\theta^Tx^{(i)} + b)r^(i)=y(i)(θTx(i)+b)
根据上面的介绍,我们知道函数间隔一定为正,且值越大越好。
定义整个样本集D={(x(i),y(i)),i=1,⋯ ,m}D = \{(x^{(i)},y^{(i)}),i=1,\cdots,m\}D={(x(i),y(i)),i=1,⋯,m}的函数间隔为:
r^=min r^(i),i=1,⋯ ,m\hat r = min~~ \hat r^{(i)} , i = 1,\cdots,mr^=min r^(i),i=1,⋯,m
函数间隔存在一个问题,就是假如对参数 w,bw,bw,b 扩充两倍变为 2w,2b2w,2b2w,2b 之后,单个样本的函数间隔将会变成原来的两倍,但是参数扩充前后表示的是同一条直线,那么对同一条直线简单的玩了下文字游戏,函数间隔就变成了原来的两倍,表示我现在对分类结果的确信程度就变成了原来的两倍,这样的性质显然是不合理的。
为了解决函数间隔存在的问题,我们引出了几何间隔。
1.2 几何间隔
定义单个样本(x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i))在参数www和bbb下的几何间隔为:
r(i)=y(i)(wTx(i)+b∣∣w∣∣)r^{(i)} = y^{(i)}(\frac{w^Tx^{(i)}+ b}{||w||} )r(i)=y(i)(∣∣w∣∣wTx(i)+b)
几何间隔的求解过程为:
如上图所示,分类超平面为wTx+b=0w^Tx+b = 0wTx+b=0,单位方向向量为w∣∣w∣∣\frac{w}{||w||}∣∣w∣∣w,假设A在分类超平面上的投影点为B,A点坐标为x(i)x^{(i)}x(i)且|AB| = r,则B点的坐标为x(i)−w∣∣w∣∣r(i)x^{(i)} - \frac{w}{||w||}r^{(i)}x(i)−∣∣w∣∣wr(i),由于B位于分类超平面上,则代入直线方程有wT(x(i)−w∣∣w∣∣r(i))+b=0w^T(x^{(i)} - \frac{w}{||w||}r^{(i)}) + b = 0wT(x(i)−∣∣w∣∣wr(i))+b=0,推得r(i)=wTx(i)+b∣∣w∣∣r^{(i)} = \frac{w^Tx^{(i)} + b}{||w||}r(i)=∣∣w∣∣wTx(i)+b。
对于几何间隔,将w,bw,bw,b变成2w,2b2w,2b2w,2b时,几何间隔的值保持不变,克服了函数间隔的缺陷。
几何间隔与向量的范数大小无关,也就是说,几何间隔对于参数具有缩放不变性,所以在最优化求解w和b的过程中,可以对w和b添加任意的限制条件,均不会改变几何间隔值的大小。
定义整个样本集D={(x(i),y(i)),i=1,⋯ ,m}D = \{(x^{(i)},y^{(i)}),i=1,\cdots,m\}D={(x(i),y(i)),i=1,⋯,m}的几何间隔为:
r=min r(i),i=1,⋯ ,mr = min~~ r^{(i)} , i = 1,\cdots,mr=min r(i),i=1,⋯,m
函数间隔和几何间隔之间的关系为:
当∣∣w∣∣=1||w|| = 1∣∣w∣∣=1时,函数间隔等于几何间隔。
1.3 最优间隔分类器
从上面的讨论中可以得知,给定一个训练集,我们的目的是希望找到一个分类超平面以最大化几何间隔,这样对于训练集中的每一个训练样本,我们都对分类结果具有较高的置信度。
当一个数据集具有较大的几何间隔时,说明该数据集中的正类样本和负类样本之间存在较大的间隔。
假设一个数据集是线性可分的,则最优间隔分类器可以表示为:
maxr,w,b rs.t. y(i)(wTx(i)+b)≥r,i=1,⋯ ,m∣∣w∣∣=1max_{r,w,b} ~~~~~ r \\ \\ s.t. ~~ y^{(i)}(w^Tx^{(i)} + b) \geq r ,i = 1,\cdots,m \\ ||w|| = 1maxr,w,b rs.t. y(i)(wTx(i)+b)≥r,i=1,⋯,m∣∣w∣∣=1
由于上式中,||w|| = 1为非凸函数,因此无法直接使用现有的最优化方法求解,因此变换形式为:
maxr,w,b r^∣∣w∣∣s.t. y(i)(wTx(i)+b)≥r^,i=1,⋯ ,mmax_{r,w,b} ~~~~~ \frac{\hat r}{||w||} \\ \\ s.t. ~~ y^{(i)}(w^Tx^{(i)} + b) \geq \hat r ,i = 1,\cdots,mmaxr,w,b ∣∣w∣∣r^s.t. y(i)(wTx(i)+b)≥r^,i=1,⋯,m
由于调整w,b不改变分类平面,因此调整w,b使得函数间隔为1,此时的最优间隔分类器为:
maxr,w,b 1∣∣w∣∣s.t. y(i)(wTx(i)+b)≥1,i=1,⋯ ,mmax_{r,w,b} ~~~~~ \frac{1}{||w||} \\ \\ s.t. ~~ y^{(i)}(w^Tx^{(i)} + b) \geq 1 ,i = 1,\cdots,mmaxr,w,b ∣∣w∣∣1s.t. y(i)(wTx(i)+b)≥1,i=1,⋯,m
再次变换形式为:
minr,w,b 12∣∣w∣∣2s.t. y(i)(wTx(i)+b)≥1,i=1,⋯ ,mmin_{r,w,b} ~~~~~ \frac{1}{2}{||w||^2} \\ \\ s.t. ~~ y^{(i)}(w^Tx^{(i)} + b) \geq 1 ,i = 1,\cdots,mminr,w,b 21∣∣w∣∣2s.t. y(i)(wTx(i)+b)≥1,i=1,⋯,m
此时最优化的式子为具有线性约束的二项式最优化问题,可以利用现成的二项式优化工具求解最优的w∗w^*w∗和b∗b^*b∗。
上述最优化间隔中设置了函数间隔为1,因此在此最优化间隔分类器的情况下,两类样本之间的最小间隔为2∣∣w∣∣\frac{2}{||w||}∣∣w∣∣2。
至此,貌似我们已经求得了最大间隔分类器,但是我们不会至此结束,而是会去讨论拉格朗日对偶,因为拉格朗日对偶会引出核函数的概念,而核函数在高维样本的分类中会发挥重大的作用。同时,对偶问题也会给出比使用QP代码进行原始问题求解更加高效的求解算法。
2 拉格朗日对偶
对于下述有限制条件的最优化问题:
minw f(w)s.t. hi(w)=0,i=1,⋯ ,lmin_w~~~~f(w) \\ s.t.~~h_i(w) = 0,i=1,\cdots,lminw f(w)s.t. hi(w)=0,i=1,⋯,l
该问题可以用拉格朗日乘子法进行求解。
定义拉格朗日形式为:L(w,b)=f(w)+∑i=1lhi(w)L(w,b) = f(w) + \sum_{i=1}^{l}h_i(w)L(w,b)=f(w)+∑i=1lhi(w),βi\beta_iβi称之为拉格朗日乘子。令∂L∂wi=0\frac{\partial L}{\partial w_i} = 0∂wi∂L=0和∂L∂βi=0\frac{\partial L}{\partial \beta_i} = 0∂βi∂L=0可得www和β\betaβ。
下面对待优化函数添加不等式限制,定义原始最优化问题为:
minw f(w)s.t. gi(w)≤0,i=1,⋯ ,k hi(w)=0,i=1,…,lmin_w ~~~~ f(w) \\ s.t.~~~~g_i(w) \leq 0,i=1,\cdots,k \\~~~~~~~~h_i(w)=0,i=1,\dots,lminw f(w)s.t. gi(w)≤0,i=1,⋯,k hi(w)=0,i=1,…,l
其拉格朗日乘子法展开得:
L(w,α,β)=f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)L(w,\alpha,\beta) = f(w) + \sum_{i=1}^{k}\alpha_ig_i(w) + \sum_{i=1}^{l}\beta_ih_i(w)L(w,α,β)=f(w)+i=1∑kαigi(w)+i=1∑lβihi(w)
其中,αi\alpha_iαi和βi\beta_iβi为拉格朗日乘子。
2.1 原始问题
定义θp(w)=maxα,β:αi>0 L(w,α,β)\theta_p(w) = max_{\alpha,\beta:\alpha_i > 0}~~~~L(w,\alpha,\beta)θp(w)=maxα,β:αi>0 L(w,α,β),P表示“primal”.
注意对w的限制条件为gi(w)≤0g_i(w) \leq 0gi(w)≤0和hi(w)=0h_i(w) = 0hi(w)=0。对于不满足限制条件的w,如gi(w)≥0g_i(w) \geq 0gi(w)≥0和hi(w)≠0h_i(w) \neq 0hi(w)̸=0,那么θp(w)=maxα,β:αi≥0L(w,α,β)=maxα,β:αi≥0f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)\theta_p(w)=max_{\alpha,\beta:\alpha_i \geq 0}L(w,\alpha,\beta) =max_{\alpha,\beta:\alpha_i \geq 0}f(w) +\sum_{i=1}^{k}\alpha_ig_i(w) + \sum_{i=1}^{l}\beta_ih_i(w)θp(w)=maxα,β:αi≥0L(w,α,β)=maxα,β:αi≥0f(w)+∑i=1kαigi(w)+∑i=1lβihi(w),此时,θp(w)\theta_p(w)θp(w)的取值可以为+∞+\infin+∞。而对于满足限制条件gi(w)≤0g_i(w) \leq 0gi(w)≤0和hi(w)=0h_i(w) = 0hi(w)=0的w而言,其使得θp(w)=maxα,β:αi>0 L(w,α,β)=f(w)\theta_p(w) = max_{\alpha,\beta:\alpha_i > 0}~~~~L(w,\alpha,\beta) =f(w)θp(w)=maxα,β:αi>0 L(w,α,β)=f(w)。因此,有:
θp(w)={f(w) w满足限制条件+∞ w不满足限制条件\theta_p(w) = \begin{cases}f(w)~~~~w满足限制条件 \\ +\infin~~~~w不满足限制条件 \end{cases}θp(w)={f(w) w满足限制条件+∞ w不满足限制条件
因此,minwθp(w)=minwmaxα,β:αi≥0L(w,α,β)min_w \theta_p(w) = min_wmax_{\alpha,\beta:\alpha_i \geq 0}L(w,\alpha,\beta)minwθp(w)=minwmaxα,β:αi≥0L(w,α,β)就等价于:
minw f(w)s.t. gi(w)≤0,i=1,⋯ ,k hi(w)=0,i=1,…,lmin_w ~~~~ f(w) \\ s.t.~~~~g_i(w) \leq 0,i=1,\cdots,k \\~~~~~~~~h_i(w)=0,i=1,\dots,lminw f(w)s.t. gi(w)≤0,i=1,⋯,k hi(w)=0,i=1,…,l
定义该问题的解为p∗=minwθp(w)p^* = min_w \theta_p(w)p∗=minwθp(w)。
2.2 对偶问题
我们再定义θD(α,β)=minw L(w,α,β)\theta_D(\alpha,\beta) = min_w~~L(w,\alpha,\beta)θD(α,β)=minw L(w,α,β),“D”表示对偶。注意原始问题是关于α\alphaα和β\betaβ的最优化问题,对偶问题是关于www的最优化问题。
maxα,β:αi≥0 θD(α,β)=maxα,β:αi≥0 minw L(w,α,β)max_{\alpha,\beta:\alpha_i \geq 0}~~\theta_D(\alpha,\beta)=max_{\alpha,\beta:\alpha_i \geq 0}~~min_w~~L(w,\alpha,\beta)maxα,β:αi≥0 θD(α,β)=maxα,β:αi≥0 minw L(w,α,β),对偶问题的解为d∗=maxα,β:αi≥0 θD(α,β)d^* = max_{\alpha,\beta:\alpha_i \geq 0}~~\theta_D(\alpha,\beta)d∗=maxα,β:αi≥0 θD(α,β)。
2.3 原始问题与对偶问题的关系及KKT条件
原始问题与对偶问题的关系为:
d∗=maxα,β:αi≥0 minw L(w,α,β)≤minw maxα,β:αi≥0 L(w,α,β)=p∗d^* = max_{\alpha,\beta:\alpha_i \geq 0}~~min_w~~L(w,\alpha,\beta) \leq min_w~~max_{\alpha,\beta:\alpha_i \geq 0}~~L(w,\alpha,\beta) =p^*d∗=maxα,β:αi≥0 minw L(w,α,β)≤minw maxα,β:αi≥0 L(w,α,β)=p∗。这是因为对于一个函数而言,min max 往往大于 max min,即后进行的操作起到更大的作用。
在某些条件下,d∗=p∗d^* = p^*d∗=p∗,那么就可以使用对对偶问题的求解来代替对原始问题的求解,这些条件就是KKT条件。
假设函数gig_igi和fff都是凸函数,hih_ihi为仿射函数,任意的gi(w)≤0g_i(w) \leq 0gi(w)≤0。在这些假设条件下,必定存在w∗,α∗,β∗w^*,\alpha^*,\beta^*w∗,α∗,β∗,使得w∗w^*w∗是原始问题的解,同时有α∗,β∗\alpha^*,\beta^*α∗,β∗为对偶问题的解,此时d∗=p∗=L(w∗,α∗,β∗)d^* = p^* = L(w^*,\alpha^*,\beta^*)d∗=p∗=L(w∗,α∗,β∗),此时,w∗,α∗,β∗w^*,\alpha^*,\beta^*w∗,α∗,β∗满足KKT条件:
基于上图中的式子5,6,7可知,当αi∗>0\alpha_i^*>0αi∗>0时,必有gi(w∗)=0g_i(w^*)=0gi(w∗)=0。
3 基于对偶的最优间隔分类器求解
再学习了拉格朗日对偶之后,我们再来看下最优间隔分类器:
minr,w,b 12∣∣w∣∣2s.t. y(i)(wTx(i)+b)≥1,i=1,⋯ ,mmin_{r,w,b} ~~~~~ \frac{1}{2}{||w||^2} \\ \\ s.t. ~~ y^{(i)}(w^Tx^{(i)} + b) \geq 1 ,i = 1,\cdots,mminr,w,b 21∣∣w∣∣2s.t. y(i)(wTx(i)+b)≥1,i=1,⋯,m
变换形式为:
minr,w,b 12∣∣w∣∣2s.t. 1−y(i)(wTx(i)+b)≤0,i=1,⋯ ,mmin_{r,w,b} ~~~~~ \frac{1}{2}{||w||^2} \\ \\ s.t. ~~ 1-y^{(i)}(w^Tx^{(i)} + b) \leq 0 ,i = 1,\cdots,mminr,w,b 21∣∣w∣∣2s.t. 1−y(i)(wTx(i)+b)≤0,i=1,⋯,m
根据KKT条件中只有在gi(w)=0g_i(w) = 0gi(w)=0时,才有αi>0\alpha_i>0αi>0得到只有在y(i)(wTx(i)+b)=1y^{(i)}(w^Tx^{(i)} + b)=1y(i)(wTx(i)+b)=1时,才有αi>0\alpha_i>0αi>0。
由于在前面最优间隔分类器的推导过程中已经假定了数据集的函数间隔为1,即数据集中各样本的函数间隔都大于等于1,而结合上一段的结论可以得到只有在函数间隔为1的样本点处才有αi>0\alpha_i>0αi>0。函数间隔为1的样本点称之为支持向量,支持向量的个数远远小于数据集的样本数,这是一个很关键的性质,将在后面的过程中用到。
最优间隔分类器:
minr,w,b 12∣∣w∣∣2s.t. 1−y(i)(wTx(i)+b)≤0,i=1,⋯ ,mmin_{r,w,b} ~~~~~ \frac{1}{2}{||w||^2} \\ \\ s.t. ~~ 1-y^{(i)}(w^Tx^{(i)} + b) \leq 0 ,i = 1,\cdots,mminr,w,b 21∣∣w∣∣2s.t. 1−y(i)(wTx(i)+b)≤0,i=1,⋯,m
的拉格朗日式子为:
L(w,b,α)=12∣∣w∣∣2−∑i=1mαi(yi(wTx(i)+b)−1)L(w,b,\alpha) = \frac{1}{2}{||w||^2}-\sum_{i=1}^{m}\alpha_i(y_i(w^Tx^{(i)}+b) - 1)L(w,b,α)=21∣∣w∣∣2−i=1∑mαi(yi(wTx(i)+b)−1)
为了求出问题的对偶形式,需要先求在固定α\alphaα的情况下求L(w,α,β)L(w,\alpha,\beta)L(w,α,β)关于w和b的最小值,令:
∂L∂w=w−∑i=1mαiy(i)x(i)=0,可得w=∑i=1mαiy(i)x(i)\frac{\partial L}{\partial w} = w - \sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)} = 0,可得w = \sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)}∂w∂L=w−i=1∑mαiy(i)x(i)=0,可得w=i=1∑mαiy(i)x(i)
∂L∂b=∑i=1mαiy(i)=0\frac{\partial L}{\partial b} =\sum_{i=1}^{m}\alpha_iy^{(i)}=0∂b∂L=i=1∑mαiy(i)=0.
将w=∑i=1mαiy(i)x(i)w = \sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)}w=∑i=1mαiy(i)x(i)代入L(w,b,α)L(w,b,\alpha)L(w,b,α)中,可得:
L(w,b,α)=12∣∣w∣∣2−∑i=1mαi(yi(wTx(i)+b)−1)=∑i=1mαi−12∑i,j=1mαiαjy(i)y(j)<x(i),x(j)>L(w,b,\alpha) = \frac{1}{2}{||w||^2}-\sum_{i=1}^{m}\alpha_i(y_i(w^Tx^{(i)}+b) - 1) \\ =\sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i,j=1}^{m}\alpha_i\alpha_jy^{(i)}y^{(j)}<x^{(i)},x^{(j)}> L(w,b,α)=21∣∣w∣∣2−i=1∑mαi(yi(wTx(i)+b)−1)=i=1∑mαi−21i,j=1∑mαiαjy(i)y(j)<x(i),x(j)>
此时,L(w,b,α)L(w,b,\alpha)L(w,b,α)已经满足了在固定α\alphaα的情况下关于w,bw,bw,b的最小值。此时,对偶形式的最优化间隔分类器为:
maxα w(α)=∑i=1mαi−12∑i,j=1mαiαjy(i)y(j)<x(i),x(j)>max_{\alpha}~~w(\alpha) = \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i,j=1}^{m}\alpha_i\alpha_jy^{(i)}y^{(j)}<x^{(i)},x^{(j)}> maxα w(α)=i=1∑mαi−21i,j=1∑mαiαjy(i)y(j)<x(i),x(j)>
s.t. αi≥0∑i=1mαigi(w)=0 s.t.~~~~\alpha_i \geq 0 \\ \sum_{i=1}^{m}\alpha_ig_i(w) = 0s.t. αi≥0i=1∑mαigi(w)=0
上述s.t.中的条件来自于KKT条件,因为只有在满足KKT条件的情况下,才有p∗=d∗p^* = d^*p∗=d∗,此时w∗w^*w∗和b∗b^*b∗才是原始问题的解。所以,我们对上述对偶问题求解,也就得到了原始问题的解。
对偶问题的求解需要求解各αi\alpha_iαi,需要使用SMO算法,这部分内容我们稍后再学习。
再使用SMO算法求得对偶问题的解后,可以根据w=∑i=1mαiy(i)x(i)w = \sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)}w=∑i=1mαiy(i)x(i)得到原始问题的w的解,同时原始问题的b=−maxi:y(i)=−1w∗Tx(i)+mini:y(i)=+1w∗Tx(i)2b=-\frac{max_{i:y^{(i)=-1}}w^{*T}x^{(i)}+min_{i:y^{(i)=+1}}w^{*T}x^{(i)}}{2}b=−2maxi:y(i)=−1w∗Tx(i)+mini:y(i)=+1w∗Tx(i)。b的推导是因为wTx(i)+b=0w^Tx^{(i)}+b=0wTx(i)+b=0,因此b=−wTx(i)b = -w^Tx^{(i)}b=−wTx(i),但因为分类超平面位于函数间隔最小的正类样本与函数间隔最大的负类样本的正中间,因此可得b为两者的均值。
在求得w和b之后,在对一个新的样本进行分类预测时,如果wTx+b>0w^Tx+b > 0wTx+b>0则预测为正类,否则为负类。
wTx+b=(∑i=1mαiy(i)x(i))Tx+b=∑i=1mαiy(i)<x(i),x>+bw^Tx+b = (\sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)})^Tx+b = \sum_{i=1}^{m}\alpha_iy^{(i)} <x^{(i)},x>+bwTx+b=(i=1∑mαiy(i)x(i))Tx+b=i=1∑mαiy(i)<x(i),x>+b
根据KKT条件,只有支持向量的系数αi\alpha_iαi才大于0,因此在对新样本进行分类时,只有支持向量才对新样本的预测起作用,只需计算支持向量与待分类样本的内积即可,而支持向量的个数远远小于训练样本的个数,因此整个的求解过程会非常高效。
4 核函数
假如样本点的分布并不是线性可分的,此时我们就不能使用原始的样本特征进行分类,而是应该使用进行映射之后的特征进行分类,假设映射函数为ϕ(x)\phi(x)ϕ(x),那么就应该使用<ϕ(x(i)),x><\phi(x^{(i)}),x><ϕ(x(i)),x>来代替原始对新样本进行分类时的<x(i),x><x^{(i)},x><x(i),x>。
使用映射后的特征而不是原始特征进行模型估计,一方面可以进行更好的拟合,另一方面是在很多线性不可分的样例映射到高维空间后可能就会变得线性可分了。
在给定特征映射为ϕ\phiϕ的情况下,定义对应的核函数为K(x,z)=ϕT(x)ϕ(z)K(x,z) = \phi^T(x)\phi(z)K(x,z)=ϕT(x)ϕ(z)。
那么在对新样本进行映射到高维特征进行分类时,只需计算ϕ(x(i))\phi(x^{(i)})ϕ(x(i))和ϕ(x)\phi(x)ϕ(x)即可。但是可能会存在一个问题,就是计算ϕ(x(i))\phi(x^{(i)})ϕ(x(i))的计算量会比较大。比如,原始特征x(i)x^{(i)}x(i)是n维的,若将其映射到n2n^2n2维,然后再计算内积,那么计算内积时的计算复杂度为o(n2)o(n^2)o(n2),有没有什么办法可以减少计算量呢?
答案也就在函数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,z∈Rnx,z \in R^nx,z∈Rn ,K(x,z)=(xTz)2=(∑i=1nxizi)(∑j=1nxjzj)=∑i,j=1nxixjzizj=∑i=1n(xixj)(zizj)=ϕ(x)Tϕ(z)K(x,z) = (x^Tz)^2=(\sum_{i=1}^{n}x_iz_i)(\sum_{j=1}^{n}x_jz_j)=\sum_{i,j=1}^{n}x_ix_jz_iz_j=\sum_{i=1}^{n}(x_ix_j)(z_iz_j)=\phi(x)^T\phi(z)K(x,z)=(xTz)2=(∑i=1nxizi)(∑j=1nxjzj)=∑i,j=1nxixjzizj=∑i=1n(xixj)(zizj)=ϕ(x)Tϕ(z),
若x为三维向量,如果直接计算K(x,z)=(x1z1+x2z2+x3z3)2K(x,z) = (x_1z_1+x_2z_2+x_3z_3)^2K(x,z)=(x1z1+x2z2+x3z3)2,计算复杂度为o(n)o(n)o(n)。但是如果我们分别计算ϕ(x),ϕ(z)\phi(x),\phi(z)ϕ(x),ϕ(z)的话,有
ϕ(x)=[x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x3]\phi(x) =\left[ \begin{matrix} x_1x_1\\ x_1x_2 \\ x_1x_3 \\x_2x_1\\ x_2x_2 \\ x_2x_3 \\ x_3x_1\\ x_3x_2 \\ x_3x_3 \end{matrix} \right]ϕ(x)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x3⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤,此时计算ϕ(x)Tϕ(z)\phi(x)^T\phi(z)ϕ(x)Tϕ(z)的话计算复杂度为o(n2)o(n^2)o(n2)。
一般情况下,K(x,z)=(xTz+c)dK(x,z)=(x^Tz+c)^dK(x,z)=(xTz+c)d对应的ϕ(x)\phi(x)ϕ(x)的计算复杂度为o(nd)o(n^d)o(nd),而直接计算K(x,z)K(x,z)K(x,z)的复杂度仅为o(n)o(n)o(n),所以直接计算K(x,z)K(x,z)K(x,z)的复杂度远远小于ϕ(x)Tϕ(z)\phi(x)^T\phi(z)ϕ(x)Tϕ(z)。
另一个视角来看核函数,由于K(x,z)=ϕ(x)Tϕ(z)K(x,z)=\phi(x)^T\phi(z)K(x,z)=ϕ(x)Tϕ(z),计算的是ϕ(x)\phi(x)ϕ(x)和ϕ(z)\phi(z)ϕ(z)的内积,因此若ϕ(x)\phi(x)ϕ(x)和ϕ(z)\phi(z)ϕ(z)方向越相近,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)的值为0。因此,核函数可以认为是衡量ϕ(x)\phi(x)ϕ(x)和ϕ(z)\phi(z)ϕ(z)的相近程度,或者说是衡量x和z的相近程度。
核函数的有效性判断:
我们该如何判断一个函数是否为有效的核函数呢?比如下面的函数:
K(x,z)=exp(−∣∣x−z∣∣22σ2)K(x,z) = exp(-\frac{||x-z||^2}{2\sigma^2})K(x,z)=exp(−2σ2∣∣x−z∣∣2)
x和z相互接近时,K(x,z)K(x,z)K(x,z)接近1,而x和z差距越大,K(x,z)K(x,z)K(x,z)越接近0。实际上这个函数为高斯核,其对应的ϕ(x)\phi(x)ϕ(x)接近于无穷维,那么该如何验证该核函数是可用的核函数呢?
判断规则为:对一个可用的核函数k,假设其对应的特征映射为ϕ\phiϕ,考虑由m个样本组成的样本集{x(1),⋯ ,x(m)}\{x^{(1),\cdots,x^{(m)}}\}{x(1),⋯,x(m)},定义一个m*m的方阵K∈Rm×mK \in R^{m \times m}K∈Rm×m,且Kij=K(x(i),x(j))K_{ij} = K(x^{(i)},x^{(j)})Kij=K(x(i),x(j)),矩阵K称之为核矩阵。如果函数K为可用的核函数,那么对应的核矩阵Ki,j=K(x(i),x(j))=ϕ(x(i))Tϕ(x(j))=ϕ(x(j))Tϕ(x(i))=KjiK_{i,j}=K(x^{(i)},x^{(j)})=\phi(x^{(i)})^T\phi(x^{(j)}) = \phi(x^{(j)})^T\phi(x^{(i)}) =K_{ji}Ki,j=K(x(i),x(j))=ϕ(x(i))Tϕ(x(j))=ϕ(x(j))Tϕ(x(i))=Kji,即核函数矩阵K一定为对称矩阵。
另外,令ϕk(x)\phi_k(x)ϕk(x)表示ϕ(x)\phi(x)ϕ(x)的第k个元素,那么对于任意向量z有:
zTKz=∑i∑jziKijzj=∑i∑jziϕ(x(i))Tϕ(x(j))zj=∑i∑jzi∑kϕk(x(i))Tϕk(x(j))zj=∑i∑j∑kziϕk(x(i))Tϕk(x(j))zj=∑k(∑iziϕk(x(i)))2≥0z^TKz = \sum_i\sum_jz_iK_{ij}z_j= \sum_i\sum_jz_i\phi(x^{(i)})^T\phi(x^{(j)})z_j \\ = \sum_i\sum_jz_i\sum_k\phi_k(x^{(i)})^T\phi_k(x^{(j)})z_j = \sum_i\sum_j\sum_kz_i\phi_k(x^{(i)})^T\phi_k(x^{(j)})z_j \\= \sum_k(\sum_iz_i\phi_k(x^{(i)}))^2 \geq 0zTKz=i∑j∑ziKijzj=i∑j∑ziϕ(x(i))Tϕ(x(j))zj=i∑j∑zik∑ϕk(x(i))Tϕk(x(j))zj=i∑j∑k∑ziϕk(x(i))Tϕk(x(j))zj=k∑(i∑ziϕk(x(i)))2≥0
因此,核矩阵K一定为半正定矩阵。
综合上面的结论,我们可知:
K(x,z)为有效的核函数 ⇔\Leftrightarrow⇔ 核矩阵为对称半正定矩阵。
因此,在判断一个函数是否为可用的核函数时,不需要尝试将该函数分解为两个函数内积的形式,只需要判断核矩阵K是否为对称半正定矩阵即可。其中,核矩阵中的元素Kij=K(x(i),x(j))K_{ij} = K(x^{(i)},x^{(j)})Kij=K(x(i),x(j))。
核函数的应用:
核函数的应用甚至比svm的应用范围还有广泛,只要是出现向量内积的地方,都可以使用核函数代替,可以高效的进行高维特征空间中向量的内积运算。尤其是对于在低维空间不可分的数据集,使用核函数映射到高维空间后就有可能变得线性可分了。
高斯核函数K(x,z)=exp(−∣∣x−z∣∣22σ2)K(x,z) = exp(-\frac{||x-z||^2}{2\sigma^2})K(x,z)=exp(−2σ2∣∣x−z∣∣2)是一个常用的核函数,也叫作径向基函数(Radial Basis Function,RBF)。
使用核函数后,SVM对新样本进行分类就由:
wTx+b=∑i=1mαiy(i)<x(i),x>+bw^Tx+b = \sum_{i=1}^{m}\alpha_iy^{(i)}<x^{(i)},x> + bwTx+b=i=1∑mαiy(i)<x(i),x>+b
变成了:
∑i=1mαiy(i)K(x(i),x)+b\sum_{i=1}^{m}\alpha_iy^{(i)}K(x^{(i)},x) + bi=1∑mαiy(i)K(x(i),x)+b
同样x(i)x^{(i)}x(i)只考虑数据集中的支持向量即可。
5 软间隔SVM
到目前为止我们只考虑了数据集线性可分的情况,即便原始数据集在低维空间中线性不可分,将其映射到高维空间后也变得线性可分了。但是的确应用中不能确保数据集一定是线性可分的,此时又该怎么办呢?
如上图所示的情况,原始数据集及其分类超平面如图左所示,具有较大的类别间隔。但是若添加一个离群点,虽然仍线性可分,但分类间隔大大减小。若添加的离群点位于对方的类别内,就变成了线性不可分的情况。
为了使SVM对线性不可分的情况同样有效,或者说减小SVM对离群点的敏感程度,我们放宽限制条件,允许某些样本不满足函数间隔大于等于1的约束。当然,在最大化间隔的同时,不满足约束的样本应尽可能少,于是优化目标变化为:
minw,b 12∣∣w∣∣2+C∑i=1ml0/1(y(i)(wTx(i)+b)−1)min_{w,b}~~\frac{1}{2}||w||^2+C\sum_{i=1}^{m}l_{0/1}(y^{(i)}(w^Tx^{(i)}+b) -1)minw,b 21∣∣w∣∣2+Ci=1∑ml0/1(y(i)(wTx(i)+b)−1)
其中,C>0是一个常数,l0/1l_{0/1}l0/1为“0/1损失函数”:
l0/1={1, if z<00, otherwisel_{0/1} = \begin{cases} 1,~~if~~z < 0 \\ 0,~~otherwise\end{cases}l0/1={1, if z<00, otherwise
显然,当C为无穷大时,优化目标迫使所有样本满足函数间隔大于等于1的限制条件。而当C为有限值时,优化目标允许一些样本不满足函数间隔大于等于1的限制条件。
然而,l0/1l_{0/1}l0/1非凸、非连续,数学性质不太好,使得优化函数难以直接求解。于是,通常使用一些函数来代替l0/1l_{0/1}l0/1,称为替代损失。替代损失函数往往是凸的连续函数且是l0/1l_{0/1}l0/1的上界。三种常用的替代损失函数为:
hinge损失:lhinge(z)=max(0,1−z)l_{hinge}(z) = max(0,1-z)lhinge(z)=max(0,1−z)
指数损失:lexp(z)=exp(−z)l_{exp}(z) =exp(-z)lexp(z)=exp(−z)
对率损失:llog(z)=log(1+exp(−z))l_{log}(z)=log(1+exp(-z))llog(z)=log(1+exp(−z))
若采用hinge损失,则上面的软间隔svm最优化目标就变为了:
minw,b 12∣∣w∣∣2+C∑i=1mmax(0,1−y(i)(wTx(i)+b))min_{w,b}~~\frac{1}{2}||w||^2+C\sum_{i=1}^{m}max(0,1-y^{(i)}(w^Tx^{(i)}+b))minw,b 21∣∣w∣∣2+Ci=1∑mmax(0,1−y(i)(wTx(i)+b))
引入松弛变量ξi≥0\xi_i \geq 0ξi≥0,可将上式重写为:
minw,b,ξi 12∣∣w∣∣2+C∑i=1mξis.t. y(i)(wTx(i)+b)≥1−ξiξi≥0, i=1,2,⋯ ,mmin_{w,b,\xi_i}~~\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i \\ s.t. ~~~~y^{(i)}(w^Tx^{(i)}+b) \geq 1-\xi_i \\ \xi_i \geq 0,~~~~i=1,2,\cdots,mminw,b,ξi 21∣∣w∣∣2+Ci=1∑mξis.t. y(i)(wTx(i)+b)≥1−ξiξi≥0, i=1,2,⋯,m
这就是软间隔SVM。
软间隔SVM中引入了松弛变量,如果某个样本的间隔为1−ξi1-\xi_i1−ξi(由于ξi≥0\xi_i \geq 0ξi≥0,所以该样本的函数间隔小于1,即为离群点),那么就对要最小化的目标函数加一项CξiC\xi_iCξi,离群点偏离程度越大,惩罚越大。同样,离群点越多,惩罚越大,而我们最终的目标是最小化该惩罚。最终,我们的目标函数控制了离群点的数目和程度,使得大部分样本点仍遵守函数间隔大于等于1的约束。
软间隔SVM的意义在于,训练过程中会关注大部分的样本点,不会过于关注噪声点,以训练出具有较大间隔的分类器。对于个别离群点,允许其位于间隔内(函数间隔小于1),甚至允许其函数间隔小于0(此时样本被误分类)。这样做,增强了SVM模型的泛化能力,降低了过拟合的风险。同时,损失函数中添加了对离群点的惩罚,还是希望离群点越少越好、离群程度越小越好。
软间隔SVM的参数求解过程同样是使用拉格朗日乘子法得到拉格朗日函数:
将求得的w和C的解代入拉格朗日函数中可得原始最优化问题的对偶问题为:
此时,KKT条件变化为:
{αi=0,y(i)(wTx(i)+b)≥1αi=C,y(i)(wTx(i)+b)≤10<αi<C,y(i)(wTx(i)+b)=1\begin{cases} \alpha_i = 0,y^{(i)}(w^Tx^{(i)}+b) \geq 1 \\\alpha_i = C,y^{(i)}(w^Tx^{(i)}+b) \leq 1\\0 < \alpha_i < C,y^{(i)}(w^Tx^{(i)}+b) = 1 \end{cases}⎩⎪⎨⎪⎧αi=0,y(i)(wTx(i)+b)≥1αi=C,y(i)(wTx(i)+b)≤10<αi<C,y(i)(wTx(i)+b)=1
即在两条间隔线外的样本点前面的系数为0,离群点前面的系数为C,而支持向量前面的系数为(0,C)(0,C)(0,C)。
使用软间隔SVM在对一个新的样本进行分类预测时,如果wTx+b>0w^Tx+b > 0wTx+b>0则预测为正类,否则为负类。
wTx+b=(∑i=1mαiy(i)x(i))Tx+b=∑i=1mαiy(i)<x(i),x>+bw^Tx+b = (\sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)})^Tx+b = \sum_{i=1}^{m}\alpha_iy^{(i)} <x^{(i)},x>+bwTx+b=(i=1∑mαiy(i)x(i))Tx+b=i=1∑mαiy(i)<x(i),x>+b
根据KKT条件,只有支持向量的系数αi\alpha_iαi才大于0,因此在对新样本进行分类时,只有支持向量才对新样本的预测起作用。如果使用了核函数,则同样使用K(x,z)K(x,z)K(x,z)代替<x(i),x><x^{(i)},x><x(i),x>即可。
到目前为止,无论对于硬间隔还是软间隔SVM,分类都是找到支持向量,计算出系数αi\alpha_iαi,计算wTx+bw^Tx+bwTx+b进行新样本的预测。遗留的问题就是如何计算出系数αi\alpha_iαi了,接下来的SMO算法可以解决该问题。
6 SMO
SMO(Sequential minimial optimization),序列最小优化算法,可以用来求解系数αi\alpha_iαi。
在学习SMO之前,先来学习下坐标上升法。
6.1 坐标上升法
考虑一个无限制的最优化问题:
maxα w(α1,α2,⋯ ,αm)max_{\alpha}~~~~w(\alpha_1,\alpha_2,\cdots,\alpha_m)maxα w(α1,α2,⋯,αm)
坐标上升法的迭代过程为:
Loop Until Convergence:{
For i=1,2,…,m{
αi=arg maxα^iw(α1,α2,⋯ ,αi−1,α^i,αi+1,⋯ ,αm)\alpha_i = arg~max_{\hat \alpha_i}w(\alpha_1,\alpha_2,\cdots,\alpha_{i-1},\hat \alpha_i,\alpha_{i+1},\cdots,\alpha_m)αi=arg maxα^iw(α1,α2,⋯,αi−1,α^i,αi+1,⋯,αm)
}
}
也就是说,在内部的迭代过程中,固定除一个参数之外的其他参数,函数的自变量只有单个参数,最大化函数值,即求解函数关于该单个参数的偏导数,令其为0,得到该参数的值。依次迭代,求得所有参数。
坐标上升法的优化路径是沿着坐标轴前进的,因为每一步只优化一个变量。
6.2 SMO
我们再来看下软间隔SVM中对偶形式的最优化问题:
要解决的是在参数{α1,α2,⋯ ,αm}\{\alpha_1,\alpha_2,\cdots,\alpha_m\}{α1,α2,⋯,αm}中求解关于w(α)w(\alpha)w(α)的最大值。其余的x(i),y(i),Cx^{(i)},y^{(i)},Cx(i),y(i),C都是已知量,我们可以按照坐标上升法,固定除αi\alpha_iαi之外的其他参数,求解函数对αi\alpha_iαi的导数,令其为0,得到αi\alpha_iαi的解。但是这里有一个问题,因为∑i=1mαiy(i)=0\sum_{i=1}^{m}\alpha_iy^{(i)}=0∑i=1mαiy(i)=0,假设我们固定了除αi\alpha_iαi之外的其他参数值,那么此时αi\alpha_iαi也已经是一个确定值了,不必在求解了。
所以SMO中是每次选取两个参数进行求解,固定除这两个参数之外的其他参数,比如我们选取α1,α2\alpha_1,\alpha_2α1,α2进行求解,那么α2\alpha_2α2可由α1\alpha_1α1表示出来,整个函数也是只关于α1\alpha_1α1的函数,求偏导数,令其为0,可得α1\alpha_1α1的最优解。
SMO的过程可以描述为:
重复直至收敛{
1.采用启发式方式选取一对参数αi\alpha_iαi和αj\alpha_jαj;
2.固定除αi\alpha_iαi和αj\alpha_jαj之外的所有参数,对w(α)w(\alpha)w(α)进行最优化求解,得到αi\alpha_iαi和αj\alpha_jαj的解。
}
SMO之所以高效的原因是在固定其他参数后,对单个参数的最优化过程非常高效。
7 SVR
SVR,support vector regression,来解决回归问题。
传统回归模型在预测值与实际值完全相同时,损失值才会为0。而SVR略有不同,SVR可以容忍预测值与实际值之间做多有ϵ\epsilonϵ的偏差,仅当预测值与实际值之间的偏差大于ϵ\epsilonϵ时才计算损失,也就是如下图所示的构建了一个宽度为2ϵ2\epsilon2ϵ的间隔带,若训练样本落入此间隔带则被认为是被正确预测的。
SVR问题可形式化表示为:
minw,b 12∣∣w∣∣2+C∑i=1mlϵ(f(xi)−yi)min_{w,b}~~~~\frac{1}{2}||w||^2+C\sum_{i=1}^{m}l_{\epsilon}(f(x_i)-y_i)minw,b 21∣∣w∣∣2+Ci=1∑mlϵ(f(xi)−yi)
其中,C为正则化常数,lϵl_{\epsilon}lϵ为ϵ\epsilonϵ-不敏感损失函数:
lϵ(z)={0, if ∣z∣≤ϵ∣z∣−ϵ, otherwise l_{\epsilon}(z)=\begin{cases}0,~~~~~~~~~~~if~~~|z| \leq \epsilon \\
|z|-\epsilon,~~otherwise\end{cases}lϵ(z)={0, if ∣z∣≤ϵ∣z∣−ϵ, otherwise
间隔带两侧的松弛程度可能有所不同,因此引入两个松弛因子ξi\xi_iξi和ξ^i\hat \xi_iξ^i,将最优化函数写为:
minw,b,ξi,ξ^i 12∣∣w∣∣2+C∑i=1m(ξi+ξ^i)s.t. f(xi)−yi≤ϵ+ξi yi−f(xi)≤ϵ+ξ^i ξi≥0,ξ^i≥0,i=1,2,⋯ ,mmin_{w,b,\xi_i,\hat\xi_i}~~~~\frac{1}{2}||w||^2+C\sum_{i=1}^{m}(\xi_i+\hat\xi_i)\\s.t.~~~~f(x_i)-y_i \leq \epsilon+\xi_i \\~~~~~~~~~~y_i - f(x_i) \leq \epsilon + \hat\xi_i\\~~~~~~~~~~~~~~~~~~~~~~~~~~~~\xi_i\geq0,\hat\xi_i\geq0,i=1,2,\cdots,mminw,b,ξi,ξ^i 21∣∣w∣∣2+Ci=1∑m(ξi+ξ^i)s.t. f(xi)−yi≤ϵ+ξi yi−f(xi)≤ϵ+ξ^i ξi≥0,ξ^i≥0,i=1,2,⋯,m
在对新样本进行预测时,计算的wTx+b=∑i=1m(α^i−αi)xiTx+bw^Tx+b = \sum_{i=1}^{m}(\hat\alpha_i-\alpha_i)x_i^Tx+bwTx+b=∑i=1m(α^i−αi)xiTx+b。落在间隔带之间的样本点的系数αi=0,α^i=0\alpha_i=0,\hat\alpha_i=0αi=0,α^i=0,而支持向量是使(αi^−αi)≠0(\hat{\alpha_i}-\alpha_i) \neq 0(αi^−αi)̸=0的样本点,他们落在间隔带之外。支持向量的个数仍远小于训练样本数目,计算过程仍然比较高效。
SVR中对新样本进行预测时仍然出现了内积的形式,将内积转换为核函数K(x,z)K(x,z)K(x,z)即可以进行映射到高维空间进行回归计算。
8 实现
libsvm && sklearn
9 参考
CS229
周志华《机器学习》
才疏学浅,若有错误,欢迎批评指正!