在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是该选择使用学习算法 A 还是学习算法 B,而是应用这些算法时,所创建的大量数据表现情况,这又通常依赖于你的水平。比如:为学习算法所设计的特征、正则化参数等。在学习复杂的非线性方程时与逻辑回归和神经网络相比,支持向量机(Support Vector Machine) 提供了一种更为清晰,更加强大的方式,被广泛的应用于工业界和学术界。
为了描述支持向量机,将开始展示如何通过修改逻辑回归得到本质上的支持向量机。
首先逻辑回归是怎么做的:如果有一个 = 1的样本,不管是在训练集中或是在测试集中,又或者在交叉验证集中,总之是 = 1,现在则希望ℎ() 趋近 1, 应当远大于 0。相反地,如果有另一个样本,即 = 0,希望假设函数的输出值趋近于 0,则对应的 应远小于 0。
如果进一步观察逻辑回归的代价函数,会发现每个样本 (, )都会为总代价函数,增加这里的一项,
因此,对于总代价函数通常是对所有的训练样本求和,并且还有一个1/项,但是,在逻辑回归中,这一项就只表示一个训练样本所对应的表达式。如果将完整定义的假设函数代入这里,则每一个训练样本都影响这一项。现在,先忽略 1/ 这一项,先考虑两种情况:一种是等于 1 的情况;另一种是 等于 0 的情况。
在第一种情况中,假设 = 1 ,此时在目标函数中只需有第一项起作用,因为 = 1时,(1 − )项将等于 0。因此,当在 = 1 的样本中时,得到
这样一项。
用 表示 ,即: = 。画出关于 的函数,得到左下角的这条曲线,可以看到,当 增大时,对应的值会变的非常小。对整个代价函数而言,影响也非常小。这也就解释了,为什么逻辑回归在观察到正样本 = 1时,试图将 设置得非常大。因为,在代价函数中的这一项会变得非常小。
现在开始建立支持向量机,从这个代价函数开始,也就是
一点一点修改,取这里的 = 1点,先画出将要用的代价函数。新的代价函数(紫红色)将会水平的从z=1到右边,然后再在左边画一条同逻辑回归非常相似的直线。那么,到了这里已经非常接近逻辑回归中使用的代价函数了。只是这里是由两条线段组成,即位于右边的水平部分和位于左边的直线部分,先不考虑左边直线部分的斜率,这并不是很重要。
这同逻辑回归中类似的事情,并且为支持向量机,带来计算上的优势。例如,更容易计算股票交易的问题等等。
当 = 0时,此时代价函数只留下了第二项。
并且,如果将这一项作为的函数,那么,就会得到横轴。同理得到如下图像。
如果用一个新的代价函数来代替,即这条从 0 点开始的水平直线,然后是一条斜线,像上图。那么,现在给这两个方程命名,左边的函数,称之为cos1(),同时,右边函数称为cos0()。这里的下标是指在代价函数中,对应的 = 1 和 = 0 的情况,拥有了这些定义后,现在就开始构建支持向量机。