【ng公开课笔记08】SVM

1.优化目标

首先先来复习一下逻辑回归:
下面是逻辑回归的假设函数

image_1blk0li1a5pb1u87duf1mblvcv9.png-160.5kB

如果有一个y=1的样本,如果能够让它能够被正确分类,即希望 ,就需要 。y=0时同理

下面是逻辑回归一个样本的代价函数计算公式,总代价函数即是每个样本的代价求和再取均值
image_1blk0v4sc2i9v1h1hf21ta61fk3m.png-90.5kB

image_1blk115gp12t9122u1e9t1ch71c1613.png-58.1kB

通过函数图像可以看到,当 时,cost->0,与上述结论相似。

在svm中我们在上述代价函数基础上进行简化:

image_1blk15q3r1husdg91p6p491ruj1t.png-143.2kB

得到SVM的代价函数:

image_1blk17dlvp8i13gfg1vgkkqtj2a.png-389.6kB

与逻辑回归区别,除了代价函数的变化,系数也进行了一些调整。

2.大边界的直观理解

image_1blk1euln1stm1hqf1hrbrps1c8i2n.png-232.3kB

这是上一部分我们得出的svm代价函数模型。在逻辑回归中,我们只需要z>0就可以将样本分类为1,z<0将样本分类为0。但在SVM中,只有z>1或者z<-1时才能将样本确定为类型1或0。相当于在SVM中加入了一个安全(距离)因子。

那这个因子导致了什么结果?从一个特特例来看,将C设为一个很大的数如100000,观察支持向量机

image_1blk3hioemch18jq12ru146mb6234.png-95.4kB

如果C很大,我们想要最小化代价函数,就希望得到一个第一项为0的最优解。当我们最优化 函数后,会得到一个决策边界

image_1blk3qad616341tk4t8hvcd1ppo3u.png-60.6kB

支持向量机会选择黑色的边界。但其他的边界也可以分开样本(但看起来不自然),那为什么会选择黑色的?

image_1blk414qj1futdn8f3p88p7r14b.png-82.5kB

如果我们在样本边界做分界线的平行线,我们可以看到黑色分界线和样本间有更大的最短距离,所以支持向量机也被称为大间距分类器。

我们来看一下C这个系数的作用:

像下面的样本,我们可以得到一条垂直于x轴的分界线

image_1blk44qa095etfk1dqtm381pcf55.png-40.5kB

但如果加入了一个异常点

image_1blk44f111kl3ntr1h5q1h5f1mdv4o.png-55.1kB

当C很大时,我们将会得到粉色的分界线,而C较小时,依然得到黑色的分界线。
(我们可以将C看作 ,当C很大,即正则化系数很小,容易过拟合)

3. 大边界分类器的数学原理

svm的目标函数(第一项优化为0):

image_1blk4qf8ndc71rln1se870a2mh5i.png-17.6kB

为了方便,我们将 ,将特征数n=2

目标函数可以写为

将x也画在图像上

image_1blk4soi1fui80l164klmp1k9n5v.png-205.5kB

$$\theta^Tx=p\mid\theta\mid$$

image_1blk6g7mo5r1akaifd1g601ba36c.png-131.3kB

是和决策边界正交的,我们可以看到,如果是正样本,p>0,负样本则p<0如果选择如图的边界p会非常小.而我们优化目标函数的时候,我们需要 ,但在这里p很小,就需要θ很大。但我们的优化目标是找到一个较小的theta。所以我们需要选择一个边界使得p最大。

image_1blk6ldleker4degq91p1qhes6p.png-328.9kB

4.核函数

对于之前讨论过的非线性分类问题,我们之前通过多项式的形式解决。但通常代价较大,所以我们换一种方式来解决。

image_1blk76i1d1sukbm01mcli71m7o76.png-120.4kB

image_1blk77e9898b3nhmtu1ahd1j807j.png-107.1kB

通过核函数得到f用作新的特征。

给定一个训练实例x,利用x的各个特征与预先选定的地标(landmarks)l的近似程度来选取新的特征f1,f2,f3

image_1blkbmp3g10rl1t75gnu1043op580.png-19kB

其中

similarity(x,l)就是核函数,上述是一个高斯核函数

注:与正态分布没什么关系,只是看起来像

如果一个训练实例x与地标l的距离近似于0,则f=1,如果距离较远,f=0

image_1blkc9h2qbn51t259nqnl0srp8d.png-403.6kB

image_1blkcbcd31iqcpcvn20frlmt78q.png-309.3kB

如何选择地标

通常根据训练集的数量选择地标的数量,如果训练集中有m个实例,则我们选取m个地标,并且令 ,这样的好处在于,新特征是建立在原有特征与训练集中所有其他特征之间的距离的基础上

image_1blkcth651fjv41cbqhvq1107i97.png-363.6kB

将核函数运用的支持向量机中:

  • 给定x,计算新特征f,当 时,预测y=1,否则y=0。修改代价函数为:

image_1blkdfo7q7cs13dq43v1tsf1h389k.png-34.1kB

具体实施时,还需对归一化进行调整,在计算 时,用 代替 ,M是根据核函数选择的一个矩阵,帮助简化计算

当SVM不使用核函数时,也可称为线性核函数。当训练集特征很多而实例很少时,可以采用线性核函数向量机。

下面是SVM的两个参数C和 的影响:

image_1blkdnt7g1o081j2ht6t8sq122ja1.png-36kB

5.使用SVM

其他的核函数:

  • 多项式核函数
  • 字符串核函数
  • 卡方核函数
  • 直方图核函数
  • ……

使用时的一些准则:
n为特征数,m为训练样本数

  1. 相较于m而言,n要大很多,即训练数据量不够我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机
  2. 如果n较小,m大小中等,如n在1-1000之间,m在10-10000之间,使用高斯核函数
  3. 如果n较小,m较大,如n在1-1000之间,m大于50000,在使用是svm会非常慢,解决方案是创造更多特征,然后使用逻辑回归或者线性核函数