zoukankan      html  css  js  c++  java
  • svm之大间距分类(斯坦福machine learning week 6)

    1 构建支持向量机

    拥有了这些定义之后,现在我们就开始构建支持向量机。

    1.1 替换逻辑回归函数

    这就是我们在逻辑回归中使用的代价函数J(θ):
    这里写图片描述

    J(θ)=1mi=1m[y(i) log(hθ(x(i)))+(1y(i)) log(1hθ(x(i)))]+λ2mj=1nθ2j

    对于支持向量机而言,实际上,我们要将

    上面式子中的这一项:(loghθ(x(i)))替换为:cost1(z),即:cost1(θTx(i))
    同样,这一项:((log(1hθ(x(i)))))替换为:cost0(z):cost0(θTx(i))
    其中cost分别为下面的红线:

    图片描述
    我们命名为cost1(z)
    图片描述

    我们命名为cost2(z)

    这里替换之后的cost1(z)cost0(z)就是上面提到的那两条靠近逻辑回归函数的折线。

    所以对于支持向量机的最小化代价函数问题,代价函数的形式如下:

    minθ1m[mi=1y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+λ2mnj=1θ2j

    1.2 去除多余的常数项 1m

    现在按照支持向量机的惯例,我们去除1m这一项,因为这一项是个常数项,即使去掉我们也可以得出相同的θ最优值:

    minθi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+λ2j=1nθ2j

    1.3 正则化项系数的处理

    在逻辑回归的目标函数中,我们有两项表达式:

    来自于训练样本的代价函数:

    1m[i=1my(i)(loghθ(x(i)))+(1y(i))((log(1hθ(x(i)))))]

    正则化项:
    λ2j=1nθ2j

    我们不得不使用正则化项来平衡我们的代价函数。这就相当于:

    A+λB

    其中A相当于上面的第一项,B相当于第二项。

    我们通过修改不同的正则化参数λ来达到优化目的,这样我们就能够使得训练样本拟合的更好。

    但对于支持向量机,按照惯例我们将使用一个不同的参数来替换这里使用的λ来实现权衡这两项的目的。这个参数我们称为C。同时将优化目标改为:

    CA+B

    因此,在逻辑回归中,如果给λ一个很大的值,那么就意味着给与B了一个很大的权重,而在支持向量机中,就相当于对C设定了一个非常小的值,这样一来就相当于对B给了比A更大的权重。

    因此,这只是一种来控制这种权衡关系的不同的方式。当然你也可以把这里的C当做farc1λ来使用。

    因此,这样就得到了在支持向量机中的我们的整个优化目标函数:

    minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθ2j

    最后有别于逻辑回归的一点,对于支持向量机假设函数的形式如下:

    hθ(x)=1   if θTx0

    hθ(x)=0   if θTx<0

    而不是逻辑回归中的S型曲线:

    hθ(x)=11+ex

    2 由逻辑回归到svm

    安全距离因子

    事实上,在逻辑回归中:

    如果你有一个正样本,即y=1的情况下,我们仅仅需要 heta^{T}xge0;
    如果你有一个负样本,即y=0的情况下,我们仅仅需要 heta^{T}xlt0;

    就能将该样本恰当的分类了。

    但是支持向量机的要求更高,不仅仅要求θTx0θTx<0,而且要求θTx比0大很多,或小很多。比如这里要求θTx1以及θTx1

    这就相当于在支持向量机中嵌入了一个额外的安全因子(或者说是安全距离因子)。接下来让我们来看看这个因子会导致什么结果:

    具体而言,我接下来会将代价函数中的常数项C设置成一个非常大的值,比如100000或者其他非常大的数,然后再来观察支持向量机会给出什么结果。

    当代价函数中

    minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθ2j

    C的值非常大时,则最小化代价函数的时候,我们会很希望找到一个使第一项:

    i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]

    为0的最优解。

    可以看到当输入一个正样本y(i)=1时,我们想令上面这一项为0,从图中可以得出

    对于代价函数cost1(z)我们需要使得θTx(i)1

    类似地,对于一个负训练样本y(i)=0时,我们想令上面这一项为0,从图中可以得出

    对于代价函数cost0(z)我们需要使得θTx(i)1

    这样一来会产生下面这种优化问题:

    因为我们将选择参数使第一项为0,因此这个函数的第一项为0,因此是:

    minθC0+12j=1nθ2j

    我们知道是C0的结果是0,因此可以删掉,所以最终得到的结果是:

    minθ12j=1nθ2j

    其中:

    y(i)=1时,则θTx(i)1
    y(i)=0时,则θTx(i)1

    这样我们就得到了一个非常有趣的决策边界。

    3 SVM决策边界:线性分割案例

    支持向量机会选择黑色的这一条直线:
    图片描述

    这条直线看起来好很多,因为它看起来更加稳健。在数学上来讲就是这条直线拥有相对于训练数据更大的最短距离,这个所谓的距离就是指间距(margin),而之前两条粉线和蓝线距离训练样本非常近,在分离样本时就会表现的比黑线差。

    当有一个异常值产生时:
    图片描述
    这里写图片描述

    我们的算法会受到异常值的影响。这时我们将支持向量机中的正则化因子CC设置的非常大,那么我们会得到类似这样一条粉色的决策边界:
    这里写图片描述

    那么我们仅仅通过一个异常值,就将我们的决策边界旋转了这么大的角度,实在是不明智的。
    这里写图片描述

    当我们的正则化因子CC的值非常大时,支持向量机确实会如此处理,但如果我们适当的减小CC的值,你最终还是会得到那条黑色的决策边界的。

    如果数据是线性不可分的话,像这样:
    这里写图片描述

    支持向量机也可以恰当的将它们分开。

    值得提醒的是CC的作用其实等同于1λ1λ,λλ就是我们之前用到的正则化参数。在支持向量机中,CC不是很大的时候,可以对包含异常数据、以及线性不可分的数据有比较好的处理效果。

    稍后我们还会介绍支持向量机的偏差和方差,希望到那时候关于如何处理参数的这种平衡会变得更加清晰。

    4 大间距分类器背后的数学原理

    这里写图片描述
    其中我们用||u||来表示u的范数(即u的长度),因此||u||的计算公式如下:

    ||u||=u21+u22

    这里写图片描述

    投影之后的长度就是图中红线p的长度:

    p=vu

    同时也有另外一种计算内积的方式:

    uTv=p||u||

    5 SVM决策边界

    现在我们知道:

    minθ12j=1nθ2j

    其中条件是:

    y(i)=1θTx(i)1
    y(i)=0θTx(i)1

    根据第四小节可以写成:

    minθ12j=1nθ2j=12||θ||2

    这里的约束项是可以用p^{(i)}·|| heta||来替代的:
    y(i)=1时,则p(i)||θ||1
    y(i)=0时,则p(i)||θ||1

    由于决策边界和参数向量是正交的(斜率相乘结果为-1)(为什么决策边界和参数向量是正交的),我们可以绘制出对应的参数向量θ:

    这里写图片描述

    这里由于我们指定了θ0=0θ0=0,也就意味着决策边界是过原点的。

    我们可以画出这个样本向量到θθ的投影p(1):
    这里写图片描述

    类似的,我们也可以画出第二个样本向量到θ的投影p(2):
    这里写图片描述

    我们会发现,这些p(i)p(i)将会是一些非常小的数。因此当我们考察优化目标函数的时候:

    对于正样本(y(i)=1y(i)=1,即图中的”x”样本)而言,我们需要p(i)⋅||θ||≥1p(i)·||θ||≥1,由于p(i)p(i)非常小,也就意味着||θ||||θ||需要非常大。

    对于负样本(y(i)=−1y(i)=−1,即图中的”o”样本)而言,我们需要p(i)⋅||θ||≤−1p(i)·||θ||≤−1,由于p(i)p(i)非常小,也就意味着||θ||需要非常大。

    但我们的实际目标是希望找到一个参数θθ,使得它的范数||θ||||θ||是尽可能小的,因此这并不是一个好的决策边界,因为我们的||θ||比较大。

    对于下面这个决策边界来说,情况就会有很大的不同:
    如果我们现在再来绘制出样本向量在参数向量上的投影p(1)p(1)和p(2)p(2)的话,你会发现这些投影的长度比之前长多了:

    这里写图片描述

    最后一点,我们的推导自始至终都使用了截距为0(即θ0=0)这个简化假设。这样做的作用就是可以使得决策边界始终是通过原点的,如果你的决策边界不过原点,那么θ0≠0,但支持向量机会产生大间距分类器的结论依然成立(具体推导过程不再叙述,和这里很类似)。但是可以说明的是,即便θ0≠0,支持向量机仍然会找到正样本和负样本之间的大间距分隔。总之 我们解释了为什么支持向量机是一个大间距分类器。

  • 相关阅读:
    开关门(结构体)
    洗牌问题(找规律)
    七夕节(hd1215)干嘛今天做这题T_T
    三角形(hd1249)
    寒冰王座(hd1248)
    钱币兑换问题(hd1284)
    计算机模拟(hd1283)
    回文数猜想(hd1282)
    贪吃蛇代码
    变形课hd1181(DFS)
  • 原文地址:https://www.cnblogs.com/zswbky/p/8454064.html
Copyright © 2011-2022 走看看