机器学习技法学习笔记-chapter01

1-1 Course Introduction

  • 课程网址连接:
  1. Coursera:没找到
  2. Bilibili:https://www.bilibili.com/video/av12469267

1-2 Large-Margin Separating Hyperplane

回顾一下linear classification,对于线性可分的情况,我们可以使用PLA/pocket算法在平面或者超平面上把正负类分开

例如对平面2D这种情况,我们可以找到一条直线,能将正类和负类完全分开

单从分类效果上看,上面的三条直线都满足要求,而且都满足VC bound要求,模型复杂度是一样的,即具有一定的泛化能力。但是,正常人凭第一感觉还是会选择第三条直线,直观上会感觉它的分类效果更好一些。那这又是为什么呢?

我们知道,一般情况下,训练样本外的测量数据应该分布在训练样本附近,但与训练样本的位置有一些偏差

若要保证对未知的测量数据也能进行正确分类,最好让分类直线距离正类负类的点都有一定的距离。这样能让每个样本点附近的圆形区域是“安全”的。圆形区域越大,表示分类直线对测量数据误差的容忍性越高,越“安全”

如上图所示,左边的点距离分类直线的最小距离很小,它的圆形区域很小。那么,这种情况下,分类线对测量数据误差的容忍性就很差,测量数据与样本数据稍有偏差,很有可能就被误分。而右边的点距离分类直线的最小距离更大一些,其圆形区域也比较大。这种情况下,分类线对测量数据误差的容忍性就相对来说大很多,不容易误分。 

那么,如果每一笔训练资料距离分类线越远的话,就表示分类型可以忍受更多的测量误差(noise)。

noise是造成overfitting的主要原因,而测量误差也是一种noise。所以,如果分类线对测量误差的容忍性越好的话,表示这是一条不错的分类线。那么,我们的目标就是找到这样一条最“健壮”的线,即距离数据点越远越好。

定义分类线的容忍度,就是看距离分类线最近的点与分类线的距离,我们把它用margin表示。分类线由权重w决定,目的就是找到使margin最大时对应的w值。整体来说,我们的目标就是找到这样的分类线并满足下列条件

  • 分类正确,即y_{n}w^{^{T}}x_{n}>0
  • margin最大化

 1-3 Standard LargeMargin Problem

 如何计算点到分类线的距离?

首先,我们将权重\mathbf{w} \left ( w_{0},w_{1},...w_{d}\right )中的w_{0}拿出来,用b表示。同时省去x_{0}项。这样,hypothesis就变成了h\left ( x \right )=sign\left ( w^{T} \right x+b )

下面,利用图解的方式,详细推导如何计算点到分类平面的距离:

如上图所示,平面上有两个点:x'和x''。因为这两个点都在分类平面上,所以它们都满足:

w ^{T}x^{'}+b=0

w ^{T}x^{''}+b=0 

同时可以得到:w^{T}x^{'}=-b,w^{T}x{''}=-b,则有:

(x'',x')是平面上的任一向量,(x'',x')与w内积为0,表示(x'',x')垂直于w,那么w就是平面的法向量。现在,若要计算平面外一点x到该平面的距离,做法是只要将向量(x,x')投影到垂直于该平面的方向(即w方向)上就可以了。那么,令(x'',x')与w的夹角为\Theta,距离就可以表示为: 

代入w^{T}x^{'}=-b,可得: 

点到分类面(Separating Hyperplane)的距离已经算出来了。基于这个分类面,所有的点均满足:y_{n}\left ( w^{T} \right x+b )>0,表示所有点都分类正确,则distance公式就可以变换成: 

那么,我们的目标形式就转换为:

对上面的式子还不容易求解,我们继续对它进行简化。我们知道分类面w^{T}x+b=03w^{T}x+3b=0其实是一样的。也就是说,对w和b进行同样的缩放还会得到同一分类面。所以,为了简化计算,我们令距离分类满最近的点满足y_{n}\left ( w^{T} \right x+b )=1。那我们所要求的margin就变成了: 

这样,目标形式就简化为: 

这里可以省略条件:y_{n}\left ( w^{T} \right x+b )>0 ,因为满足条件y_{n}\left ( w^{T} \right x+b )=1必然满足大于零的条件。我们的目标就是根据这个条件,计算\frac{1}{\left \| w \right \|} 的最大值。

刚刚我们讲的距离分类满最近的点满足y_{n}\left ( w^{T} \right x+b )=1,也就是说对所有的点满足y_{n}\left ( w^{T} \right x+b )\geq 1。另外,因为最小化问题我们最熟悉也最好解,所以可以把目标\frac{1}{\left \| w \right \|} 最大化转化为计算\frac{1}{2}w^{T}w的最小化问题。

如上图所示,最终的条件就是y_{n}\left ( w^{T} \right x+b )\geq 1,而我们的目标就是最小化\frac{1}{2}w^{T}w值。 

1-4 Support Vector Machine

现在,条件和目标变成:

现在,举个例子,假如平面上有四个点,两个正类,两个负类:

 

不同点的坐标加上y_{n}\left ( w^{T} \right x+b )\geq 1条件,可以得到:

最终,我们得到的条件是:

 

而我们的目标是:

目标最小值为1,即w_{1}=1 ,w_{2}=-1 ,b=-1,那么这个例子就得到了最佳分类面的解,如图所示,且margin(b,w)= \frac{1}{\left \| w \right \|}=\frac{1}{\sqrt{2}}。分类面的表达式为:

最终我们得到的矩的表达式为: 

Support Vector Machine(SVM)这个名字从何而来?为什么把这种分类面解法称为支持向量机呢?这是因为分类面仅仅由分类面的两边距离它最近的几个点决定的,其它点对分类面没有影响。决定分类面的几个点称之为支持向量(Support Vector),好比这些点“支撑”着分类面。而利用Support Vector得到最佳分类面的方法,称之为支持向量机(Support Vector Machine)。 

下面介绍SVM的一般求解方法。先写下我们的条件和目标:

这是一个典型的二次规划问题,即Quadratic Programming(QP)。因为SVM的目标是关于w的二次函数,条件是关于w和b的一次函数,所以,它的求解过程还是比较容易的,可以使用一些软件(例如Matlab)自带的二次规划的库函数来求解。下图给出SVM与标准二次规划问题的参数对应关系: 

那么,线性SVM算法可以总结为三步:

  • 计算对应的二次规划参数Q,p,A,c
  • 根据二次规划库函数,计算b,w
  • 将b和w代入,得到最佳分类面 

这种方法称为Linear HardMargin SVM Algorithm。如果是非线性的,例如包含x的高阶项,那么可以使用我们之前在《机器学习基石》课程中介绍的特征转换的方法,先作z_{n}=\Phi \left ( x_{n} \right )的特征变换,从非线性的x域映射到线性的z域空间,再利用Linear HardMargin SVM Algorithm求解即可。

1-5 Reasons behind LargeMargin Hyperplane

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值