十一、支持向量机(Support Vector Machines)
11.1 优化目标
到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非常类似.因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平.比如:你为学习算法所设计的特征量的选择,以及如何选择正则化参数,诸如此类的事.还有一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine).与逻辑回归和神经网络相比,支持向量机,或者简称SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式.
稍后的课程中,我也会对监督学习算法进行简要的总结.当然,仅仅是作简要描述.但对于支持向量机,鉴于该算法的强大和受欢迎度,在本课中,我会花许多时间来讲解它.它也是我们所介绍的最后一个监督学习算法.
正如我们之前开发的学习算法,我们从优化目标开始.为了描述SVM,我们从逻辑回归开始介绍.
我们考虑单个项对成本函数的贡献.如果你进一步观察逻辑回归的代价函数,你会发现每个样本 (x,y)都会为总代价函数做出贡献.公式如下图所示.
我们讨论\(y=1\)的样本,我们就会希望假设\(h_{\theta}(x)\)接近于\(1\),由图可知必须\(\theta^Tx\)接近无穷大.我们可以观察\(-log\frac{1}{1+e^{-\theta^Tx}}\)的图像,当\(z\)无穷大时,\(-log\frac{1}{1+e^{-\theta^Tx}}\)趋近\(0\),这样符合尽可能降低代价的前提.
现在开始建立支持向量机,我们从这里开始:们会从这个代价函数开始,也就是\(-log\frac{1}{1+e^{-\theta^Tx}}\)一点修改.取一点\(z=1\),在此点做两条直线(如上图的粉红色线).这就是当\(y=1\)时,我们要使用的新代价函数.它与逻辑回归的曲线很相似,但更容易优化处理.
上面的y=1的情况,还有一种情况是y=0,此时只有第二项起作用.同样取\(z=-1\)这个点,作两条直线.现在,就完成了支持向量机中的部分内容.
如果我们用一个新的代价函数来代替,即这条从0点开始的水平直线,然后是一条斜线,像上图.那么,现在给这个方程命名,一般称之为\(cost_0(z)\),而另一个(y=1的情况),函数对应为\(cost_1(z)\).
下面是逻辑回归的代价函数(把负号移进了小括号里):
对于支持向量机,我们就将小括号的内容换成:
因为常数\(m\)不影响我们最小化,因此可以去掉,还有一点,我们会使用\(\lambda\)权衡最小化代价函数和参数之间的平衡.但SVM里,我们不使用\(\lambda\),而是使用\(C\),放在代价函数的常数项位置.我们可以把\(C\)看作\(\frac1{\lambda}\)(但这两项不是完全相等,否则\(A+\lambda B\)和\(CA+B\)完全等同).
最后,有别于逻辑回归输出的概率,SVM并不换输出概率.通过优化代价函数我们可以得到\(\theta\),然后我们直接代入假设得到假设输出0或1.