美文网首页
吴恩达机器学习—支持向量机

吴恩达机器学习—支持向量机

作者: 魏清宇 | 来源:发表于2019-01-21 16:08 被阅读0次

    优化目标

    逻辑回归 替代角度的逻辑回归

    考虑两种情况,y=1和y=0时,根据样本数据可以得到损失函数图上分别如上左图和上右图所示,使用紫色线描绘的图像替代原来的损失函数图,并记为cost_{1}(z)和cost_{2}(z)  ,z=\theta ^Tx,得到SVM损失函数如下:

    SVM的损失函数

    将逻辑回归中的m,\lambda 去掉,在第一项前面加上m 作为控制第一项和后面正则项权重的参数,即得到SVM的损失函数,当c=\frac{1}{\lambda } 时,两个损失函数在形式上相等(但是实际上两个参数没有什么关联)。

    直观上对大间隔的理解

    SVM

    当我们用上面的图代替原图的时候,对于样本y=1,逻辑回归中只要\theta ^Tx\geq 0则会将样本分类为1,但此时,需要\theta ^Tx\geq 1才可以。同样的对于y=0,需要\theta ^Tx\leq -1

    当C非常大的时候,为了最小化损失函数,我们希望能找到参数,使得损失函数的第一项等于0。

    SVM的决策边界

    SVM也成为大间距分类器,因为它能把样本最大距离的分开,两条蓝线之间的距离成为margin.

    大间距分类器是在C设的非常大的情况下得出的,并且在使用大间距分类器的时候,学习算法对异常点非常敏感,如果C设的非常大,当存在异常点的时候,决策边界会变为下图紫线部分,如果C没有设的很大,则决策边界仍然是黑线:

    SVM中C的作用

    当C的大小适当的时候,SVM会实现很好的分类,即使是非线性可分的数据,也会处理的很好。

    SVM的数学原理

    .SVM中向量内积的含义

    当SVM损失函数中的C很大的时候,为了最小化损失函数,第一项趋近于0,则我们的目的变成最小化损失函数中的正则项,假设只存在两个特征,x_{1} 和x_{2} \theta ^Tx可表示为坐标图中所示。

    SVM决策边界的形成

    核函数 Kernels

            利用SVM构构造复杂的非线性分类器

    构造非线性分类器

    当我们需要一个非线性决策边界的时候我们可以构造一个多项式模型,当多项式大于零的时候我们认为类别为1,否则为0.我们构造一个新的多项式模型\theta _{0}+ \theta _{1}f_{1}+  \theta _{2}f_{2}+ \theta _{3}f_{3}+....表示我们新的模型,其中f_{n} 为我们要选择的特征,那么,为了构造一个好的非线性分类器,我们应该选择什么特征呢。

    特征构建

    核函数的定义

    给定一个样本x,我们要寻找一些新的特征来表示他,在坐标系中选择三个点,即landmark,分别为l^1,l^2,l^3,定义x的新的特征为x与这些点的相似度,即f_{1}=similarity(x,l^1 ) ,其中,这个相似度的测量函数就成为kernel,核函数,上图中利用的核函数为高斯核函数。实际上,核函数的种类有很多,目前最常用且效果最好的就是高斯核函数。

    核函数与相似度

    因此,核函数用来为样本x构造了新的特征。f 测量了样本x到lanmarkl之间的距离,这个距离在(0,1)之间。具体的变化如下图所示,以高斯核函数为例:

    \sigma ^2=1,样本x与标记l相同即x=(3,5)时,其位于上图的顶点f_{1}=1 位置,随着x离标记l的距离扩大,他慢慢下移到f_{1} =0。随着\sigma ^2的不断扩大,下移的速度越来越慢。在完成特征选择以后,我们来看预测函数会变成什么样:

    预测函数

    构造非线性分类器

    当我们根据相似度构建出新的特征以后,我们可以表示我们新的预测模型:假设预测模型为当\theta _{0}+\theta _{1}  f_{1} +\theta _{2}  f_{2} +\theta _{3}  f_{3}>0 y=1。假设我们已经通过某种算法得到参数\theta _{0}, \theta _{1},\theta _{2},\theta _{3}的值,对于摸一个样本x,如上图坐标图中的紫色的点,我们可以看出其距离l^1 较近,因此f_{1} \approx 1,距离l^2,l^3较远,因此f_{2} \approx 0,f_{3} \approx 0,带入预测模型中,如紫色公式所示,结果为0.5>0,因此样本的预测标签y=1。同理可计算途中蓝色点与绿色的点。经计算可知距离l^1, l^2较近的点分类为1,距离他们较远的点分类为0,因此,决策边界可能为图中红线所示。

    标记的选择

    标记的选择

    在构造特征之间,我们先要进行标记的选择,一种方法就是,将训练集中每一个样本点都看做一个标记,这样有m个样本点,就能得到m个标记,这样就相当于特征函数计算了每一个样本点到样本集中其他样本点的距离。具体过程如下:

    构造特征向量的过程

    给定样本集,将样本集中的每一个点都视为标记,计算每一个点到其他所有点的相似度,得到m维特征向量。对于某一个样本点x^i,就得到了它的m维特向量f^i=[f_{1}^i,f_{2}^i,...,f_{m}^i,],在这个向量中,肯定有一个是样本点本身与自己的相似度值,既有一个l^1=x^i,所以有一个特征值为1。这样对于每一个样本点,都有一个m维的特征向量。可也以将f_{0} 加进去,形成m+1维向量。

    加入核函数后的SVM过程

    在有核函数的情况下,对于具有m个样本的训练集,给定样本x,首先根据核函数找到样本点的特征向量f,特征的构建通过计算样本点与样本集中其他样本点之间的相似度获得;通过损失函数最小化求得参数,此时正则项对所有的参数进行惩罚,一共有m个参数,因为在进行正则化的时候通常会忽略常数\theta _{0} 。在包含核函数的SVM中,通常会把正则项写成上图蓝色的形式\theta ^TM\theta ,进行特征缩放,在计算时能提高计算效率。

    参数C的选择

    参数C的效果与原正则系数\lambda 相似,当C较大的时候,类似于较小的\lambda ,会产生过拟合,使得偏差较小而方差较大;当C较小的时候,会产生欠拟合,偏差较大而方差较小。对于核函数中的参数\theta ^2,当其较大的时候,特征向量变化较慢,表示样本x 的变化较为平缓,此时容易产生欠拟合,即高偏差,低方差;当其较小的时候,表示样本x的曲线较为迅速,因此容易产生过拟合,即低偏差,高方差。

    使用SVM

    选择核函数

    可以使用SVM软件包来实现SVM,如果要自己进行SVM,则要选择合适的参数C和核函数。比如,你可以不使用核函数,这也等价于使用线性核函数,这适合于样本数量较少的情况,因为样本数量少的时候,若构造太多特征,容易产生过拟合。你也可以选择高斯核函数,这适合样本数目较多的情况。

    在进行核函数算法计算时,首先要定义一个核函数,线性核函数和高斯核函数是最常用的核函数。同时,在使用高斯核函数之前,一定要进行特征缩放。比如,要进行放假预测,特征有房屋面积1000平方,房间数量1-5等,如果不进行特征缩放,在进行计算的时候,数量级较小的特征的影响力可能会被缩小甚至被忽略。

    除了线性核函数和高斯核函数,也可以使用其他相似函数作为核函数,但是并不是所有的函数都能作为核函数,能作为核函数的函数都必须满足一个定理——默塞尔定理。这个定理保证所有的SVM工具包的优化算法能正确的运行,因为再进行SVM计算的时候,运用了很多数值技巧以求得参数,而这些技巧的满足都是在符合默塞尔定理的基础上进行的。除了高斯核函数和线性核函数,以下还有几个其他的核函数和,但并不常用:

    几种核函数 SVM中的多分类问题

    和逻辑回归进行多分类问题一样,SVM首先将其中一个类别同其他类别分类,再区分第二类与其他的类别,依次区分不同的类别。

    SVM与逻辑回归的对比

    当n>m时,选择逻辑回归或线性核函数;如果n较小,m适中,则选择高斯核函数的SVM;若n很小而样本数m很大,则可以创造更多特征,然后选择逻辑回归或线性核函数。

    逻辑回归和线性核函数再计算上非常相似,同一问题两种方法的表现可能一样好,也可能有一种会优于另一种。

    神经网络可能更适合与多种情况,但是神经网络训练起来较为缓慢,而且SVM求出的结果是全局最优,使用它的时候不用担心局部最优的情况。

    在进行学习算法选择的时候,更重要的是你有多少数据,你有多熟练,是否擅长做误差分析和排除学习,设定新的特征变量等,这些问题比选择一个算法更重要。

    相关文章

      网友评论

          本文标题:吴恩达机器学习—支持向量机

          本文链接:https://www.haomeiwen.com/subject/eabndqtx.html