机器学习7:SVM(支持向量机)

优化目标

  • 对于逻辑回归的假设函数而言,在y=1的情况下,我们希望假设函数约等于1,且z远大于0;在y=0的情况下,我们希望假设函数约等于0,且z远小于0。

  • 对于支持向量机,则希望在y=1的情况下,z大于等于0,;在y=0的情况下,z取其他值(小于0)

  • 对于逻辑回归的代价函数,其中的 l o g h θ ( x ) logh_\theta(x) 替代为 c o s t 1 ( z ) cost_1(z) ,这两个函数的图如下:
    在这里插入图片描述
    其中的 l o g ( 1 h θ ( x ) ) log(1-h_\theta(x)) 替代为 c o s t 0 ( z ) cost_0(z) ,这两个函数的图如下:
    在这里插入图片描述

也就是说,在y=1的情况下,目标函数需要z大于等于1;在y=0的情况下,目标函数需要z小于等于-1。

  • 对于支持向量机的代价函数而言,如上所述替代后,再去掉m项,将 λ \lambda 用C代替( C = 1 λ C=\frac{1}{\lambda} ),如下所示:
    在这里插入图片描述

大间距分类器

如上所述,在y=1的情况下,目标函数需要z大于等于1;在y=0的情况下,目标函数需要z小于等于-1。

也就是说,对于决策边界(z=0)而言,与训练样本的距离尽量保持在1以上,因此会纠正过拟合的问题,取分类两组数据的中间,与双方保持一定距离的线为边界,如下方的margin(圆圈和红叉表示两种类型的样本):在这里插入图片描述

但是如果C取值过大,也即 λ \lambda 的值过小,即便采用上述算法还是会容易过拟合,如下:
在这里插入图片描述

数学原理

目标函数中,有该项 m i n θ 1 2 j = 1 n θ j 2 min_\theta\frac{1}{2}\sum_{j=1}^n\theta_j^2 ,也即等同于求向量 θ \theta 的长度平方的二分之一: 1 2 θ 2 \frac{1}{2}|\theta|^2

因此,在决定决策边界时,如果如下图所示( θ T x ( i ) \theta^Tx^{(i)} ,相当于两个向量的内积):
在这里插入图片描述
由于上图所示,样本 x ( i ) x^{(i)} 投影到向量 θ \theta (注意的是,向量 θ \theta 与决策边界垂直,因为与决策边界的内积z为0)上的值p较小,而为了与p值相乘大于等于1或小于等于-1,就会导致 θ |\theta| 的值较大,不符合目标函数的预期。

如果如下图所示:
在这里插入图片描述

那么,样本投影到向量 θ \theta 上得到的值p较大,同理,可知,能使 θ |\theta| 的值较小,符合目标函数的预期。

核函数一

对于非线性边界如下图所示的,在逻辑回归中通常采用多项式构造特征: x 1 x 1 2 x 1 x 2 . . . . . . x_1、x_1^2、x_1x_2、......
在这里插入图片描述
而如果采用支持向量机这一算法,那就要将 x i x_i 替代为 f i f_i
f i f_i 的定义如下:
f i = e x p ( x l ( i ) 2 2 σ 2 ) = e x p ( j = 1 n ( x j l j ( i ) ) 2 2 σ 2 ) f_i=exp(-\frac{|x-l^{(i)}|^2}{2\sigma^2})=exp(-\frac{\sum_{j=1}^n(x_j-l^{(i)}_j)^2}{2\sigma^2})
其中的 x x 为输入特征, l ( i ) l^{(i)} 为下图中的点(可表示为长度为特征数目n的向量):
在这里插入图片描述
f i f_i 的性质有:如果 x = l ( i ) x=l^{(i)} ,则 f i = 1 f_i=1 ;如果如果 x x l ( i ) l^{(i)} 相差过大,则 f i 0 f_i\approx0

f i f_i 中的 σ \sigma 过小时,容易低偏差,高方差,过大时容易高偏差,低方差,当 f i = [ 3 5 ] f_i={3\brack 5} 时, f i f_i 的图像如下:
在这里插入图片描述

θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 0 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3\ge0 时,y=1。

核函数二

在这里插入图片描述
如上图所示,将训练集 x ( i ) x^{(i)} 作为 l ( i ) l^{(i)} ,所以参数f是m+1维向量(包括 f 0 f_0 )。

代价函数:
在这里插入图片描述

使用

  • 需要制定C( 1 λ \frac{1}{\lambda} )和 σ \sigma 。但是线性核函数(大间距分类器)不用,上面的核函数一和核函数二指的是高斯核函数。

  • 需要对x进行特征缩放或均值归一化,因为涉及平方,数据较大。

  • 其他核函数: k ( x , l ) = ( x T l ) 2 , ( x T l ) 3 , ( x T l + 1 ) 3 , . . . k(x,l)=(x^Tl)^2,(x^Tl)^3,(x^Tl+1)^3,...
    在这里插入图片描述

  • 对于多分类问题,可以像逻辑回归一样,训练多个分类器,一一分类即可。

  • 如果特征数目比样本数量多(比如文本处理),则应该用线性核函数(大间距分类器)或逻辑回归,否则,应该用高斯核函数。
    但是,如果样本数量特别多,比如样本数量50w以上,特征数目1k左右,则应当增加特征(多项式或额外特征),然后再用线性核函数(大间距分类器)或逻辑回归(因为在样本数量多的情况下,简单的算法反而比高级算法性能好)

  • 神经网络可以应用于上述大部分情况,不过运算量较大,可能处理过慢

猜你喜欢

转载自blog.csdn.net/wycgi/article/details/84666716