与逻辑回归和神经网络相比,支持向量机,或者简称SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。它也是我们所介绍的最后一个监督学习算法。为了描述支持向量机,事实上,我将会从逻辑回归开始展示我们如何一点一点修改来得到本质上的支持向量机。
在逻辑回归中我们已经熟悉了这里的假设函数形式,和右边的S型激励函数。
当y=1时,我们得到 ,如上图左下所示,当z增大时其对应的值会变得非常小。现在开始建立支持向量机,我们从这里开始:我们会从这个代价函数开始,也就是
,取z=1,再画一条同逻辑回归非常相似的直线,但是,在这里是一条直线,也就是我用紫红色画的曲线,就是这条紫红色的曲线。这里是由两条线段组成,即位于右边的水平部分和位于左边的直线部分,先别过多的考虑左边直线部分的斜率,这并不是很重要。但是,这里我们将使用的新的代价函数,是在y=1的前提下的。另一种情况y=0也类似,如上图右边所示。那么,现在让我给这两个方程命名,左边的函数,我称之为cost1(z),同时,右边函数我称它为cost0(z)。这里的下标是指在代价函数中,对应的y=1和y=0的情况,拥有了这些定义后,现在,我们就开始构建支持向量机。
得到了在支持向量机中我们的整个优化目标函数。然后最小化这个目标函数,得到SVM 学习到的参数C。
- 大边界的直观理解
有时将支持向量机看作是大间距分类器。在这一部分将介绍其中的含义,这有助于我们直观理解SVM模型的假设是什么样的。
支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求>0,我们需要的是比0值大很多,比如大于等于1,我也想这个比0小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。 我们将这个常数C设置成一个非常大的值。比如我们假设的值为100000或者其它非常大的数,然后来观察支持向量机会给出什么结果?
如果C非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为0的最优解。因此,让我们尝试在代价项的第一项为0的情形下理解该优化问题。
这条黑色的看起来好得多,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这是什么意思呢?这条黑线有更大的距离,这个距离叫做间距(margin)。
当画出这两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器,而这其实是求解上一页幻灯片上优化问题的结果。我们将这个大间距分类器中的正则化因子常数C设置的非常大,我记得我将其设置为了100000,因此对这样的一个数据集,也许我们将选择这样的决策界,从而最大间距地分离开正样本和负样本。那么在让代价函数最小化的过程中,我们希望找出在y=1和y=0两种情况下都使得代价函数中左边的这一项尽量为零的参数。如果我们找到了这样的参数,则我们的最小化问题便转变成。
我们选择不需要任何内核参数,没有内核参数的理念,也叫线性核函数。因此,如果有人说他使用了线性核的SVM(支持向量机),这就意味这他使用了不带有核函数的SVM(支持向量机)。从逻辑回归模型,我们得到了支持向量机模型,在两者之间,我们应该如何选择呢?