【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
2017-12-05 23:28
561 查看
中文文档: http://sklearn.apachecn.org/cn/stable/modules/kernel_approximation.html
英文文档: http://sklearn.apachecn.org/en/stable/modules/kernel_approximation.html
官方文档: http://scikit-learn.org/stable/
GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个
Star,我们一直在努力)
贡献者: https://github.com/apachecn/scikit-learn-doc-zh#贡献者
关于我们: http://www.apachecn.org/organization/209.html
这个子模块包含与某些 kernel 对应的特征映射的函数,这个会用于例如支持向量机的算法当中(see 支持向量机)。 下面这些特征函数对输入执行非线性转换,可以用于线性分类或者其他算法。
与 kernel trick 相比,近似的进行特征映射更适合在线学习,并能够有效 减少学习大量数据的开销。标准化使用内核的 svm 不能有效的适用到海量数据,但是使用近似内核映射的方法,对于线性
SVM 来说效果可能更好。 而且,使用
由于近似嵌入的方法没有太多经验性的验证,所以建议将结果和使用精确的内核方法的结果进行比较。
See also
多项式回归:用基函数展开线性模型 用于精确的多项式变换。
Nystroem 方法用于低等级的近似核。它是通过采样 kernel 已经评估好的数据。默认情况下,
使用的样本数量 - 计算的特征维数 - 由参数
Random Kitchen Sinks [RR2007]. 在应用线性算法(例如线性 SVM )之前,可以使用此转换来明确建模内核映射:
>>>
这个映射依赖于内核值的 Monte Carlo 近似.
数据的映射.由于过程的固有随机性,结果可能会在不同的
该
RBF-kernel 的参数.
特征函数实际上不取决于
对于给定的值
但是
将精确的 RBF kernel (左) 与 approximation (右) 进行比较。
示例:
Explicit
feature map approximation for RBF kernels
可添加的 Chi Squared Kernel 是直方图的核心,通常用于计算机视觉。
这里使用的可添加的 Chi Squared Kernel 给出
这个和
的作者喜欢上面的版本,因为它总是积极的。 由于这个 kernel 是可添加的,因此可以分别处理嵌入的
.
这使得在规则的间隔类对傅里叶变换进行性才赢,代替近似的 Monte Carlo 采样。
每个组件都被采样
次,每一个输入维数都会产生 2n+1 维(来自傅立叶变换的实部和复数部分的两个数据段的倍数).
在文献中,
经常取为 1 或者 2,将数据集转换为
的情况下
).
chi squared kerne。可以查看 [VZ2010] 和 [VVZ2010]
skewed chi squared kernel 给出下面公式
它有和幂次方 chi squared kernel 相似的属性,用于计算机视觉.但是允许进行简单的 Monte Carlo 近似 的特征映射。
.
这种映射和数学细节可以参考 [LS2010].
内核方法像支持向量机,或者标准化 PCA 依赖于重新生产 kernel Hilbert spaces. 对于任何内核函数
(叫做
Mercer kernel),保证了
进入 Hilbert space:math:mathcal{H} 的映射,例如:
是在 Hilbert space
中做内积.
如果一个算法,例如线性支持向量机或者 PCA,依赖于数据集的数量级
,可能会使用
,
符合孙发的映射
. 使用
的优点在于
永远不会直接计算,允许大量的特征计算(甚至是无线的).
kernel 方法的一个缺点是,在优化过程中有可能存储大量的 kernel 值
.
如果内核化的分类器应用于新的数据
,
需要计算用来做预测,训练集中的
有可能有很多不同的。
这个子模块的这些类中允许嵌入
,从而明确的与
一起工作,
这消除了使用 kernel 的需要和存储训练样本.
参考:
中文文档: http://sklearn.apachecn.org/cn/stable/modules/kernel_approximation.html
英文文档: http://sklearn.apachecn.org/en/stable/modules/kernel_approximation.html
官方文档: http://scikit-learn.org/stable/
GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个
Star,我们一直在努力)
贡献者: https://github.com/apachecn/scikit-learn-doc-zh#贡献者
关于我们: http://www.apachecn.org/organization/209.html
有兴趣的们也可以和我们一起来维护,持续更新中 。。。
机器学习交流群: 629470233
英文文档: http://sklearn.apachecn.org/en/stable/modules/kernel_approximation.html
官方文档: http://scikit-learn.org/stable/
GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个
Star,我们一直在努力)
贡献者: https://github.com/apachecn/scikit-learn-doc-zh#贡献者
关于我们: http://www.apachecn.org/organization/209.html
4.6. 内核近似
这个子模块包含与某些 kernel 对应的特征映射的函数,这个会用于例如支持向量机的算法当中(see 支持向量机)。 下面这些特征函数对输入执行非线性转换,可以用于线性分类或者其他算法。与 kernel trick 相比,近似的进行特征映射更适合在线学习,并能够有效 减少学习大量数据的开销。标准化使用内核的 svm 不能有效的适用到海量数据,但是使用近似内核映射的方法,对于线性
SVM 来说效果可能更好。 而且,使用
SGDClassifier进行近似的内核映射,使得对海量数据进行非线性学习也成为了可能。
由于近似嵌入的方法没有太多经验性的验证,所以建议将结果和使用精确的内核方法的结果进行比较。
See also
多项式回归:用基函数展开线性模型 用于精确的多项式变换。
4.6.1. 内核近似的 Nystroem 方法
Nystroem中实现了
Nystroem 方法用于低等级的近似核。它是通过采样 kernel 已经评估好的数据。默认情况下,
Nystroem使用
rbfkernel,但它可以使用任何内核函数和预计算内核矩阵.
使用的样本数量 - 计算的特征维数 - 由参数
n_components给出.
4.6.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() >>> clf.fit(X_features, y) SGDClassifier(alpha=0.0001, average=False, class_weight=None, epsilon=0.1, eta0=0.0, fit_intercept=True, l1_ratio=0.15, learning_rate='optimal', loss='hinge', max_iter=5, n_iter=None, n_jobs=1, penalty='l2', power_t=0.5, random_state=None, shuffle=True, tol=None, verbose=0, warm_start=False) >>> clf.score(X_features, y) 1.0
这个映射依赖于内核值的 Monte Carlo 近似.
fit方法执行 Monte Carlo 采样,而该
transform方法执行
数据的映射.由于过程的固有随机性,结果可能会在不同的
fit函数调用之间变化。
该
fit函数有两个参数:
n_components是特征变换的目标维数.
gamma是
RBF-kernel 的参数.
n_components越高,会导致更好的内核近似, 并且将产生与内核 SVM 产生的结果更相似的结果。请注意,”拟合”
特征函数实际上不取决于
fit函数传递的数据。只有数据的维数被使用。 详情可以参考 [RR2007].
对于给定的值
n_components
RBFSampler在
Nystroem中使用通常不太准确,
但是
RBFSampler使用更大的特征空间,更容易计算。
将精确的 RBF kernel (左) 与 approximation (右) 进行比较。
示例:
Explicit
feature map approximation for RBF kernels
4.6.3. 可添加的 Chi Squared Kernel
可添加的 Chi Squared Kernel 是直方图的核心,通常用于计算机视觉。这里使用的可添加的 Chi Squared Kernel 给出
这个和
sklearn.metrics.additive_chi2_kernel不完全一样.[VZ2010]_
的作者喜欢上面的版本,因为它总是积极的。 由于这个 kernel 是可添加的,因此可以分别处理嵌入的
.
这使得在规则的间隔类对傅里叶变换进行性才赢,代替近似的 Monte Carlo 采样。
AdditiveChi2Sampler类实现了这个组件采样方法.
每个组件都被采样
次,每一个输入维数都会产生 2n+1 维(来自傅立叶变换的实部和复数部分的两个数据段的倍数).
在文献中,
经常取为 1 或者 2,将数据集转换为
n_samples * 5 * n_features大小(在
的情况下
).
AdditiveChi2Sampler提供的近似特征映射可以和
RBFSampler提供的近似特征映射合并,得到一个取幂的
chi squared kerne。可以查看 [VZ2010] 和 [VVZ2010]
RBFSampler的合并.
4.6.4. Skewed Chi Squared Kernel
skewed chi squared kernel 给出下面公式它有和幂次方 chi squared kernel 相似的属性,用于计算机视觉.但是允许进行简单的 Monte Carlo 近似 的特征映射。
SkewedChi2Sampler的使用和之前描述的
RBFSampler一样.唯一的区别是自由参数,称之为
.
这种映射和数学细节可以参考 [LS2010].
4.6.5. 数学方面的细节
内核方法像支持向量机,或者标准化 PCA 依赖于重新生产 kernel Hilbert spaces. 对于任何内核函数 (叫做
Mercer kernel),保证了
进入 Hilbert space:math:mathcal{H} 的映射,例如:
是在 Hilbert space
中做内积.
如果一个算法,例如线性支持向量机或者 PCA,依赖于数据集的数量级
,可能会使用
,
符合孙发的映射
. 使用
的优点在于
永远不会直接计算,允许大量的特征计算(甚至是无线的).
kernel 方法的一个缺点是,在优化过程中有可能存储大量的 kernel 值
.
如果内核化的分类器应用于新的数据
,
需要计算用来做预测,训练集中的
有可能有很多不同的。
这个子模块的这些类中允许嵌入
,从而明确的与
一起工作,
这消除了使用 kernel 的需要和存储训练样本.
参考:
[RR2007] | “Random features for large-scale kernel machines” Rahimi, A. and Recht, B. - Advances in neural information processing 2007, |
[LS2010] | “Random Fourier approximations for skewed multiplicative histogram kernels” Random Fourier approximations for skewed multiplicative histogram kernels - Lecture Notes for Computer Sciencd (DAGM) |
[VZ2010] | “Efficient additive kernels via explicit feature maps” Vedaldi, A. and Zisserman, A. - Computer Vision and Pattern Recognition 2010 |
[VVZ2010] | “Generalized RBF feature maps for Efficient Detection” Vempati, S. and Vedaldi, A. and Zisserman, A. and Jawahar, CV - 2010 |
英文文档: http://sklearn.apachecn.org/en/stable/modules/kernel_approximation.html
官方文档: http://scikit-learn.org/stable/
GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个
Star,我们一直在努力)
贡献者: https://github.com/apachecn/scikit-learn-doc-zh#贡献者
关于我们: http://www.apachecn.org/organization/209.html
有兴趣的们也可以和我们一起来维护,持续更新中 。。。
机器学习交流群: 629470233
相关文章推荐
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】37 内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】三十七:内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】内核近似 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】无监督降维 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】无监督降维 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】随机投影 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】无监督降维 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】随机投影 - 数据集转换 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】Pipeline(管道)和 FeatureUnion(特征联合): 合并的评估器 - 数据集转换 - 用户指南 | ApacheCN