吴恩达机器学习教程学习笔记 (10/16)

吴恩达教授(Andrew Ng)的机器学习可以说是一门非常重视ML理论基础的课程,做做一些简单的笔记加上个人的理解。本笔记根据吴恩达的课程顺序,以每章内容作为节点进行记录。(共18章,其中第3章“线性代数回顾”与第5章“Octava教程”的笔记就不总结了)

第十二章 支持向量机(Support Vector Machine)

1、优化目标

与逻辑回归和神经网络相比,支持向量机,或者简称SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。

现在考虑下我们想要逻辑回归做什么:如果有一个 y=1的样本,我的意思是不管是在训练集中或是在测试集中,又或者在交叉验证集中,总之是 y=1,现在我们希望hθ(x) 趋近1。因为我们想要正确地将此样本分类,这就意味着当 hθ(x)趋近于1时,θTx 应当远大于0,这里的>>意思是远远大于0。这是因为由于 z 表示 θTx,当 z远大于0时,即到了该图的右边,你不难发现此时逻辑回归的输出将趋近于1。相反地,如果我们有另一个样本,即y=0。我们希望假设函数的输出值将趋近于0,这对应于θTx,或者就是 z 会远小于0,因为对应的假设函数的输出值趋近0。

如果你进一步观察逻辑回归的代价函数,你会发现每个样本 (x,y)都会为总代价函数,增加这里的一项,因此,对于总代价函数通常会有对所有的训练样本求和,并且这里还有一个1/m项,但是,在逻辑回归中,这里的这一项就是表示一个训练样本所对应的表达式。现在,如果我将完整定义的假设函数代入这里。那么,我们就会得到每一个训练样本都影响这一项。

用 z 表示θTx,即: z=θTx。当然,在代价函数中,y 前面有负号。我们只是这样表示,如果 y=1 代价函数中,这一项也等于1。这样做是为了简化此处的表达式。如果画出关于z 的函数,你会看到左下角的这条曲线,我们同样可以看到,当z 增大时,也就是相当于θTx增大时,z 对应的值会变的非常小。对整个代价函数而言,影响也非常小。这也就解释了,为什么逻辑回归在观察到正样本y=1时,试图将θTx设置得非常大。因为,在代价函数中的这一项会变的非常小。

现在开始建立支持向量机,我们从这里开始:

我们会从这个代价函数开始,也就是-log(1-1/(1+e(-z)))一点一点修改,让我取这里的z=1 点,我先画出将要用的代价函数。

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_核函数

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_代价函数_02


新的代价函数将会水平的从左端到右边(左图),然后我再画一条同逻辑回归非常相似的直线,但是,在这里是一条直线,也就是我用紫红色画的曲线,就是这条紫红色的曲线。那么,到了这里已经非常接近逻辑回归中使用的代价函数了。只是这里是由两条线段组成,即位于右边的水平部分和位于左边的直线部分,先别过多的考虑左边直线部分的斜率,这并不是很重要。但是,这里我们将使用的新的代价函数,是在y=1的前提下的。你也许能想到,这应该能做同逻辑回归中类似的事情,但事实上,在之后的优化问题中,这会变得更坚定,并且为支持向量机,带来计算上的优势。例如,更容易计算股票交易的问题等等。

目前,我们只是讨论了y=1的情况,另外一种情况是当y=0时,此时如果你仔细观察代价函数只留下了第二项,因为第一项被消除了。如果当y=0时,那么这一项也就是0了。所以上述表达式只留下了第二项。因此,这个样本的代价或是代价函数的贡献。将会由这一项表示。并且,如果你将这一项作为z的函数,那么,这里就会得到横轴z。现在,你完成了支持向量机中的部分内容,同样地,我们要替代这一条蓝色的线,用相似的方法。

如果我们用一个新的代价函数来代替,即这条从0点开始的水平直线,然后是一条斜线,像上图。那么,现在让我给这两个方程命名,左边的函数,我称之为cost_1 (z),同时,右边函数我称它为cost_0 (z)。这里的下标是指在代价函数中,对应的 y=1 和 y=0 的情况,拥有了这些定义后,现在,我们就开始构建支持向量机。

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_吴恩达_03

2、大边界的直观理解

这是我的支持向量机模型的代价函数,在左边这里我画出了关于z的代价函数cost1(z),此函数用于正样本,而在右边这里我画出了关于z的代价函数cost0(z),横轴表示z,现在让我们考虑一下,最小化这些代价函数的必要条件是什么。如果你有一个正样本,y=1,则只有在z>=1时,代价函数cost1(z)才等于0。

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_吴恩达_04


吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_代价函数_05


如果 C非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为0的最优解。因此,让我们尝试在代价项的第一项为0的情形下理解该优化问题。

例子

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_机器学习_06


具体而言,如果你考察这样一个数据集,其中有正样本,也有负样本,可以看到这个数据集是线性可分的。我的意思是,存在一条直线把正负样本分开。当然有多条不同的直线,可以把正样本和负样本完全分开。

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_核函数_07


比如,这就是一个决策边界可以把正样本和负样本分开,或者我们可以画一条更差的决策界,这是另一条决策边界,可以将正样本和负样本分开,但仅仅是勉强分开,这些决策边界看起来都不是特别好的选择,支持向量机将会选择这个黑色的决策边界,相较于之前我用粉色或者绿色画的决策界。这条黑色的看起来好得多,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这是什么意思呢?这条黑线有更大的距离,这个距离叫做间距(margin)。

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_代价函数_08


当画出这两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器。

回顾 C=1/λ,因此:

C 较大时,相当于 λ 较小,可能会导致过拟合,高方差。

C 较小时,相当于 λ 较大,可能会导致低拟合,高偏差。

3、核函数

回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题:

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_代价函数_09


为了获得上图所示的判定边界,我们的模型可能是θ01x12x23x1x24 x125 x22+⋯的形式。

我们可以用一系列的新的特征f来替换模型中的每一项。例如令: f1=x1,f2=x2,f3=x1x2,f4=x12,f5=x22

…得到hθ(x)=f1+f2+…+fn。然而,除了对原有的特征进行组合以外,有没有更好的方法来构造f1,f2,f3?我们可以利用核函数来计算出新的特征。

给定一个训练实例x,我们利用x的各个特征与我们预先选定的地标(landmarks)l(1),l(2),l(3)的近似程度来选取新的特征f1,f2,f3

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_支持向量机_10


吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_支持向量机_11吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_代价函数_12

为实例x中所有特征与地标l(1)之间的距离的和。上例中的similarity(x,l(1))就是核函数,具体而言,这里是一个高斯核函数(Gaussian Kernel)。 这些地标的作用是什么?如果一个训练实例x与地标L之间的距离近似于0,则新特征 f近似于e(-0)=1,如果训练实例x与地标L之间距离较远,则f近似于e-(一个较大的数)=0。

假设我们的训练实例含有两个特征[x1 x2],给定地标l(1)与不同的σ值,见下图:

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_吴恩达_13


图中水平面的坐标为 x1,x2而垂直坐标轴代表f。可以看出,只有当x与l(1)重合时f才具有最大值。随着x的改变f值改变的速率受到σ2的控制。

在下图中,当实例处于洋红色的点位置处,因为其离l(1)更近,但是离l(2)和l(3)较远,因此f1接近1,而f2,f3接近0。因此hθ(x)=θ01f12f21f3>0,因此预测y=1。同理可以求出,对于离l^((2))较近的绿色点,也预测y=1,但是对于蓝绿色的点,因为其离三个地标都较远,预测y=0。

吴恩达机器学习MachineLearning课程 吴恩达机器学课程讲义_代价函数_14


这样,图中红色的封闭曲线所表示的范围,便是我们依据一个单一的训练实例和我们选取的地标所得出的判定边界,在预测时,我们采用的特征不是训练实例本身的特征,而是通过核函数计算出的新特征f1,f2,f3

感谢黄海广博士团队的翻译和笔记
END