SVM多核学习方法简介

简介: 作者:WalkerSVM是机器学习有监督学习的一种方法,常用于解决分类问题,其基本原理是:在特征空间里寻找一个超平面,以最小的错分率把正负样本分开。

作者:Walker

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

但是我们之前接触过的SVM都是单核的,即它是基于单个特征空间的。在实际应用中往往需要根据我们的经验来选择不同的核函数(如:高斯核函数、多项式核函数等)、指定不同的参数,这样不仅不方便而且当数据集的特征是异构时,效果也没有那么好。正是基于SVM单核学习存在的上述问题,同时利用多个核函数进行映射的多核学习模型(MKL)应用而生。

多核模型比单个核函数具有更高的灵活性。在多核映射的背景下,高维空间成为由多个特征空间组合而成的组合空间。由于组合空间充分发挥了各个基本核的不同特征映射能力,能够将异构数据的不同特征分量分别通过相应的核函数得到解决。目前主流的多核学习方法主要包括合成核方法、多尺度核方法和无限核方法。其具体流程如图1所示:

图1 多核学习流程图

接下来我们以二分类问题为例,为大家简单介绍多核学习方法。令训练数据集为X={(x1,y1),(x2,y2),(x3,y3)…(xn,yn)},其中Xi是输入特征,且Xi∈Rd,i= 1,2, …, N,Yi∈{+1, −1}是类标签。SVM 算法目标在于最大化间隔,其模型的原始问题可以表示为:

其中,w是待求的权重向量,ζi与C分别是松弛变量和惩罚系数。根据拉格朗日对偶性以及 KKT 条件,引入核函数K( Xi , Xj): Rn×Rn → R,原始问题也可以转换成如下最优化的形式:

其中,ai与aj为拉格朗日乘子,核函数K( Xi, Xj)=φ(xi) xφ(xj)。核方法的思想就是,在学习与预测中不显示地定义映射函数φ(xi) ,只定义核函数K( Xi, Xj),直接在原低维空间中计算高维空间中的向量内积,既实现低维样本空间到高维特征空间的映射,又不增加计算复杂量。

多核学习方法是单核 SVM 的拓展,其目标是确定 M 个个核函数的最优组合,使得间距最大,可以用如下优化问题表示:

其中∆= {θ∈ ℝ+|θTeM=1},表示 M 个核函数的凸组合的系数,eM是一个向量,M个元素全是 1,K(θ)=∑Mj=1θjkj(∙,∙)代表最终的核函数,其中kj(∙,∙)是第j个核函数。与单核 SVM 一样,可以将上式如下转化:

其中Kj∈ RNxN,Ω={a|a∈[0,C]N},“∗”被定义为向量的点积,即(1,0)∗(2,3) = (1 ×2 ,0×3)=(2,0)。通过对比 MKL 与单核 SVM 所对应的优化问题形式,求解多核学习问题的计算复杂度与难度会远大于单核 SVM,所以研究出一种高效且稳定的算法来解决传统多核学习中的优化难题,仍然很具有挑战性。

综上所示,尽管多核学习在解决一些异构数据集问题上表现出了非常优秀的性能,但不得不说效率是多核学习发展的最大瓶颈。首先,空间方面,多核学习算法由于需要计算各个核矩阵对应的核组合系数,需要多个核矩阵共同参加运算。也就是说,多个核矩阵需要同时存储在内存中,如果样本的个数过多,那么核矩阵的维数也会非常大,如果核的个数也很多,这无疑会占用很大的内存空间。其次,时间方面,传统的求解核组合参数的方法即是转化为SDP优化问题求解,而求解SDP问题需要使用内点法,非常耗费时间,尽管后续的一些改进算法能在耗费的时间上有所减少,但依然不能有效的降低时间复杂度。高耗的时间和空间复杂度是导致多核学习算法不能广泛应用的一个重要原因。

下篇预告:不同核学习方法的研究。

 

参考文献:Research on Multiple Kernel Boosting Learning Algorithm

Fast Multiple Kernel Learning for Classification and Application

Research on Multiple Kernel Learning Algorithms and Their Applications

 

目录
相关文章
|
存储 SQL 监控
全链路压测:影子库与影子表之争
在生产环境实施全链路压测的过程中,针对上文谈到的两种方案,又面临着数据隔离方案的选择问题,本文首先针对影子库、影子表两种方案进行介绍和对比,然后针对常见的场景,给出方案的选择建议。
7132 128
全链路压测:影子库与影子表之争
|
算法 安全 量子技术
【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | 马特赛特旋转算法 | LCG 线性同余算法 | Python Random 模块
【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | 马特赛特旋转算法 | LCG 线性同余算法 | Python Random 模块
1516 0
|
7月前
|
算法
动态规划之完全背包
本文详解完全背包问题:作为动态规划经典题型,区别于01背包(每物限选1次),其特点是每种物品可无限次选取。文章从定义、状态转移方程(dp[i][j] = max(dp[i-1][j], dp[i][j-w]+v))、二维/一维实现到遍历顺序对组合数与排列数的影响,结合零钱兑换II、组合总和IV等5道典型例题深入剖析,助力掌握核心思想与编码技巧。
357 1
|
机器学习/深度学习 算法
《揭秘梯度下降算法超参数自动调优的神奇方法》
梯度下降算法是机器学习中的核心优化工具,选择合适的超参数至关重要。常见的自动调优方法包括:1) 网格搜索,适用于超参数少且计算资源充足的情况;2) 随机搜索,计算效率高,适合高维空间;3) 贝叶斯优化,能有效利用评估结果,适用于昂贵的目标函数;4) 学习率调整,如指数衰减、余弦退火等,提高训练效率和稳定性。根据具体问题和资源选择合适方法或结合多种方法以达到最佳效果。
512 1
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
1828 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
前端开发 Java 微服务
2025 年全网超全 Java 从入门到精通学习路线指南
这是一份全面的Java学习路线图,涵盖从基础到进阶的知识体系。基础阶段包括环境搭建、语法学习与面向对象编程;进阶阶段深入数据结构、多线程、JVM原理及泛型集合;框架阶段掌握Spring、MyBatis等工具;数据库阶段学习SQL、MySQL及Redis;前端技术涉及HTML、CSS与Vue;分布式阶段探讨微服务架构、Docker与Kubernetes;最后通过企业级项目实战提升性能优化与代码重构能力。资源地址:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
1783 7
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制全解析:从原理到计算细节,一文尽览!
自注意力机制(Self-Attention)最早可追溯至20世纪70年代的神经网络研究,但直到2017年Google Brain团队提出Transformer架构后才广泛应用于深度学习。它通过计算序列内部元素间的相关性,捕捉复杂依赖关系,并支持并行化训练,显著提升了处理长文本和序列数据的能力。相比传统的RNN、LSTM和GRU,自注意力机制在自然语言处理(NLP)、计算机视觉、语音识别及推荐系统等领域展现出卓越性能。其核心步骤包括生成查询(Q)、键(K)和值(V)向量,计算缩放点积注意力得分,应用Softmax归一化,以及加权求和生成输出。自注意力机制提高了模型的表达能力,带来了更精准的服务。
14282 46
|
存储
【基础知识整理】图的基本概念 & 邻接矩阵 & 邻接表
图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的; 其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。 通常记为,G=(V,E)。
1151 0
|
机器学习/深度学习 人工智能 自然语言处理
深度剖析深度神经网络(DNN):原理、实现与应用
本文详细介绍了深度神经网络(DNN)的基本原理、核心算法及其具体操作步骤。DNN作为一种重要的人工智能工具,通过多层次的特征学习和权重调节,实现了复杂任务的高效解决。文章通过理论讲解与代码演示相结合的方式,帮助读者理解DNN的工作机制及实际应用。
|
机器学习/深度学习 人工智能 算法
【机器学习】深度神经网络(DNN):原理、应用与代码实践
【机器学习】深度神经网络(DNN):原理、应用与代码实践
4224 1