摘要
MKLpy库提供了用于分类任务的多核学习算法、针对不同数据类型计算核函数的机制以及评估策略。
关键词
Multiple Kernel Learning,Deep kernels,Kernel methods
背景
一方面,该库提供了高级的API,便于将MKL算法应用到用户的特定任务中。MKL算法的公共接口由简单的原语组成,用于训练算法mkl . fit ( . . . ) 和执行预测mkl . prediction ( . . . )。
另一方面,MKLpy被设计用于剖析整个MKL pipeline,如图1所示,从计算基核到推理阶段,允许模块化、增量式和有针对性的开发。
创新点
提出a python-based framework for MKL,在Github有代码,以及配套的学习文档英文版。
MKLpy内容
MKLpy的主要特征:
- Kernel function:
多种核函数:homogeneous polynomial kernel (HPK);the conjunctive and disjunctive boolean kernels;the p-spectrum and string kernels;
from MKLpy.metrics.pairwise import monotone_conjunctive_kernel as mck
K = mck(X) #单基核计算
KL = [mck(X, c=arity) for arity in range(1,6)] #组合核计算
- MKL algorithms:包装器自动封装内核组合机制,利用生成的内核进行训练,预测机制
AverageMKL:一个简单的计算基内核平均值的包装器。
EasyMKL (Aiolli and Donini, 2015)
R-MKL (Do et al., 2009)
GRAM (Lauriola et al., 2017)
popular SVM, KOMD (Aiolli et al., 2008)
from MKLpy.algorithms import AverageMKL,EasyMKL
mkl = AverageMKL()
mkl = mkl.fit(KLtr, Ytr)
prediction = mkl.predict(KLte)
- Evaluation: 核学习的一个重要步骤是对学习到的核进行评价。
MKLpy提供了一些评价内核质量的标准和工具:
from MKLpy import metrics
margin = metrics.margin(K,Y) #margin between classes
radius = metrics.radius(K) #radius of MEB
SR = metrics.spectral_ratio(K,norm=True) #empirical complexity
此外,用户可以使用scikit-Learn包中的工具来评估准确率、AUC等指标。
计算效率:
例举了:EasyMKL with 20 HPKs applied to two datasets(Madelon and Phishing)
MKLpy生成器使使用内存消耗的大幅减少,平均减少3.7倍,如图所示。
from MKLpy.generators import HPK_generator
KLtr = HPK_generator(Xtr, degrees=range(1,21))
mkl = EasyMKL.fit(KLtr,Ytr)
结论与不足
作者建议:
- 事实上,不同的表示可能引入噪声或无用信息。为此,组合核与单基核的比较可以证明MKL解的质量
- 尽管MKL算法简单,但现有的几种MKL算法的性能甚至不如基核的简单平均。然而,这一基线在评估过程中很少被考虑。因此,我们强烈建议在评估MKL解时使用该基线。
- 组合权重提供了关于解的稀疏性和基核贡献的有用见解,它们的分析防止了开发琐碎的解决方案。例如,该算法可以为所有的核分配0个权重,而不是1个。在这种情况下,MKL可以用于特征选择或超参数调优。
- 分配给每个核的权重取决于后者的范数。如果我们扩大一个基核的范数,它在组合中的贡献也可能扩大,而核可能因为具有高范数而获得高权重。这一方面可能在某些情况下提供次优的解决方案,而由此产生的权重向量可能具有误导性。为了减少这个问题,我们建议对基核进行归一化。
优点:每一种MKLpy算法都有论文依据,这对于该类算法进行论文文献阅读比较方便,但是在使用文档的时候,对于函数不太了解的,查找Github有些不太方便。
参考
[3]: Kernel methods for pattern analysis.(John Shawe-Taylor, Nello Cristianini, et al. 2004)
[4]: Multiple kernel learning algorithms.(Mehmet Go ̈nen and Ethem Alpaydin.2011)
[5]: A survey on multi-view learning.(Chang Xu, Dacheng Tao, and Chao Xu.2013)
[6]: Multiple kernel learning based multi-view spectral clustering.(D. Guo, J. Zhang, X. Liu, Y. Cui, and C. Zhao.2014)
[7]: Learning deep kernels in the space of dot product polynomials.(Michele Donini and Fabio Aiolli.2017)
[8]: Enhancing deep neural networks via multiple kernel learning.(Ivano Lauriola, Claudio Gallicchio, and Fabio Aiolli.2020)