SVM知识点简介

support vector machine(SVM)算法在金融等多个领域都有广泛的应用,下面我们就来介绍下SVM算法的基本知识点

SVM算法思想

回顾LR算法,分类器h(x) = g(\theta^Tx)其实是一个概率模型,当h(x) > 0.5,我们说样本属于正类,反之则为负类。但是对于h(x) = 0.5,你可以很自信的说该样本属于哪个类别吗?所以,LR分类判别算法应该存在一个“置信度”的量,比如,如果h(x) \gg 0.5(当然会小于1,等价地,我们可以理解为\theta^Tx非常大),我们会很确信地说,样本属于正类。用图像表示的话,见下图:

                                                             

我们知道LR是线性分类器,假设图中直线为\theta^Tx = 0也即分类面(当然这里原点坐标不是(0,0)),对于靠近分类面的点C(可以理解为\theta^Tx接近于0)我们不是很确信分类是否正确,但是对于远离分类面的点A(\theta^Tx \gg 0),置信度是很高的。

那么我们是否可以构建一种算法,在选择线性分类面时,使其和所有的点都有较远的距离呢?下面我们就来构建这种算法

基本SVM算法

(1)基本模型

首先规定我们的模型是一个二分类器,对于样本点\left \{ (x^{(1)},y^{(1)}), (x^{(2)},y^{(2)}),..., (x^{(m)},y^{(m)}) \right \}(为了方便,和LR算法将标签定义为(0,1)不同,我们这里定义标签为(-1,1),  考虑一个可以完全将两类样本点分割(注意,这里我们假设可以完全正确的分割数据)的分类面w^Tx + b = 0。我们的目标是,使得所有点和面的距离可以获得最大化,换句话说,我们要使距离分类面最近的那个点与分类面距离仍然很大,这么说有点绕口,我们来把问题公式化,这样会更清楚一些。

设点x^{(i)}到分类面的距离为\gamma^{(i)},则“距离分类面最近的那个点与分类面的距离”可以表示为:

                                                                                       \gamma = min_i \gamma^{(i)}

这样,我们的原始问题可以简化为(latex里不好写中文,这里就用英文代替了):

                                        max_{(w,b)} \quad \gamma \\ s.t. \quad x^{(i)} \; is \; correctly \; classified \quad i = 1,2,...,m

当然\gamma是需要用w和b来表示的,运用向量的知识,我们可以得到(这里就不赘述了,运用向量知识很容易求出) \gamma^{(i)} = y^{(i)}(\frac{w^Tx^{(i)} + b}{w^Tw}),所以有

                                                              \gamma= min_i \; y^{(i)}(\frac{w^Tx^{(i)} + b}{w^Tw})

注意到公式中的y,其作用是使得距离保持为正数(这样的话,错误分类的数据和分类面的距离就成了负数)。那么每一个样本都被正确地划分该如何表示呢?等价地,我们可以这么想,每一个样本和分类面间距都比上述的最小距离还要大,不就是正确分类了吗,所以限制条件可以表示为:

                                                                       y^{(i)}(\frac{w^Tx^{(i)} + b}{w^Tw}) \geq \gamma

(2)优化变换

我们知道,用w^Tx + b = 0表示一条直线,w和b可以是不唯一的;确切的说,如果(w,b)可以表示该直线,那么(C*w, C*b)也可以表示该直线(C为不为0的实数)。因此,给w和b加一条限制是有必要的,为了方便,我们将限制设为:

                                                                min_i \; y^{(i)}(w^Tx^{(i)} + b) = 1

(注意上式只包含w和b这两个未知数)。因此,经化简原问题转化为(1/2是人为加上去的,为计算方便):

                                                               max_{(w,b)} \quad \frac{1}{2}w^Tw \\ s.t. \quad y^{(i)}(w^Tx^{(i)} + b) \geq 1

很明显,以上为一个标准的二次规划问题,对于该类问题,我们有成熟的软件可以使用。注意,如果在限制条件中等号成立,可以确定点距离分类面的距离是所有点中最小的

SVM对偶解法以及核相关

(1)SVM原始问题的对偶问题

事情到这里好像结束了,但事实上我们有另外一种解决方法,它拓展了SVM的应用范围,并且也加快了SVM的计算速度。根据对偶性(duality)以及KKT条件,我们可以得出原问题的对偶问题:

                                                                

这里由于我们没有等式约束,所以\nu = 0,拉格朗日对偶函数详细形式为:

                                           g(\lambda) = min_{(w,b)} \frac{1}{2}w^Tw + \sum_i \lambda_i(1- y^{(i)}(w^Tx^{(i)} + b))

(2)运用KKT条件解对偶问题

原问题是凸优化问题,所以我们可以用KKT条件来求解,因此我们有:

                                                                       \lambda_if_i = 0\\ \bigtriangledown L(w,b,\lambda) = 0

f_i = 1 - y^{(i)}(w^Tx^{(i)} + b)这里多提一下SVM的一个重要性质,由于\lambda \geq 0,若f_i > 0亦即对应样本点并非最近的那个店,则其对应\lambda必为0,换句话说,如果\lambda_i = 0,其对应样本点很有可能就是距离分类面最近的那个店),且\bigtriangledown L(w,b,\lambda) = \frac{1}{2}w^Tw + \sum_i \lambda_i(1- y^{(i)}(w^Tx^{(i)} + b))。通过\bigtriangledown L(w,b,\lambda) = 0(分别对于w和b求偏导)我们可以很容易得出:

                                                           \frac{\partial L}{\partial w} = w - \sum \lambda_i y^{(i)}x^{(i)} = 0 \\ \frac{\partial L}{\partial b} = \sum -y^{(i)}\lambda_i = 0

代入拉格朗日方程(之所以可以代入,因为这不影响最优化问题解的正确性),我们可以得到:

                                               L \\ = \frac{1}{2}w^Tw + \sum \lambda_i - \sum \lambda_iy^{(i)}w^Tx^{(i)} - \sum \lambda_iy^{(i)} b \\ = \frac{1}{2}w^Tw + \sum \lambda_i - w^Tw \\ = \sum \lambda_i - \frac{1}{2}w^Tw \\ = \sum \lambda_i - \frac{1}{2}\sum \lambda_i\lambda_jy^{(i)}y^{(j)}((x^{(i)})^Tx^{(j)})

w和b被消了!这样,原始问题转化为:

                                                max_{\lambda} \sum_i \lambda_i - \frac{1}{2}\sum_i\lambda_i\lambda_jy^{(i)}y^{(j)}((x^{(i)})^Tx^{(j)})

                                                                s.t. \quad \lambda_i \geq 0 \\

                                                                 \sum_i\lambda_iy^{(i)} = 0

关于该优化问题的一种解法SMO算法,我们在另外一篇博客中介绍。

(3)核

观察目标方程\sum \lambda_i - \frac{1}{2}\sum \lambda_i\lambda_jy^{(i)}y^{(j)}((x^{(i)})^Tx^{(j)}),我们发现,x并没有显式地出现在目标方程中,取而代之的是不同x之间的内积,这样就极大的简化了计算,使得SVM非常适合于高维度数据的计算(同时由于连加符号,我们可以看出其对于数据量的计算复杂度很高)。

同时,根据之前章节的描述,SVM本质上是一个线性分类器,但如果线性分类器无法完美地将样本分类,我们可以考虑将样本投射到更高位的空间,{x}' = \phi (x),使其在高维空间可以被线性分类(关于高维空间更易于线性分类这一点这里不做详述,有很多参考文献可以说明此事实)。最令人兴奋的是,这种做法并不会增加计算的复杂度,因为我们最后的目标函数最后转化为了\sum \lambda_i - \frac{1}{2}\sum \lambda_i\lambda_jy^{(i)}y^{(j)}(( \phi (x^{(i)}))^T\phi(x^{(j)})),我们甚至不需要知道线性变换的具体形式,而只需要知道内积( \phi (x^{(i)}))^T\phi(x^{(j)})的具体形式即可。这样的话,原始样本甚至可以被投射到无限维!

关于核的选择以及使用,往往要依靠领域知识,我们在这里就不做展开说明了。

线性不可分情况

SVM的基本形态是一个硬间隔分类器,它要求所有样本都满足硬间隔约束(即函数间隔要大于1),所以当数据集有噪声点时,SVM为了把噪声点也划分正确,超平面就会向另外一个类的样本靠拢,这就使得划分超平面的几何间距变小,降低模型的泛化性能。为了解决该问题,我们引入松弛变量来构造一个软间隔分类器,它允许一些点的分类犯错误,但也因此对于噪声点不再那么敏感。

前面章节我们介绍过,为了优化问题的简化,我们限制min_i \; y^{(i)}(w^Tx^{(i)} + b) = 1,我们这里把y^{(i)}(w^Tx^{(i)} + b)称为函数间隔。那么优化问题:

                                                                          min_{(w,b)} \quad \frac{1}{2}w^Tw \\ s.t. \quad y^{(i)}(w^Tx^{(i)} + b) \geq 1

中的限制条件可以理解为对于所有点,函数间隔大于1。如果是软间隔问题,我们自然要放宽要求,函数间隔只要大于一个小于1的正数即可,这样我们为每个点设置一个松弛变量\xi_i来放宽限制,问题转变为:

                                                                          min_{(w,b)} \quad \frac{1}{2}w^Tw \\ s.t. \quad y^{(i)}(w^Tx^{(i)} + b) \geq 1 - \xi_i \\ s.t. \quad \xi_i \geq 0

但同时松弛变量不可以太大,因为过大的松弛变量会使得过多的点得不到正确划分,所以为了限制其大小,我们在目标函数中加入惩罚项C\sum_i \xi_i,优化问题转化为:

                                                                        min_{(w,b)} \quad \frac{1}{2}w^Tw + C\sum_i \xi_i\\ s.t. \quad y^{(i)}(w^Tx^{(i)} + b) \geq 1 - \xi_i \\ s.t. \quad \xi_i \geq 0

其中C称为惩罚因子,C越大,我们对于不可线性区分的点越严格。

之后我们依然可以按照对偶变换的方法解决该优化问题,这里不再重复。

总结

SVM的优点:

1. 从SVM的最优化问题形式我们可以看到,对于高维数据,我们只要知道其核的解析表达式而非其特征的具体表达式,所以SVM非常适合高维数据,尤其是数据维度大于样本数量的情形。

2. 可以通过是不同的核函数来解决不同领域的问题。

SVM的缺点:

1. 对于样本数量的复杂度比较高,不适用与样本量大的数据。

2. 核函数需要人为选择

3. 不适用于特征数量庞大的数据,因为这样会造成决策树生长缓慢

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值