Skip to content

Stanford机器学习笔记——SVM

1. 优化目标

SVM 即支持向量机(Support Vector Machines),是一种大间距分类算法。

回顾在逻辑回归中,一个样本的损失函数为:

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

即:

Cost(x,y)=ylog11+eθTx(1y)log(111+eθTx)
  • y=1 时:Cost(x,y)=log11+eθTx
  • y=0 时:Cost(x,y)=log(111+eθTx)

函数图像如下:

回顾在逻辑回归中:

  • y=1 时,需要 θTx0
  • y=0 时,需要 θTx<0

现在我们用另一个图像来近似拟合上面的损失函数,来得到一个更加严格的约束:

因此:

  • y=1 时,需要 θTx1
  • y=0 时,需要 θTx1

我们记 y=1 的损失函数为 cost1,记 y=0 的损失函数为 cost0。令 SVM 的优化目标为:

minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθj2

假设将 C 设置的比较大,那么我们希望:

i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]=0

因此我们的优化目标为:

minθ12j=1nθj2

2. 大间距分类

SVM 能够很好地进行大间距分类。如图:

图中,三条线都能够将两类分开,但是很明显,实线比另外两条虚线划分的更好。因为两个类别的样本到实线的距离相对较大,而到虚线的距离相对较小,因此容易误判。

在数学上,两个向量点乘:

uv=uTv=pv

其中:

  • p 表示向量 u 在向量 v 方向上投影的长度
  • v 表示向量 v 的长度

因此:

θTx=pθ

其中 p 表示 xθ 方向的投影长度。我们知道 θ 为分界线的法向量反向,因此 p 可以在一定程度上反映 x 到分割线的距离。因此我们希望 p 尽量大,也就是 θ 尽量小。而:θ2=j=1nθj2,因此这也就与前面的优化目标相一致了。

3. Gaussian Kernel

上面的分析我们假设都是线性可分的,然而实际上许多情况并非是线性可分。在这种情况下,我们可以通过将样本特征通过一定的函数映射,转化为线性可分。这里以高斯核为例。

将样本的 n 个特征映射为新的 k 个特征 f1,f2,...,fk。首先我们先选择 k 个点 l(1),l(2),...,l(k),定义:

fi=similarity(x,l(i))=exl(i)22σ2=ej=1n(xjlj(i))22σ2
  • xl(i),则 fi1
  • xl(i) 很远,则 fi0

下面是当 l(1)=[35] 时,f1 的图像:

在得到这些新的特征后,我们对这些新的特征使用 SVM。

在实际过程中,如何选择参照点 l(i) 呢?实际上,可以直接将 m 个样本点作为 m 个参照点,即:

l(1)=x(1),l(2)=x(2),...,l(m)=x(m)