date: 2020/01/24


Week7

支持向量机(Support Vector Machine, SVM)


优化目标

首先回顾一下逻辑回归问题,

image.png

通常采用代价函数

这里暂时只考虑单个样本的代价

 

也即 

代价中分为 y=1 和 y=0 两个部分,可以画出它们的曲线

image.png


在支持向量机中,希望用更为简单的曲线替代代价函数的这两个部分,如上图紫色曲线所示。

替代的部分分别是分段函数,如上示意图,它们的优化目标分别是

完整的SVM代价函数为


image.png


与逻辑回归的代价函数相比,除了的变化之外,

  1. 代价函数里的负号和提到了常数C里,这其实没啥影响
  2. 逻辑回归给惩罚项乘以因子,而SVM习惯给代价项乘以因子C来控制惩罚程度
  3. 逻辑回归习惯输出一个[0.0, 1.0]的概率值,而SVM则直接输出分类结果0和1


相比于神经网络,SVM是个凸优化问题,是可以找到全局最优点的,训练起来也很快。


大边距分类器

SVM可以看作是一个大边距分类器,

image.png

首先看一下逻辑回归,这是一个2特征2分类问题,x1和x2是两个不同维度的特征,红叉和圆圈是两个不同的分类。寻找一条分界线,把两个分类区分开来,这样的分界线有很多(如上图的黑、绿、紫三线),逻辑回归目标就是找到一条最佳的分界线。

image.png

而SVM加入了新的约束,鼓励预测分界线(如上图黑线)跟类别的实际分界线(如上图蓝线)要保留足够的间距。


核函数

现实环境往往比较复杂,不是简单地找一个直线(或是高维的超平面)一刀切就能根据一系列原始特征分为两类。

image.png

如上图的情形,我们很可能需要利用更高阶的特征,构造出类似

的模型,为了推广这种利用复杂特征的形式,我们可以记

那么

这意味着我们用原始特征构造出了更多新的、可能更高阶的、复合的特征


除了像前述的直接乘积的形式之外,还可以选定一些地标(landmarks)如,通过衡量原始特征与地标间的距离来构造新特征

image.png

比如常用的高斯核(Gaussian Kernel)函数,

(注:这个函数与正态分布没什么实际上的关系,只是看上去像而已

其中是人为设置的超参,其对曲面的影响可以参考下面三图:

image.png

当且仅当时,才能取得最大值;

距离越远,越小,并趋近于零

随距离的变化速度由控制,越小,变化速度越快(换言之,对距离变化越敏感)。


回过头考虑刚才的例子,

image.png

模型

通过计算原始特征与地标间的距离(高斯核函数),然后对新的特征进行线性回归


除了高斯核还有其他一些核函数,比如


至于如何选择地标,我们可以直接选取训练集的所有实例的输入特征作为地标,

比如训练集有m个实例

那么可以取m个地标

这样一来,我们的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的!

这就有点像KNN啦,只不过选择不同的距离函数,而且需要学习一系列权重


逻辑回归&支持向量机

什么时候使用逻辑回归,什么时候使用支持向量机(SVM)?

  1. 如果特征数远大于样本数,选用逻辑回归或者不带核函数的SVM;
  2. 如果特征比较少(如1-1000),样本数也不会太多(如10-10000),使用高斯核函数的SVM;
  3. 如果特征比较少(如1-1000),样本数非常多(如50000以上),则SVM非常慢,更好的方法是创造更多特征,退化回逻辑回归或者不带核的SVM(即情形1)