目录
前言:
12 支持向量机(Support Vectir Machines)
12.1 优化目标
12.2 大边界的直观理解
12.3 大边界分类背后的数学
12.4 核函数1
12.5 核函数2
12.6 使用支持向量机
总结:
课后作业:
前言:
因为书写难度以及后面需要补充等原因,写完每一小部分在进行一次合并。
12 支持向量机(Support Vectir Machines)
12.1 优化目标
在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法 A 还是学习算法 B,而更重要的是, 应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平。
与逻辑回归和神经网络相比,支持向量机,或者简称 SVM,在学习复杂的非线性 方程时提供了一种更为清晰,更加强大的方式
这部分学习非常重要。
我将会从逻辑回归开始展示我们如何一点一点修改来得到本质上的支持向量机。
将用 z 表示
回顾一下之前的逻辑回归的代价函数:
在计算的时候,我们将每个样本加入总代价函数中,因此总代价函数通常会有对所有的训练样本求和。其实1/m这个可以不考虑,我们只是方便运算才引入的。
现在开始建立支持向量机
我们会从这个代价函数开始,也就是 对于这个对数,我们一点一点修改,让我取这里的 z=1 点,我先画出将要用的代价函数。
y=1情况:新的代价函数是粉色这一条,由两段直线构成,这时候非常接近逻辑回归中述使用的代价函数了。
事实上,在之后的的优化问题中,为支持向量机,带来计算上的优势。例如,更容易计算股票交易的问题等等。
同理:y=0情况:
如果我们用一个新的代价函数来代替,即这条从 0 点开始的水平直线,然后是一条斜线,像上图。
那么,现在让我给这两个方程命名,左边的函数,我称之为 cost1(z),同时,右 边函数我称它为 cost0 (z) 。这里的下标是指在代价函数中,对应的 y=1 和 y=0 的情况,拥有 了这些定义后,现在,我们就开始构建支持向量机
构建我们的支持向量机:
弄清楚上面这幅图非常关键!!!
对于第一部分,需要注意后面的讲解,代价函数用cost表示,对于支持向量机,我们希望得到最小化问题,同时加上正则化参数,此时的1/m这一项只是为了方便运算(正如我们求一个函数的极值的坐标与方程是否放大无关)
对于第二部分,由于常数是无关紧要的,因此可以用C来代替
第三部分,对于我们熟悉的逻辑回归,我们有两项参数我们通过设置不同正则参数λ达到优化的目的A+λ×B,,但对于支持向量机,按照惯例,我 们将使用一个不同的参数替换这里使用的 λ来权衡这两项。就是第一项和第二项 我们依照惯例使用一个不同的参数称为 C,同时改为优化目标,C×A+B 因此,在逻辑回归中, 如果给定λ,一个非常大的值,意味着给予 B 更大的权重。而这里,就对应于将 C 设定为非 常小的值,那么,相应的将会给 B 比给 A 更大的权重。参数 C 考虑成 1/λ,
12.2 大边界的直观理解
与逻辑回归不同的是,支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不 仅仅要求 >0,我们需要的是比 0 值大很多,比如大于等于 1,我也想这个比 0 小很多, 比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子。或者说 安全的间距因子。
支持向量机的直观感受:
求解优化问题的时候得到非常有趣的决策边界:
SVM能得到黑色这一条,如何得出呢?通过间距(margin),如图:
因此支持向量机有时被称为大间距分类器
注意
大间距分类器由于正则化因子常数设置的非常大,学习算法容易受异常点(outlier)的影响:
当正则化参数非常大,SVM则会将决策界由黑边粉红。
当 C 不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。
回顾一下
C=1/λ,因此:
C 较大时,相当于 λ 较小,可能会导致过拟合,高方差。
C 较小时,相当于 λ 较大,可能会导致低拟合,高偏差。
为什么会是这样的? 它是如何得出大间距分类器的?我在本节中没有讲解,在下一节课中,我将略述这些问题背 后的数学原理,来解释这个优化问题是如何得到一个大间距分类器的。
且背后的数学意义,先不讨论
12.3 大边界分类背后的数学
12.4 核函数1
回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类 问题:
给定一个训练实例 x,我们利用 x 的各个特征与我们预先选定的地标(landmarks)
例如:
注:这个函数与正态分布没什么实际上的关系,只是看上去像而已。
图中水平面的坐标为 x1,x2而垂直坐标轴代表 f。可以看出,只有当 x 与 l (1)重合时 f 才 具有最大值。随着 x 的改变 f 值改变的速率受到 σ 2的控制。
在下图中,当实例处于洋红色的点位置处,因为其离 l (1)更近,但是离 l (2)和 l (3)较远,因 此 f1接近 1,而 f2,f3 接近 0。因此 hθ(x)=θ0+θ1f1+θ2f2+θ1f3>0,因此预测 y=1。
同理可以求出, 对于离 l (2)较近的绿色点,也预测 y=1,但是对于浅蓝色的点,因为其离三个地标都较远,预测 y=0。
小结:
这样,图中红色的封闭曲线所表示的范围,便是我们依据一个单一的训练实例和我们选取的地标所得出的判定边界,在预测时,我们采用的特征不是训练实例本身的特征,而是通过核函数计算出的新特征 f1,f2,f3。
12.5 核函数2
如何选地标:
将核函数用于支持向量机中:
我们在对后正则化部分微调一下
改成
其中 M 是根据我们选择的核函数而不同的一个矩阵。这样做的 原因是为了简化计算。
12.6 使用支持向量机
关于参数的求解,我们一般的都是通过调用包进行求解的比如Libsvm
尽管不自己的 SVM(支持向量机)的优化软件,但是你也需要做几件事:
1、是提出参数 C 的选择。我们在之前的视频中讨论过误差/方差在这方面的性质。
2、你也需要选择内核参数或你想要使用的相似函数,其中一个选择是:我们选择不需要任何内核参数,没有内核参数的理念,也叫线性核函数。
因此,如果有人说他使用了线性核的 SVM(支持向量机),这就意味这他使用了不带有核函数的 SVM(支持向量机)。
下面是一些普遍使用的准则:
n 为特征数,m 为训练样本数。
(1)如果相较于 m 而言,n 要大许多,即训练集数据量不够支持我们训练一个复杂的非 线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
(2)如果 n 较小,而且 m 大小中等,例如 n 在 1-1000 之间,而 m 在 10-10000 之间, 使用高斯核函数的支持向量机。
(3)如果 n 较小,而 m 较大,例如 n 在 1-1000 之间,而 m 大于 50000,则使用支持向量 机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向 量机。
值得一提的是,神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络 可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值。
选择神经网络和SVM上:
对于许多这样的问题,神经网络训练起来可能会特别慢,但是如果 你有一个非常好的 SVM 实现包,它可能会运行得比较快比神经网络快很多,尽管我们在此 之前没有展示,但是事实证明,SVM 具有的优化问题,是一种凸优化问题。以及全局最优
总结:
对于监督学习而言不是你所掌握的算法的强弱:、
通常更加重要的是:你有多少数据,你有 多熟练是否擅长做误差分析和排除学习算法,指出如何设定新的特征变量和找出其他能决定 你学习算法的变量等方面,通常这些方面会比你使用逻辑回归还是 SVM 这方面更加重要
课后作业:
个人学习笔记
https://blog.csdn.net/qq_37457202/article/details/107186967
参考:
黄海广博士的机器学习笔记
Andrew Ng b站视频教学