SVM之问题形式化

   SVM之对偶问题

>>>SVM之核函数

   SVM之解决线性不可分

   写在SVM之前——凸优化与对偶问题

上一篇SVM之对偶问题中讨论到,SVM最终形式化为以下优化问题\[\begin{align}\left\{ \begin{matrix}\underset{\alpha }{\mathop{\max }}\,\sum\limits_{i}{{{\alpha }_{i}}}-\frac{1}{2}\sum\limits_{i,j}{{{\alpha }_{i}}{{\alpha }_{j}}{{y}^{i}}{{y}^{j}}<{{x}^{i}},{{x}^{j}}>}  \\s.t.\left\{ \begin{matrix}{{\alpha }_{i}}\ge 0  \\\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}}=0  \\\end{matrix} \right.  \\\end{matrix} \right.\end{align}\]

而且最终的判别式可以写成\[\begin{align}{{w}^{T}}x+b=\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}<{{x}^{i}},x>}+b\end{align}\]

之前已对(1)的求解做了简单提及,需要注意的是,优化问题(1)虽然可以直接求解,但是要基于训练数据线性可分的基础,如果数据本身线性不可分呢?

解决方法之一就是将数据,或者更加正式的称为特征,向高维映射,以期待映射后数据在更高维的空间中数据可分,这样就可以在新的高维空间中继续使用之前的方法。

简单起见,考虑一维不可分的数据

显然,原始的一维数据是线性不可分的,现在取映射$\phi (x)=(x,{{x}^{2}})$ 将原始的一维数据映射到二维,数据变的线性可分了。这种向高维映射的方法一定程度上解决的线性不可分问题,但同时也带来了相当的计算复杂度。

SVM现在将在新的二维空间运行,原来问题中的$x$ 将用$\phi (x)$ 取代,优化问题中向量内积$<{{x}^{i}},{{x}^{j}}>$ 也将被$<\phi ({{x}^{i}}),\phi ({{x}^{j}})>$ 取代,判别函数中向量内积$<{{x}^{i}},x>$也将被$<\phi ({{x}^{i}}),\phi (x)>$取代,换句话说,我们需要将原来所有一维训练样本首先一个个计算,映射到新的二维空间,然后在二维空间中计算新样本之间的内积。这与原来直接在一维空间中直接计算一维向量内积相比,虽然并不会复杂多少,然而随着样本维度和映射后维度的增加,计算复杂的的提升是非常显著的,甚至变得不可计算。(这不是危言损听,比如高斯核将样本映射的无限维空间,那么怎么计算呢?)

已经说过,上面的过程是由两个步骤组成的。首先是映射,其次是计算映射后的内积。但其实我们真正需要的知道的只是映射后的内积,我们不需要$\phi (x)$ 、$\phi ({{x}^{i}})$ 、$\phi ({{x}^{j}})$ ,我们真正需要的是$<\phi ({{x}^{i}}),\phi ({{x}^{j}})>$和$<\phi ({{x}^{i}}),\phi (x)>$,这对优化问题(1)和判别函数(2)来说已经足够了。然而,怎么绕过映射本身而直接求解映射后向量内积呢?核函数就是用来做这样的事情。

核函数定义为 \[\begin{align}K(x,y)=<\phi (y),\phi (y)>\end{align}\]

以上核函数的定义应该来讲是“意义化”的,而不是“计算化”的,定义中出现$\phi (x)$ 、$\phi (y)$ 并不表明需要显式计算映射本身,而是来说明核函数的意义是映射后向量的内积,而核函数“计算化”的定义是需要我们自己设计给出的。

还是上面一维到二维的例子,考虑两个一维样本$x$和$y$ 映射到二维样本$\phi (x)=(x,{{x}^{2}})$ 和$\phi (y)=(y,{{y}^{2}})$,则\[\begin{align*}<\phi (x),\phi (y)> & ={{(x,{{x}^{2}})}^{T}}(y,{{y}^{2}}) \\& =xy+{{(xy)}^{2}} \\\end{align*}\]

那么,我们就可以定义对应的核函数为\[K(x,y)=xy+{{(xy)}^{2}}\],这和映射到二维后再计算内积的结果是一样的,但是现在直接计算$K(x,y)=xy+{{(xy)}^{2}}$使得我们不需要关心映射本身,而且计算是在原来的一维空间进行的。当样本维度增加时,这样方法带来的计算优势是不言而喻的。这就是核函数的主要作用,它隐藏映射本身而直接在低维空间计算高维空间向量的内积,显著降低计算复杂度。这简直就像加了特技,duang一下就完成了高维空间内积的计算,所以有些文献将核函数称为kernel trick,是trick,是特技!

那么,当我们需要将样本向高维空间映射以期望将数据变得线性可分时,怎样找到这种映射对应的核函数呢?上面一维到二维的示例过于简单,可以很方便的找到对应的核函数,当样本维度较高时,设计一个核函数并非易事。幸运的是,牛人们已经帮我们设计好了许多核函数,所以我们现在不需要根据映射去设计对应的精确的核函数,而是反过来选取设计好的核函数来尽可能满足我们的映射,保证映射后数据尽可能的线性可分。

常见的核函数有高斯核、多项式核、感知器核等。

高斯核:$K(x,y)=\exp (-\frac{{{\left\| x-y \right\|}^{2}}}{2{{\sigma }^{2}}})$

多项式核:$K(x,y)={{(<x,y>+c)}^{d}}$

感知器核:$K(x,y)=\tanh ({{\rho }_{1}}<x,y>+{{\rho }_{2}})$

这些核函数都对应不同的映射,拥有不同的性质。比如高斯核对应一个到无限维空间的映射,而且高斯核的意义比较明确:对原空间内相近的两个向量$x$、$y$计算 结果的数值较大,反之较小,参数$\sigma $ 控制这核函数值随${{\left\| x-y \right\|}^{2}}$变化的速度;多项式核对应一个到$C_{n+d}^{d}$ 维的映射。仅从这两个其他核函数的映射维度来看,核函数在降低计算复杂度上是很显著的,比如对多项式核,可以取$n$ (原样本维度)和$d$ 为不同值,看看映射后维度有多高。其他关于核函数本身的性质可以去查看专门的文献。作为一般应用,以上几个核函数可能在很多情况下已经够用了,而且高斯核应用最广。

已经选取好核函数之后,需要做到就是将原来的优化问题和判别函数中的向量内积用核函数替代,这样优化问题变为:\[\begin{align}\left\{ \begin{matrix}\underset{\alpha }{\mathop{\max }}\,\sum\limits_{i}{{{\alpha }_{i}}}-\frac{1}{2}\sum\limits_{i,j}{{{\alpha }_{i}}{{\alpha }_{j}}{{y}^{i}}{{y}^{j}}K(x{{,}^{i}}{{x}^{j}})}  \\s.t.\left\{ \begin{matrix}{{\alpha }_{i}}\ge 0  \\\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}}=0  \\\end{matrix} \right.  \\\end{matrix} \right.\end{align}\]

判别函数变为:\[\begin{align}{{w}^{T}}x+b=\sum\limits_{i}{{{\alpha }_{i}}{{y}^{i}}K({{x}^{i}},x)}+b\end{align}\]

现在我们去求解优化问题(4)后用判别式(5)对新样本分类。

需要注意,核函数不是SVM的专利,只是在SVM中的一个应用,其他所有存在向量内积的场景,如果需要都可以引人核函数。

核函数隐藏着一个到高维的映射,可能使得数据在高维变得线性可分,但并不保证映射后一定是线性可分的。那怎样彻底处理线性不可分的问题呢?其实可以换个思路,我们并不要求数据一定得线性可分,不过如果有些样本错分了,我们给它一个惩罚代价,并将惩罚代价引人优化目标,这样的话,虽然分类器不能保证对训练数据线性可分,但它会根据我们给出的惩罚因子找到代价最小的分类器。这个问题将在下一篇文章SVM之解决线性不可分中介绍。

SVM之核函数的更多相关文章

  1. 6. 支持向量机(SVM)核函数

    1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...

  2. svm常用核函数介绍

    这里有一篇博文介绍了,每个核函数的用途: https://blog.csdn.net/batuwuhanpei/article/details/52354822 在吴恩达的课上,也曾经给出过一系列的选 ...

  3. svm常用核函数

    SVM核函数的选择对于其性能的表现有至关重要的作用,尤其是针对那些线性不可分的数据,因此核函数的选择在SVM算法中就显得至关重要.对于核技巧我们知道,其目的是希望通过将输入空间内线性不可分的数据映射到 ...

  4. [白话解析] 深入浅出支持向量机(SVM)之核函数

    [白话解析] 深入浅出支持向量机(SVM)之核函数 0x00 摘要 本文在少用数学公式的情况下,尽量仅依靠感性直觉的思考来讲解支持向量机中的核函数概念,并且给大家虚构了一个水浒传的例子来做进一步的通俗 ...

  5. 机器学习——支持向量机(SVM)之核函数(kernel)

    对于线性不可分的数据集,可以利用核函数(kernel)将数据转换成易于分类器理解的形式. 如下图,如果在x轴和y轴构成的坐标系中插入直线进行分类的话, 不能得到理想的结果,或许我们可以对圆中的数据进行 ...

  6. 机器学习:SVM(核函数、高斯核函数RBF)

    一.核函数(Kernel Function) 1)格式 K(x, y):表示样本 x 和 y,添加多项式特征得到新的样本 x'.y',K(x, y) 就是返回新的样本经过计算得到的值: 在 SVM 类 ...

  7. 支持向量机 (二): 软间隔 svm 与 核函数

    软间隔最大化(线性不可分类svm) 上一篇求解出来的间隔被称为 "硬间隔(hard margin)",其可以将所有样本点划分正确且都在间隔边界之外,即所有样本点都满足 \(y_{i ...

  8. SVM算法核函数的选择

    SVM支持向量机,一般用于二分类模型,支持线性可分和非线性划分.SVM中用到的核函数有线性核'linear'.多项式核函数pkf以及高斯核函数rbf. 当训练数据线性可分时,一般用线性核函数,直接实现 ...

  9. 详解SVM模型——核函数是怎么回事

    大家好,欢迎大家阅读周二机器学习专题,今天的这篇文章依然会讲SVM模型. 也许大家可能已经看腻了SVM模型了,觉得我是不是写不出新花样来,翻来覆去地炒冷饭.实际上也的确没什么新花样了,不出意外的话这是 ...

随机推荐

  1. 学习新框架laravel4 第一天(- -! 新公司版本使用的4,所以还要重新学习)

    路由使用: //根目录 Route::get('/', function() { return View::make('hello'); }); 自定义模板: /app/views/home/inde ...

  2. hadoop生态搭建(3节点)-09.flume配置

    # http://archive.apache.org/dist/flume/1.8.0/# ===================================================== ...

  3. [OpenCV][关于OpenCV3.2.0+VS2015+Win10环境搭建]

    在VS2015上搭建OpenCV3.2.0+Win10 1.OpenCV3.2.0在VS2015上的配置 1).下载.解压OPENCV 登陆OpenCV官方网站下载相应版本的OpenCV-SDK 这里 ...

  4. linux 搭建ss

    因为收藏的各种教程被xx,所以决定自己写 第一步.安装ss sudo pip install shadowsocks 第二步.配置IP.端口.密码.加密方式 vi /etc/shadowsocks.j ...

  5. [HDU6315]Naive Operations(线段树+树状数组)

    构造一个序列B[i]=-b[i],建一颗线段树,维护区间max, 每次区间加后再询问该区间最大值,如果为0就在树状数组中对应的值+1(该操作可能进行多次) 答案在树状数组中找 其实只用一颗线段树也是可 ...

  6. chapter1

    任何语言的开篇,想要学下去肯定要搞环境啦,下面我们就开始. 安装Kali Linux 虚拟机 首先进入kali的官网https://www.kali.org/downloads/,因为是新手,因此建议 ...

  7. shiro中基于注解实现的权限认证过程

    授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限等等. 一.用户权限模型 为实现一个较为灵活的用户权限数据模 ...

  8. Ruby数据类型

    数字类型 书写整数时,可以根据需要在整数之间任意加入下划线而不会影响数字的值 a=123_45_78 puts a # => 12345678 to_i 截掉小数点之后的数字取整 内置Math模 ...

  9. SpringBoot学习:整合shiro(rememberMe记住我功能)

    项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 首先在shiro配置类中注入rememberMe管理器 /** * cookie对象; ...

  10. VIN码识别/车架号OCR识别:快速占领汽车后市场数据入口

    大数据时代,企业在数据入口方面的竞争越来越激烈,这种对于入口级的大数据“争夺战”,让很多企业在数据挖掘和收集的技术方面开始加快更新速度. 在当前IT行业激烈竞争环境之下,对于入口产品的控制成为了大数据 ...