1. 了解SVM
1. Logistic regression 与SVM超平面
给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( $W^T$中的T代表转置):
$W^Tx+b=0$
这个可以说是我们熟悉的logistic regression的变形。
Logistic regression目的是从特征中学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic function(或称作sigmoid function)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。
假设函数
从而,当我们要判别一个新来的特征属于哪个类时,只需求 $h_θ(x)$ 即可,若$h_θ(x)$大于0.5就是y=1的类,反之属于y=0类。
此外,$h_θ(x)$ 只和$θ^Tx$有关,$θ^Tx > 0$,那么$h_θ(x) > 0.5$,而$g(z)$只是用来映射,真实的类别决定权还是在于$θ^Tx$。
再者,当$θ^Tx \gg 0$时,$h_θ(x)=1$,反之$h_θ(x)=0$。如果我们只从$θ^Tx$出发,希望模型达到的目标就是让训练数据中y=1的特征$θ^Tx \gg 0$,而是y=0的特征$θ^Tx \ll 0$。Logistic回归就是要学习得到$θ$,使得正例的特征远大于0,负例的特征远小于0,而且要在全部训练实例上达到这个目标。
接下来,尝试把logistic regression做个变形。首先,将使用的结果标签$y = 0$和$y = 1$替换为$y = -1,y = 1$,然后将 $θ^Tx=θ_0+θ_1x_1+...+θ_nx_n,(x_0=1)$ 中的 $θ_0$替换为$b$,最后将后面的$θ_1x_1+θ_2x_2+...+θ_nx_n$替换$W^Tx$。
如此,则有了$θ^Tx=W^Tx+b$。也就是说除了y由y=0变为y=-1外,线性分类函数跟logistic regression 的形式化表示$h_θ(x)=g(θ^Tx)=g(W^Tx+b)$没区别。
2. 间隔与支持向量
给定训练样本集$D={(x_1,y_1), (x_2, y_2),...,(x_m, y_m)}$, $y_i\in{-1, +1}$, 分类学习最基本的想法就是基于训练集$D$在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下图:
直观上来看,应该去找位于两类训练样本“正中间”的划分超平面,即上图中最粗的那条,因为该划分超平面对训练样本局部扰动的“容忍”性最好。例如,由于训练集的局限性或噪声的因素,训练集外的样本可能比上图中训练样本更接近两个类的分个界,这将使许多划分超平面出现错误,而中间最粗的超平面受影响最小。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的范化能力最强。
给定一个超平面 $W^Tx+b=0$, 样本空间中任意点$x$到超平面$(W,b)$的距离(几何间隔)为:
$r=\frac{\lvert{W^Tx+b}\rvert}{\lVert{W}\rVert}=\frac{y*(W^Tx+b)}{\lVert{W}\rVert}$
这里分子上的$\lvert{W^Tx+b}\rvert$我们成为“函数间隔”。
而超平面(w,b)关于D中所有样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集D的几何间隔:
$r= \min r_i$
假设超平面$(W,b)$能将训练样本正确分类,即对于$(x_i, y_i)\in{D}$, 若 $y_i= +1$ 则有 $W^Tx_i+b>0$;若 $y_i= -1$ 则有 $W^Tx_i+b<0$. 我们:
$W^Tx_i+b \ge +1, y_i = +1;$
$W^Tx_i+b \le -1, y_i = -1.$
这里也就是令这个超平面关于训练集的几何间隔为1。
如下图所示,距离超平面最近的这几个训练样本使得上式的等号成立,他们被称为“支持向量”,两个异类支持向量到超平面的距离之和为
$\gamma = \frac{2}{\lVert{W}\rVert}$
它被称为“间隔”。
而对于一个数据集进行分类,当超平面离数据集的“间隔”越大,分类确信度也越大。所有,为例获得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值,即
$\max \limits_{W,b}\frac{2}{\lVert{W}\rVert}$
s.t. $y_i(W^Tx_i+b) \ge 1, i=1,2,...m.$
显然,为了最大化间隔,仅需最大化 ${\lVert{W}\rVert}^{-1}$. 这等价于最小化 ${\lVert{W}\rVert}^{2}$, 于是,上式可重写为:
$\min \limits_{W,b}\frac{1}{2}{\lVert{W}\rVert}^{2}$
s.t. $y_i(W^Tx_i+b) \ge 1, i=1,2,...m.$
这里的意思就是找到合适的$W$和$b$,使得每个样本都能正确分类且每个样本到这个超平面的“函数间隔”都大于1的前提下,能最小化${\lVert{W}\rVert}^{2}$。到这里为止,这就是支持向量机(Support Vector Machine)的基本型。
2. 核函数
前面的讨论中,我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。 然而在实际任务中,原始样本空间也许并不存在一个能正确划分两类样本的超平面。
对这样的问题,我们可以将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内变得线性可分。幸运的是,如果原始空间是有限维,即特征数有限,那么一定存在一个高维特征空间使得样本可分。
令$Φ(x)$表示将$x$映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为:
$f(x) = W^TΦ(x)+b$
常见的核函数有:
高斯核又称为RBF径向基核。
参考:
周志华 机器学习
http://blog.csdn.net/v_july_v/article/details/7624837