scikit-learn 内核近似
该子模块包含近似于与某些内核对应的特征映射的函数,例如在支持向量机中使用它们(请参阅Support Vector Machines)。以下功能函数执行输入的非线性转换,可以用作线性分类或其他算法的基础。
与使用隐式特征图的内核技巧相比,使用近似显式特征图的优势在于显式映射更适合在线学习,并且可以极大地减少超大型数据集的学习成本。标准的内核化SVM不能很好地适应大型数据集,但是使用近似的内核图,可以使用效率更高的线性SVM。特别是,内核映射近似与 SGDClassifier
的组合使用,使在大型数据集上进行非线性学习成为可能。
由于没有太多使用近似嵌入工作的经验,因此建议尽可能将结果与精确内核方法进行比较。
另请参阅: 多项式回归:使用基本函数扩展线性模型以进行精确的多项式转换。
6.7.1 内核近似的Nystroem方法
Nystroem
中实现的Nystroem方法是用于内核的低秩近似的通用方法。它实质上通过对评估内核的数据进行二次采样来实现。默认情况下Nystroem
使用rbf
内核,但是它可以使用任何内核函数或预先计算的内核矩阵。n_components
参数给出了所用的样本数-也是计算的特征的维数。
6.7.2 径向基函数内核
RBFSampler
为径向基函数核构造一个近似映射,也称为Random Kitchen Sinks [RR2007]。在应用线性算法(例如线性SVM)之前,此转换可用于显式建模内核映射:
>>> from sklearn.kernel_approximation import RBFSampler
>>> from sklearn.linear_model import SGDClassifier
>>> X = [[0, 0], [1, 1], [1, 0], [0, 1]]
>>> y = [0, 0, 1, 1]
>>> rbf_feature = RBFSampler(gamma=1, random_state=1)
>>> X_features = rbf_feature.fit_transform(X)
>>> clf = SGDClassifier(max_iter=5)
>>> clf.fit(X_features, y)
SGDClassifier(max_iter=5)
>>> clf.score(X_features, y)
1.0
这个映射依赖于对内核值的蒙特卡洛近似。该fit
函数执行蒙特卡洛采样,而该transform
方法执行数据映射。由于过程固有的随机性,结果在fit
函数的不同调用之间可能会有所不同。
fit
函数有两个参数: n_components
,是特征变换的目标维数;以及gamma
,是RBF内核的参数。n_components
越高,得到越好的内核近似,并将产生与内核SVM更相似的结果。请注意,“拟合”特征函数实际上并不取决于赋予fit
函数的数据,仅使用数据的维数。有关该方法的详细信息,请参见[RR2007]。
对于n_components
的给定值,RBFSampler
通常不如Nystroem
准确。不过,RBFSampler
这种方法的计算成本较低,因此在较大的特征空间上更有效。
将精确的RBF内核(左)与近似值(右)进行比较
例子:
6.7.3 加性卡方核
加性卡方核是直方图上的核,通常在计算机视觉中使用。
此处使用的加性卡方核为
这与sklearn.metrics.additive_chi2_kernel
并不完全相同。[VZ2010]的作者更喜欢上面的版本,因为它始终是肯定的。由于内核是可添加的,因此可以将所有成分 分别处理进行嵌入。这使得有可能以规则的间隔对傅立叶变换进行采样,而不是使用蒙特卡洛采样进行近似。
AdditiveChi2Sampler
类实施此组件合理的确定性采样。每个组件都采样 次,每个输入维数生成 个维数(两个傅立叶变换的实数和复数部分的倍数)。在文献中,通常将选择为1或2,将数据集转换为大小n_samples * 5 * n_features
(在的情况下)。
AdditiveChi2Sampler
所提供的近似特征映射可与RBFSampler
所提供的近似的特征映射相结合以产生一个近似特征映射的求幂的卡方内核。有关详细信息请参阅[VZ2010]和[VVZ2010]中的RBFSampler
部分。
6.7.4 偏卡方核
偏斜卡方核由以下公式给出:
它具有与计算机视觉中经常使用的指数卡方核相似的属性,但允许对特征映射进行简单的蒙特卡洛近似。
SkewedChi2Sampler
的用法与上述RBFSampler
的用法相同。唯一的区别在于free参数,称之为c。有关此映射的理念和数学细节,请参见[LS2010]。
6.7.5 数学细节
支持向量机或内核化的PCA之类的内核方法依赖于再现内核Hilbert空间的属性。对于任何正定核函数(即所谓的Mercer内核),可以确保存在映射进入希尔伯特空间 ,如下
其中 ⟨⋅,⋅⟩ 表示希尔伯特空间中的内积。
如果一个算法(例如线性支持向量机或PCA)仅依赖于数据点的标量积,则可以使用的值,这对应于将算法应用于映射的数据点 。使用 的优势在于无需显式计算映射 ,从而允许任意大特征(甚至无限大)。
内核方法的一个缺点是,在优化过程中可能有必要存储许多内核值。如果将内核分类器应用于新数据,则需要进行计算 以做出预测,可能是针对训练集中许多不同的 。
该子模块中的类允许近似嵌入,从而与 一起显式生效,从而无需应用内核或存储训练示例。
参考文献:
“Random features for large-scale kernel machines” Rahimi, A. and Recht, B. - Advances in neural information processing 2007,
“Random Fourier approximations for skewed multiplicative histogram kernels” Random Fourier approximations for skewed multiplicative histogram kernels - Lecture Notes for Computer Sciencd (DAGM)
“Efficient additive kernels via explicit feature maps” Vedaldi, A. and Zisserman, A. - Computer Vision and Pattern Recognition 2010
“Generalized RBF feature maps for Efficient Detection” Vempati, S. and Vedaldi, A. and Zisserman, A. and Jawahar, CV - 2010
更多建议: