Week7: Support Vector Machines

因为时间上的限制,本周必须要把Course的课程看完,之后开始步入实战,所以周二就搞定了第七周的内容。支持向量机(Support Vector Machines)这个词很早就听过,今天总算是学到了这个知识点。

线性可分和非线性可分

什么是线性可分?例如对于下图所表示的数据集,我们可以用一条直线将红蓝圆点分开,就叫做这个问题是线性可分问题。(下图均出自知乎,作者简之

但是当数据变多的时候,也许会出现一些错误分类,例如下图:

线性不可分就是说,对于下面这张二维数据,你无法用一条直线将其分开:

最大间距和升维

SVM可用于线性可分,也可以用于线性不可分问题。

对于线性可分问题,SVM的策略是选取一个“间距”最大的划分直线,也就是下图的黄色区域越大越好。

因为这样的话,在数据增多的情况下,仍有比较好的分类效果。

而对于线性不可分问题,SVM的策略是将数据升维,在二维上看起来无法用直线划分解决问题,将其提升到三维用一个平面进行划分。

核函数

首先,线性模型的预测函数为:

$x_1 … x_n$ 是特征值,将其替换为 $ f_1 … f_n$ 就得到了SVM模型的预测函数:

$f_i$ 就是 $x_i$ 的核函数,它通常是非线性的,例如 $f_i = x_i x_{i+1} (i < n)$ ,可以知道,$f_i$ 其实是一个映射函数。

通过$f_i$ 的映射,可以将低维特征转化为高维特征,所以SVM对非线性也有很好拟合能力。

常用的核函数有:

  • 线性核:$κ(x, x_i) = x·x_i$
  • 多项式核:$κ(x, x_i) = ((x · x_i) + 1)^d$
  • 高斯核(RBF):$κ(x, x_i) = exp(- \frac {||x - x_i||^2} {δ^2}) $

高斯核

假设SVM模型为:

值得注意的是,$f$ 的数量不一定和特征 $x$ 数量一样,例如模型中 $f$ 有3个,而特征 $x$ 只有2个。

我们可以在数据集中取三个点 $l^{(1)}, l^{(2)}, l^{(3)}$,函数 $f_i$ 就是点 $x$ 到点 $l^{(i)}$ 的相似度(similarity),它的计算公式为:

$f_i =similarity(x, l^{(i)}) = exp(- \frac {||x - l^{(i)}||^2} {2δ^2}) $

假设 $l^{(1)} = [1,3], δ = 1$ 那么$f_1 = exp(-(x1- 1)^2 - (x2 - 3)^2)$,它表示的是一个三维曲面。

Cost Function

逻辑回归的代价函数为:

SVM对 $y = 0$ 和 $y = 1$ 两种情况所对应的曲线用直线代替了,如下图:

这样一来,我们得到了 $cost_1$ 和 $cost_2$ 函数,所以SVM的代价函数变成了:

Cost Function 正规化

逻辑回归中的 $\lambda$ 是正规化参数,SVM中C参数有着相似的作用,先看逻辑回归的代价函数:

常数项只影响最优值大小,而不会影响取得最优值时的参数,所以可以去掉上图的 $m$。

并且 $\lambda $ 作用于左边的误差上,而不是右边的 $\theta$ 上就得到了:

其中 $C$ 的作用类似于$\frac {1} {\lambda}$ 。

C和δ参数

C参数作用于代价函数,它的作用类似于$\frac {1} {\lambda}$ ,所以

  • C大 → 方差大,偏差小
  • C小 → 方差小,偏差大

δ参数作用于高斯核函数,可以发现δ越大,函数值的的变化率其实越小,所以随着x远离 $l^{(i)}$ ,函数值降低的比较慢,那么方差就越小,偏差就越大,所以

  • δ大 → 方差小,偏差大
  • δ小 → 方差大,偏差小

总结

我觉得SVM的核心就在于$f$ 核函数,通过升维来解决低维问题着实厉害。

坚持原创文章分享,您的支持将鼓励我继续创作!