吴恩达机器学习笔记-支持向量机

优化目标

以前的课程有学习过Logistic回归的假设函数:网络

$$ h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}} $$app

其图像以下:机器学习

从图像能够看出,若是$y=1$的话,那么咱们但愿$h_\theta(x) \approx 1$,那么$\theta^Tx >> 0$;若是$y=0$的话,那么咱们但愿$h_\theta(x) \approx 0$,那么$\theta^Tx << 0$;对于Logistic回归的一个样本的代价则能够表示为:函数

$$ -(ylogh_\theta(x) + (1-y)log(1-h_\theta(x))) = -ylog\frac{1}{1+e^{-\theta^Tx}} - (1-y)log(1-log\frac{1}{1+e^{-\theta^Tx}}) $$工具

当y=1时,该函数就只剩减号左边的部分,画出的图像就是$-log\frac{1}{1+e^{-\theta^Tx}}$的图像,而后咱们开始创建支持向量机。首先从这个函数y一点点的进行修改,取这里的z=1点,先画出将要用的代价函数,新的代价函数将会水平的从这里到右边,而后再画一条同逻辑回归很是类似的直线,可是在这里是一条直线,也就是 用紫红色画的曲线。那么到了这里已经很是接近逻辑回归中使用的代价函数了,只是这里是由两条线段组成 即位于右边的水平部分和位于左边的直线部分。先别过多的考虑左边直线部分的斜率,这并非很重要,可是 这里咱们将使用的新的代价函数是在y=1的前提下的。你也许能想到这应该能作同逻辑回归中相似的事情但事实上在以后的的优化问题中这会变得更坚决,而且为支持向量机带来计算上的优点。学习

同理y时,该函数只剩下减号右边部分,即$-log(1-log\frac{1}{1+e^{-\theta^Tx}})$。这个样本的代价或是代价函数的贡献将会由这一项表示,而且,若是你将这一项做为z的函数,那么,这里就会获得横轴z,如今 已经完成了支持向量机中的部份内容。一样地,再来一次,咱们要替代这一条蓝色的线,用类似的方法。若是用 一个新的代价函数来代替,即这条从0点开始的水平直线,而后是一条斜线。那么,如今给这两个方程命名左边的函数称之为$cost_1(z)$。同时,在右边函数称它为$cost_0(z)$这里的下标是指,在代价函数中对应的y=1和 y=0的状况。拥有了这些定义后。如今,咱们就开始构建支持向量机。优化

首先写出以前logistic回归的代价函数,但这里把负号移动到表达式的里面。对于支持向量机而言,将中括号里$-logh_\theta(x^(i))$表示为$cost_1(\theta^Tx^(i))$,后面的$-log(1-h_\theta(x^(i)))$表示为$cost_0(\theta^Tx^(i))$。对于逻辑回归,在目标函数中,咱们有两项,第一项是来自于训练样本的代价,第二项是正则化项,咱们不得不去,用这一项来平衡。这就至关于咱们想要最小化A加上正则化参数λ而后乘以其余项B:$A+\lambda B$。这里的A表示这里的第一项,用B表示第二项但不包括λ。ui

咱们不是优化这里的$A+\lambda B$,咱们所作的,是经过设置不一样正则参数$\lambda$达到优化目的。这样 就可以权衡对应的项,使得训练样本拟合的更好。即最小化A仍是对于B项而言保证正则参数足够小。但对于支持向量机,按照惯例将使用一个不一样的参数,为了替换这里使用的$\lambda$来权衡这两项,使用一个不一样的参数称为C,同时改成优化目标$C*A+B$,所以,在逻辑回归中,若是给定$\lambda$一个很是大的值,意味着给予B更大的权重,而这里就对应于将C设定为很是小的值,那么相应的将会给B比给A更大的权重。这只是一种不一样的方式来控制这种权衡或者一种不一样的方法,即用参数来决定是更关心第一项的优化仍是更关心第二项的优化。固然你也能够把这里的参数C考虑成$\frac{1}{\lambda}$,同$\frac{1}{\lambda}$所扮演的角色相同,而且这两个方程或这两个表达式并不相同,由于C等于$\frac{1}{\lambda}$,可是也并不全是这,若是当C等于$\frac{1}{\lambda}$时,这两个优化目标应当获得相同的值相同的最优值$\theta$,所以就用它们来代替。那么,如今删掉这里的$\lambda$而且用常数C来代替这里。这就获得了在支持向量机中,咱们的整个优化目标函数,而后最小化这个目标函数获得SVM学习到的参数C。spa

最后,有别于逻辑回归,输出的几率在这里,当最小化代价函数 得到参数$\theta$时,支持向量机所作的是,它来直接预测y的值等于1仍是等于0,所以,这个假设函数会预测当$\theta^Tx$大于等于0或者小于0时。因此学习参数θ就是支持向量机假设函数的形式。code

直观上对大间隔的理解

下图中的公式表示了支持向量机模型的代价函数,左边的图中,画出了z的代价函数,此函数适用于正样本,右边画的z的代价函数,适用于负样本。

当y=1时,咱们须要$\theta^Tx>=1$(并非仅仅大于0),当y=0时,咱们须要$\theta^Tx<=-1$(并非仅仅小于0)。咱们假设常量C的值为一个很大的数,好比100000,而后观察支持向量机会给出什么结果。若是C很是大则最小化代价函数的时候,咱们将会很但愿找到一个使第一项为0的最优解。则其实咱们是要获得$min\frac{1}{2}\sum_{i=1}^{n}\theta_j^2$:

当$y^(i) = 1$,咱们须要$\theta^Tx^(i)>=1$,一样对于一个样本$y^(i) = 0$,咱们须要$\theta^Tx^(i)<=-1$.

具体而言,若是考察下面这样一个数据集:

其中有正样本也有负样本,能够看到这个数据是线性可分的,即存在一条直线把正负样本分开,且这里存在有多条不一样的直线能够把正负样本分开。支持向量机会选择图中黑色的这条线来做为决策边界,相对于其余的线来看要更合理些。从数学上来说,这条黑线和训练样本之间有着更大的最短距离,这个距离被称做支持向量机的间距,这是支持向量机具备鲁棒性的缘由,由于它努力用一个最大间距来分离样本。所以SVM常常被称做是一种大间距分类器(Large Margin Intuition)。

在实际的使用中,咱们可能会出现一些异常点数据,好比下图:

因为异常点的存在,决策边界可能就变成了图中倾斜的那条线,这显然是不明智的。所以,若是C设置的很是大,这也是支持向量机将会作的,它从图中较为竖直的线变为了倾斜的那条,但若是C的值设置的小一点,最终将会获得图中较为竖直的线。固然,若是数据不是线性可分的,支持向量机也能够将它们分开。所以大间距分类器仅仅是从直观上给出了正则化参数C很是大的情形。同时要提醒你C的做用相似于$\frac{1}{\lambda}$,$\lambda$是咱们以前使用过的正则化参数,这只是C很是大的情形或者等价$\lambda$很是小的情形。实际上当C不是很是大时,支持向量机能够忽略掉一些异常点的影响,获得更好的决策边界,甚至当数据不是线性可分的时候也能给出很好的结果。

核函数

假设有个数据集以下图所示,咱们但愿拟合一个非线性的决策边界来区分正负样本,一种方法是构造多项式特征变量如图中所示:

这里介绍一种新的写法:$\theta_0+\theta_1 f_1+\theta_2 f_2+\theta_3 f_3+...$,这里的一系列将要计算的新的特征变量。那么如今有一个问题,有没有比这些高阶项更好的特征变量呢?

如图,咱们选择三个点$l^(1),l^(2),l^(3)$,给定x,计算新的特征,这个特征衡量标记点和原先样本点的类似性。$f_i=similarity(x^(i),l^(i))=exp(-\frac{||x^(i)-l^(i)||^2}{2\sigma^2})$,其中exp中的函数为高斯核函数。

很显然能够得出若$x\approx l^(1)$,则$f_1 \approx 1$;若$x\approx$远离 l^(1),则$f_1 \approx 0$。而后再看$\sigma$对核函数的影响:

经过上图能够看出,$\sigma$越大收敛越慢,反之收敛越快。

那么如今有个问题,上述的标记点是随机取得,这很显然没那么简单,有一种较好的方法,是将训练集中的正样本做为标记点,对于每个训练集中的数据,咱们都有一个m+1维向量与之对应。 这里的$f_0$默认为1。以下图所示:

将核函数运用到支持向量机中来看,给定x,计算特征$f\in R^{m+1}$,咱们预测当$\theta^Tf>=0$时y=1。假设函数则为:$h_\theta(x) = \theta_0 + \theta_1 f_1+\theta_2 f_2+\theta_3 f_3+...$。相应的,代价函数也修改以下图中所示:

在实际使用中,咱们还须要对正则化项进行调整,计算$\sum_{j=1}^{n=m}\theta_j^2=\theta^T\theta$时,会用$\theta^TM\theta$来代替$\theta^T\theta$,其中M是根据咱们选择的核函数而不一样的一个矩阵。这样作的缘由是为了简化计算。理论上讲,咱们也能够在逻辑回归中使用核函数,可是上面使用M来简化计算的方法不适用与逻辑回归,所以计算将很是耗费时间。

下面是支持向量机的两个参数 C 和 $\sigma $的影响(C能够看作$\frac{1}{\lambda}$):

C较大时,至关于 $\lambda$ 较小,可能会致使过拟合,高方差;
C较小时,至关于$\lambda$较大,可能会致使低拟合,高误差;
$\sigma$较大时,可能会致使低方差,高误差;
$\sigma$较小时,可能会致使低误差,高方差。

实践SVM

在实际工做中,咱们每每使用已有的工具包中所包含的SVM。在使用时,咱们须要注意其中的参数选定和选择想要使用的核函数。其中一个选择是不须要使用任何内核参数,这也叫做线性核函数。所以若是有人说使用了线性核函数的SVM,这就意味着使用了不带有核函数的SVM。
从逻辑回归模型,咱们获得了支持向量机模型,在二者之间,咱们应该如何选择呢?以下图所示:

若是n很大,接近m,那么使用Logistic回归或者线性SVM;
若是n很小,m大小适中,使用高斯核函数;
若是n很小,m很大,则能够建立新的特征而后使用logistic回归或者线性SVM
神经网络在上面几种状况下均可能有较好的表现,但训练神经网络很是慢。

以上,为吴恩达机器学习第七周支持向量机的课程笔记。

相关文章
相关标签/搜索