支持向量机SVM
1. 不带核函数的支持向量机
支持向量机可以不使用核函数,不使用核函数又称为线性核函数。当我们不采用非常复杂的函数,或者我们的训练集特征非常多而样本非常少的时候(一般线性可分),可以采用这种不带核函数的支持向量机。
1.1 逻辑回归与SVM的对比
①假设函数
逻辑回归的假设函数与SVM的假设函数相同:
不同的是:
在逻辑回归中,当θx≥0时, 预测y=1,θx<0时, 预测y=0。
在SVM中,当θx≥1时, 预测y=1,θx≤-1时, 预测y=0。
②代价函数
逻辑回归与SVM的目标函数:
其中逻辑回归中蓝色框的部分的函数关于θx的图像如下:
分别用紫色直线段去逼近y=1和y=0对应的代价函数作为我们SVM的代价函数:
- If y=1(want θx≥1)当z=θx≥1时,代价函数才为0
- If y=0(want θx≤-1)当z=θx≤-1时,代价函数才为0
所以利用新的代价函数我们会得到更倾向 θx≥1、θx≤-1的参数以及更宽的决策边界(如下)。
1.2 代价函数中的C的作用
回顾SVM目标函数,C相当于逻辑回归里的1/λ:
𝐶 较大时,相当于 𝜆 较小,可能会导致过拟合,高方差。
𝐶 较小时,相当于 𝜆 较大,可能会导致低拟合,高偏差。
如果将正则项C设置很大的常数,则优化后第一项为0,此时的目标函数为第二项:
如果此时有一个异常点,将会得到红色的分类器,这是因为我们正则化参数C很大导致的结果,如果C设置的不要太大,最终会得到黑色分类器。所以当𝐶不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。
1.3 大间隔的直观理解
如果有一个正样本𝑦 = 1,其实我们仅仅要求𝜃𝑥≥0,就能用逻辑回归将该样本恰当分出。但是支持向量机的要求更高,不仅仅要能正确分开输入的样本𝜃𝑥≥0,我们还希望它远远大于0,比如𝜃𝑥≥1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。
①支持向量机的间距
下图中存在许多直线可以将正负样本区分开,但明显黑色直线效果最好,这条黑线离样本有更大的距离,这个距离叫做间距。支持向量机的原理就是努力用一个最大间距来分离样本,因此支持向量机有时被称为大间距分类器。
②间距的产生
向量内积
间距的产生过程就是支持向量机的工作原理,首先引入向量内积的概念:
其中P是v在u上的投影(标量),k是u在v上的投影,当uv之间夹角小于90°,P、K为负值,反之为正。
uv内积的物理意义:v在u上的投影P与u的长度的乘积,内积越大,表明两向量的方向越相似。
工作原理
为了简化,还是将C设为很大的数,有目标函数:
再令X0=0(决策边界的截距为0)、n=2(只有两个特征X1、X2)
对θX做内积变换有:
由上述约束条件,对比下图两个决策边界,SVM为什么会得到(b)的边界?
2. 带核函数的支持向量机
利用支持向量机的原理和核函数,可以建立复杂的非线性分类器,来解决无法用直线进行分隔的非线性分类问题。
2.1 核函数
回顾逻辑回归中的非直线分类,往往是构造新的更高阶的特征:
SVM也可以使用上述方法,但除了对原有的特征进行组合以外,有没有更好的方法来构造新的特征?
答:核函数,核函数的作用就是来计算出新的特征。将原始输入空间映射到新的特征空间,使原本线性不可分的样本在核空间可分。
核函数种类:多项式核函数,高斯核函数,Sigmoid核函数,字符串核函数等等,这些核函数的目标都是根据训练集和地标𝑙之间的距离来构建新特征f的。
实际应用中根据先验知识选择有效的核函数,若无先验知识,优先使用高斯核函数。
2.2 高斯核函数的SVM
高斯核函数:与正态分布没有关系。
由高斯核函数得到的新特征f1、f2、f3……为:
𝑙是选取的地标,当地标与X很近:f≈exp(0)=1;当地标与X很远:f≈exp(-∞)=0。
图中水平面的坐标为x1 x2,而垂直坐标轴代表f,σ²为方差。由上图可看出:只有当x与地标𝑙重合时𝑓才具有最大。随着x的改变𝑓值改变的速率受到σ²的控制。
𝜎较大时,特征𝑓改变缓慢,导致预测值变化慢,可能会导致低方差,高偏差;
𝜎较小时,特征𝑓改变快,导致预测值变化也快,可能会导致低偏差,高方差。
2.3 高斯核SVM步骤
如上是一个n=2,样本数m=3的训练集。给出模型学习步骤:
- 选择地标,根据训练集样本的数量选择地标的数量3,并且就令地标等于样本值,𝑙(3)是故意选取的远离x(3)的地标。有m个地标就会有m个𝑓,SVM的假设函数就变为𝜃𝑓,加上第一项𝑓0=1,所以θ和𝑓都是m+1维。
- 根据核函数计算出新的特征𝑓
- 当𝜃𝑓 >= 0 时,预测 𝑦 = 1,反之为0。
解:假设初始参数θ=[-0.5,1,1,0]有
4. 将新的假设函数带入目标函数中进行最小化,MATLAB中有现有的软件包可以直接调用(如liblinear,libsvm 等)。
2.4 如何选择SVM与逻辑回归
𝑛为特征数,𝑚为训练样本数。
- 如果相较于𝑚而言,𝑛要大许多(一般线性可分),即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
- 如果𝑛较小,而且𝑚大小中等,例如𝑛在 1-1000 之间,而𝑚在 10-10000 之间,使用高斯核函数的支持向量机。
- 如果𝑛较小,而𝑚较大,例如𝑛在 1-1000 之间,而𝑚大于 50000,计算f太多,使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。