吴恩达机器学习(四) (支持向量机SVM)

吴恩达机器学习(四) (支持向量机SVM)_第1张图片
首先回顾一下logistics回归中的sigmoid函数
当θTx远大于0时hθ(x)无限接近于1,那么我们给他一种对应情况,y=1。反之亦然。

吴恩达机器学习(四) (支持向量机SVM)_第2张图片
回忆起cost函数(坐标系中的红框),坐标系纵坐标就是cost代价
吴恩达机器学习(四) (支持向量机SVM)_第3张图片
我们对比一下上一篇学习的理解cost函数的图像,上一篇中的横坐标是hθ(x),而这里的横坐标是Z=θTx。当hθ(x)等于零代价函数也为零可以表达y=1的时候,所需要的Z是无穷大的(需要e-θ转置x为零则θTx无穷大)。

吴恩达机器学习(四) (支持向量机SVM)_第4张图片
现在我们去做两条线,一条是水平贴合在z轴上的,一条是类似拟合这个logistics函数的直射线,我们称他为cost1(z),然后y=0的时候同样有它,我们称之为cost0(z)。
我们称之为支持向量机
他在优化问题上比logistics有着一定的优势。
吴恩达机器学习(四) (支持向量机SVM)_第5张图片
对于我们熟悉的logistics回归正则化中的代价函数公式,我们如果要求设么θ是最小值的时候,可以不看m,因为m不决定θ取什么值时代价最小。这样一来我们的研究对象就转移到了λ上了。如果λ越大,说明更加重视正则项的优化。
吴恩达机器学习(四) (支持向量机SVM)_第6张图片
对于新概念SVM,我们知道当提出一个新概念时候我们不能将和老概念混淆了。所以这里使用新参数C来权衡两个项之间的权重(C值一般不需要设置很大的数字,这个后面解释)。
在这里插入图片描述
所以SVM的目的就是
通过上面这个式子来选定最的θ参数(θ不一定很大或很小),然后再通过θTx是否大于来预测判断这个hθ(x)≈y=0/1(sigmoid函数关系)。
吴恩达机器学习(四) (支持向量机SVM)_第7张图片

大间隔分类器

吴恩达机器学习(四) (支持向量机SVM)_第8张图片
最上面所说sigmoid的z=θTx远大于远小于0现在换一个说法。
由于这个svm的转折点是1和-1.我们就说这个z小于-1或者大于1的时候y分别对应着0和1的y情况。
吴恩达机器学习(四) (支持向量机SVM)_第9张图片
在优化问题中,我们需要保证蓝色方框中的式子(代价)尽可能为0,那么前面这一项就是C*0,可以忽略不计了,这样我们就把问题集中在了后面的1/2Σθj2上了。当发生两种情况y=0/1时,分别可以对应θTx>=1和θTx<=-1(可以看再之前的那张图观察)。

支持向量机的直观体现

先来几个图直接理解他的作用,可能有点懵,解释在后面。
支持向量可以自动选择下面很多决策边界中的黑色线条,因为黑色线条 到大正负样本的最小距离是最大的,我们称这个距离为支持向量机的距离margin。
吴恩达机器学习(四) (支持向量机SVM)_第10张图片
当正负样本中有几个对面的敌人掺杂在里面的时候,这时候将C不用设置很大的优势就体现出来了(C从大变小对应黑线变紫线),这一点后面解释。
吴恩达机器学习(四) (支持向量机SVM)_第11张图片

支持向量机数学原理

知识补充:下面这个其实就是初中的两个向量内积的集合公式:向量a向量b=|a||b|cosθ,也可以说成b对a(或者a对b)的贡献长度(P)乘上a(或者b)(这里范数表示a或b的长度)。以前向量a=(A,B),向量b=(C,D),两者相乘就是AB+CD,现在写成矩阵格式就需要转置第一个矩阵x第二个矩阵了。
吴恩达机器学习(四) (支持向量机SVM)_第12张图片
支持向量机的目标函数(之前提到过C
0这一项已经忽略不计了)见下面黑子部分: 使1/2Σθj2最小并且定义了当y=1的时候θTx>=1…,

现在简化条件θ0=0(如果θ0为0则下面的θ向量经过原点),n=2.
那目标函数就可以写成1/2的θ的2范数。我们可以把hθ(x)=θTx给看成之前的uTv。那么套用之前的公式uTv=p||u||2 ,那么θTx=p||θ||2 。这里的p就是x向量在θ向量上的贡献距离。吴恩达机器学习(四) (支持向量机SVM)_第13张图片
如果说θTx>=1那么就是p||θ||2 >=1。小于等于情况同理。看左图,我们去寻找左右的离决策边界最近的两个点,这两个点投影在这个决策边界的贡献距离可以发现是比较小的,那么我们要使p||θ||2 >=1和p||θ||2 <=-1也就要使||θ||2尽可能地大。这样就违背了支持向量机的目标函数了。右图的决策边界正好解决了这个问题。
这也就证明了支持向量机可以解决分类问题。
吴恩达机器学习(四) (支持向量机SVM)_第14张图片

核函数(相似度函数)

之所以叫相似度函数是因为他的函数值可以描述样本与特征之间是否是接近的。我们通常选取高斯函数作为核函数kernel。对于特征l1,l2,l3我们定义下面蓝色的公式,核函数值定义为f1=k(x,l1)…
吴恩达机器学习(四) (支持向量机SVM)_第15张图片
我们之所以使用高斯函数作为核函数,是因为当训练数据x接近于特征l的时候,核函数值接近于1,而相反远离l的时候,核函数值接近于0。
吴恩达机器学习(四) (支持向量机SVM)_第16张图片
核函数具体的二维图像如下,我们可以看到这是一个xy轴是x1x2,z轴是f,如果x1x2这两个训练样本非常接近于特征l1,那么他的核函数值f就会接近于1(e0=1),而远离l1的点则函数值接近于0
下面我们还可以看到σ越大,核函数的造型的下面的屁股就越鼓。
吴恩达机器学习(四) (支持向量机SVM)_第17张图片
我们通过设定参数θ=[-0.5 1 1 0],然后去和 f 建立一个不等式就可以来判断,训练样本x接近于这l1,l2的时候y=1,接近于l3的时候y=0。如图的两个点x。
吴恩达机器学习(四) (支持向量机SVM)_第18张图片
上面我们提到了有三个特征l的情况,现在如果是多个l(如下图)怎么去实现判断训练样本接近特征l的情况。
吴恩达机器学习(四) (支持向量机SVM)_第19张图片
我们给出m个训练样本,然后选择其中的每个x=l,我们就可以描述m个核函数值,这个核函数值的意义表示了x训练集他们到自己其中的某一个值之间的距离(从x1~xm)。i的取值是任意的,例如当i=2的时候,一定会有
f22=sim(x2,l2)=1。也就是说这m个f核函数值当中,必定存在一个f核函数值等于1。

我们将这m个f核函数值列成一个特征向量如下(这个特征向量是用来描述训练样本x的,x可能是n维,也可能在考虑f0i的时候变成n+1维的)。

同时定义f0i=1,也就是说f0i=sim(xi,l0)=1。

吴恩达机器学习(四) (支持向量机SVM)_第20张图片
当我们考虑截距f0的时候,就有m+1个特征l,也就有m+1个核函数来描述训练集x到这m+1个l的距离。现在在原来的SVM目标函数中的θTx替换成θTf。就变成了使用了核函数的SVM。
后面这一项的n=m(在不考虑θ0的时候就是m)
吴恩达机器学习(四) (支持向量机SVM)_第21张图片
吴恩达机器学习(四) (支持向量机SVM)_第22张图片
c值过大,会导致一个低偏差高方差的问题。更接近与过拟合,而c值过小则相反。
吴恩达机器学习(四) (支持向量机SVM)_第23张图片
建议使用成熟的SVM软件来进行数值优化。但是我们仍然需要考虑一些问题。如果我们的n很大(这里的n也就是上面的m,代表了有n=m种类的特征),但是你的训练数集x的个数很小,只有m个(不是上面的m)。那么你就可以拿他来做一个简单的线性分类,我们就不需要使用核函数,称他为linear kernel,实际上就是线性核函数。但是也有时候遇到相反的情况,你的n也就是特征种类比较小(例如上图右下角,种类数是2),而你的样本很多(上图右下角,训练样本就是这些特征数量)。那么使用高斯核函数就会比较好的去完成一个复杂的非线性分类问题。
吴恩达机器学习(四) (支持向量机SVM)_第24张图片
我们在使用这些软件的时候,可能会需要提供核函数的输入,高斯核函数时最常见的核函数,当然我们还得考虑特征缩放的问题,因为式子中的分子||x-l||=(x1-l1)2+(x2-l2)2…如果这个SVM是用来预测房价的,第一个平方项是样本房子的面积,而第二相反是样本房子的数量,那么这个最终的结果就会主要由房子的面积决定(数字大)。

你可能感兴趣的:(机器学习)