Skip to content

Stanford机器学习笔记——SVM

1. 优化目标 ​

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

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

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

即:

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

函数图像如下:

回顾在逻辑回归中:

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

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

因此:

  • 当 y=1 时,需要 θTx≥1
  • 当 y=0 时,需要 θTx≤−1

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

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

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

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

因此我们的优化目标为:

minθ12∑j=1nθj2

2. 大间距分类 ​

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

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

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

u→⋅v→=u→Tv→=p‖v→‖

其中:

  • 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))=e−‖x−l(i)‖22σ2=e−∑j=1n(xj−lj(i))22σ2
  • 若 x≈l(i),则 fi≈1
  • 若 x 离 l(i) 很远,则 fi≈0

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

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

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

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