SVM是机器学习里面最强大最好用的工具之一,它试图在特征空间里寻找一个超平面,以最小的错分率把正负样本分开。它的强大之处还在于,当样本在原特征空间中线性不可分,即找不到一个足够好的超平面时,可以利用核(kernel)函数,将特征映射到希尔伯特(Hilbert)空间。后者一般维度更高,通过这样的映射之后,样本在新的特征空间中便是线性可分的了。

记得刚刚学习SVM的时候,对“核”这个词很恐惧,一直理解不了它究竟是什么。在看MKL的时候,又经常会遇到“核矩阵”(kernel matrices)这个词。现在说一下我的理解。

刚才说过,我们通过核把特征从低维空间映射到高维空间。举例来说,我们看下面的多项式核函数:

其中x,y是两个样本,他们的特征分别是(x1,x2),(y1,y2),通过这个核函数,可以看到二维特征被映射到了六维特征。而且我们也可以理解,这个映射其实就是用一个矩阵A乘以原来的特征(x1,x2)得到的。矩阵A也就是核矩阵了。一个核函数对应一个核矩阵。

我们学过的SVM都是单核(single kernel)的,在使用的时候,需要我们根据经验或试验来选择用哪种核函数、怎样指定它的参数,这样很不方便。另一方面,实际应用当中,特征往往不是single domain的,而是异构的。拿图像分类来说,我们可能用到颜色相关的特征、纹理相关的特征、空间相关的特征,这几类特征对应的最佳的核函数未必相同,让他们共用同一个核函数,未必能得到最优的映射。对这些问题的思考,就引出了MKL。

简单地说,我们给定一些base kernels,比如linear,Polynomial,RBF,Sigmoid,对于每一个,可以指定多组参数,也就是一共有M个base kernels,我们想用它们的线性组合来作为最终的核函数。通过training,得到这个线性组合中每个kernel的权重d(weight)。由于融合了各种kernel,可以照顾到异构的特征;由于自动学习权重,我们就不需要费脑子想究竟用哪一个核哪一种参数,把可能的核、参数都拿过来,组合着来用就可以了。

与传统的单核SVM的不同,就是除了要学习w、b之外,还要学习上面提到的权重d。这样的话,decision function, cost function都会有些变化,棘手的是,cost function 的求解不再是一个convex problem,传统的优化方法就不适用了。近年来MKL比较热,很多论文都是在优化方法上面下功夫,企图达到更快的收敛速度、更好的解。具体的优化方法就比较复杂了,略去。

多核线性组合,最经典的是simpleMKL,也被作为MKL的具体实现,应用在了计算机各领域。为了使MKL应用地更广,应对各种特征组合、各种样本量级,后来又有人提出了GMKL,G即Generalized,最优化方法用的是PGD(Projected Gradient Descend)。为了改进收敛效果,Vishwanathan又提出SPG-GMKL(Spectral Projected Gradient),同时提出了多核的product组合。SPG-GMKL也被后来者视作state-of-art。

除了MKL,还有一个MKB(Multiple Kernel Boosting),大连理工大学的卢湖川有几篇论文就是用MKB做跟踪。论文生成MKB是基于MKL的,我觉得不然。请看MKB的框架图:

这里的确用到多核,但每一个SVM都是单核的,根本没有用到多核训练的东西。本质上就是训练出M * N个single-kernel SVM,然后用boosting的方法,把这些弱分类器ensemble为一个强分类器。用到的就是传统的SVM加传统的boosting,只是名字新,实质并无新意。

TKDE12 有一篇 MKBoost论文,这应该是正宗的MKB,它提出了一个框架,并提供了几个formulation,然后与MKL做了比较。论文中全是公式,没有看,以后需要的时候再研究吧。

MKL的经典实现有SimpleMKL,Shogun,SPG-GMKL,SMO-MKL,Google一下就可以找到。

如果只是要使用MKL,可以不看论文中的推导,更多的是看看上述几种实现附带的例子;可以看看MKL在跟踪、图像分类中的使用,输入输出是什么;可以看看这个这个教程,简单易懂。

从 SVM 到多核学习 MKL的更多相关文章

  1. AD分类论文研读(1)

    转移性学习对阿尔茨海默病分类的研究 原文链接 摘要 将cv用于研究需要大量的训练图片,同时需要对深层网络的体系结构进行仔细优化.该研究尝试用转移学习来解决这些问题,使用从大基准数据集组成的自然图像得到 ...

  2. SVM多核学习方法简介

    作者:Walker SVM是机器学习有监督学习的一种方法,常用于解决分类问题,其基本原理是:在特征空间里寻找一个超平面,以最小的错分率把正负样本分开.因为SVM既能达到工业界的要求,机器学习研究者又能 ...

  3. SVM的点滴

    SVM 1. 普通SVM的分类函数可表示为: 其中ai为待优化参数,物理意义即为支持向量样本权重,yi用来表示训练样本属性,正样本或者负样本,为计算内积的核函数,b为待优化参数. 其优化目标函数为: ...

  4. 支持向量机SVM 参数选择

    http://ju.outofmemory.cn/entry/119152 http://www.cnblogs.com/zhizhan/p/4412343.html 支持向量机SVM是从线性可分情况 ...

  5. SVM核技巧之终极分析

    参考文献: http://www.blogjava.net/zhenandaci/archive/2009/03/01/257237.html http://www.cnblogs.com/jerry ...

  6. 【基础知识六】支持向量机SVM

    开发库: libsvm, liblinear      GitHub地址 SVM难点:核函数选择 一.基本问题 找到约束参数ω和b,支持向量到(分隔)超平面的距离最大:此时的分隔超平面称为“最优超平面 ...

  7. [转] 从零推导支持向量机 (SVM)

    原文连接 - https://zhuanlan.zhihu.com/p/31652569 摘要 支持向量机 (SVM) 是一个非常经典且高效的分类模型.但是,支持向量机中涉及许多复杂的数学推导,并需要 ...

  8. 机器学习经典算法详解及Python实现--基于SMO的SVM分类器

    原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector  ...

  9. 一步一步搞懂支持向量机——从牧场物语到SVM(上)

    之前在数据挖掘课程上写了篇关于SVM的"科普文",尽量通俗地介绍了SVM的原理和对各公式的理解.最近给正在初学机器学习的小白室友看了一遍,他觉得"很好,看得很舒服&quo ...

随机推荐

  1. iOS 11开发教程(十四)iOS11应用代码添加视图

    iOS 11开发教程(十四)iOS11应用代码添加视图 如果开发者想要使用代码为主视图添加视图,该怎么办呢.以下将为开发者解决这一问题.要使用代码为主视图添加视图需要实现3个步骤. (1)实例化视图对 ...

  2. hdu 4431 第37届ACM/ICPC 天津赛区现场赛A题 枚举

    题意:就是给了13张牌.问增加哪些牌可以胡牌.m是数字,s是条,p是筒,c是数字 胡牌有以下几种情况: 1.一个对子 +  4组 3个相同的牌或者顺子.  只有m.s.p是可以构成顺子的.东西南北这样 ...

  3. Linux下Shell函数返回值实现种类

    shell在执行的时候是顺序执行的,也不存在什么多线程什么的. 一下是实现种类: 1.全局 g_result="" function testFunc() { g_result=' ...

  4. Syntactic and Semantic Errors

    There are two kinds of errors that Basis can find. Syntax errors occur during the parsing of input c ...

  5. [Go] panic 和 recover

    通常情况下,函数向其调用方报告错误的方式都是返回一个 error 类型的值.但是,当遇到致命错误的时候,很可能会使程序无法继续运行.这时,上述错误处理方式就太不适合了,Go 推荐通过调用 panic ...

  6. Android 解压zip文件

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  7. CF330 C. Purification 认真想后就成水题了

    C. Purification time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  8. mqtt介绍

    MQTT是轻量级基于代理的发布/订阅的消息传输协议,它可以通过很少的代码和带宽和远程设备连接.例如通过卫星和代理连接,通过拨号和医疗保健提供者连接,以及在一些自动化或小型设备上,而且由于小巧,省电,协 ...

  9. 【pycharm】在pycharm上,使用python的pip安装tensorflow过程

    如题:在pycharm上,使用python的pip安装tensorflow过程 最后成功安装的版本信息是: python版本是3.6.5 pip版本是9.0.1 pycharm版本是2018.1 te ...

  10. ASP.NET :Virtual Application vs Virtual Directory

    原文地址:http://blogs.msdn.com/b/wenlong/archive/2006/11/22/virtual-application-vs-virtual-directory.asp ...