上一讲讲了如何将kernel的思想结合Logistic Regression,应用到Soft-binary Classification中。这讲来看一下如何将SVM技巧应用到回归算法中
上一讲我们证明了任何的包含L2正则化的线性模型,它的最佳的w*都可以写成是关于Zn的线性组合。我们之前L2正则化的线性模型的求解表达式如下所示,按照前面的证明,我们就可以使用kernel来将我们的模型kernel化
其中表达式中的误差衡量err是如下的平方误差,计算预测值和真实值之间的差距,使用最小二乘法就可以得到他的最优解析解
将其代入到上面的min的表达式后,得到Kernel Ridge Regression问题的表达式
最优解是Z的线性组合,将其带入上述表达式,同时将ZnZm用K(xn,xm)代替,最后用向量表示得到如下关于βn的问题
求解上面的问题同样可以求它关于β的梯度
上式是关于β的二次多项式,计算梯度,令其梯度值为零,得到β的解。经过前面的学习我们知道括号中的部分一定是可逆的(半正定矩阵加一个单位阵的倍数),而K是Z空间的内积,一般情况都不为零。这就说明使用Kernel技巧来解决回归问题是可行的
下面我们看一下使用ridge的线性回归和使用kernel技巧的线性回归的区别。左下图表示linear ridge regression,它的拟合线是一条直线,计算得到的W的解如下红框所示,训练和预测的复杂度如下蓝框所示,在N远大于d时是很有效的;而右下图是kernel ridge regression,它的拟合线是一条曲线,得到的β的解如黄框所示,更加的灵活,同时它的相关的复杂度如下所示,均只与N相关,适合N不大的场景。所以可以说linear和kernel实际上是效率(efficiency)和灵活(flexibility)之间的权衡
通常将这种叫做least-squares SVM(LSSVM)。接下来看一下soft-margin Gaussian和Gaussian LSSVM效果的对比,看分类的边界两者都相差不多,很难看出有什么差距;但是使用Gaussian LSSVM的支持向量(方框所圈)的个数要多很多(β解大部分都是非零的),即β的解是很密集的。所以它的计算量相对就比较大,计算速度慢,故soft-margin Gaussian在实际使用中更有优势
那么是否有办法解决β密集的问题呢?下面引入Tube Regression,即在分类线上下分别划定一个区域(中立区),如果数据点分布在这个区域内,则不算分类错误,只有误分在中立区域之外的地方才算error。假设中立区宽2ε,那么误差衡量为框所示,而图中红色的距离可以表示为蓝框所示的样子,通常把这个error叫做ε-insensitive error,这种max的形式跟我们上节课中介绍的hinge-error measure形式其实是类似的。所以,我们接下来要做的事情就是将L2-regularized tube regression做类似于soft-margin SVM的推导,从而得到稀疏的β
接下来将tube regression和前面的squared regression做一个对比,err(y,s)的值表现在图像中就是红线的长度
然后将s和err的关系画图,可以看到在|s-y|较小的区域的附近,两条线很接近,但是当s很小或是很大时,square的增长速度大于tube。error的增长幅度越大越容易受到噪声的影响,不利于最优化问题的求解。所以从这个方面来看,tube regression要更好一些
所以使用了L2正则化的tube regression的表达式如下所示
上述问题由于其中包含max项,并不能保证处处可微分,所以不适合用GD/SGD来求解。而且,虽然满足representer theorem,有可能通过引入kernel来求解,但是也并不能保证得到稀疏的β 。但我们可以把这个问题转换为带条件的QP问题,仿照dual SVM的推导方法,引入kernel,得到KKT条件,从而保证解是稀疏的,转换的表达式如下所示
仿照前面SVM的做法,将其转换成满足QP问题的形式,如下右图所示,将其叫做Support Vector Regression(SVR) primal
转换后的问题的表达式如下所示
其中C表示的是regularization和tube violation之间的权衡。large C倾向于tube violation,small C则倾向于regularization。
表征了tube的区域宽度,即对错误点的容忍程度。越大,则表示对错误的容忍度越大。ε是可设置的常数,是SVR问题中独有的,SVM中没有这个参数。SVR的QP形式共有d+1+2N个参数,2N+2N个条件
和前面一样,引入拉格朗日因子α将其转换成dual形式,然后求其偏导数为零的点得到KKT条件
仿照SVMprimal和SVMdual,将SVR primal 转成SVR dual
计算得到w的解如下,以及相应的complementary slackness
经过如下的证明,我们就得到了SVR的sparse解
下面将学习的linear models做一个总结
又引入了如下的不同的支持向量机和使用核技巧的其他算法
具体的核函数有多项式函数、高斯核函数以及自己根据应用场景设计的其他核函数
最后做一个总结,我们将kernel引入到了L2正则化的回归算法中,提出了SVR,并推导出了它的求解表达式,最终得到了sparse β的解。接着对前面学过的模型做了个总结,简述了各自的特点