4.md 4.1 KB
Newer Older
片刻小哥哥's avatar
片刻小哥哥 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# 1.3\. 内核岭回归

校验者:
        [@不吃曲奇的趣多多](https://github.com/apachecn/scikit-learn-doc-zh)
翻译者:
        [@Counting stars](https://github.com/apachecn/scikit-learn-doc-zh)

Kernel ridge regression (KRR) (内核岭回归)[M2012]_ 由 使用内核方法的 :ref:[`](#id2)ridge_regression`(岭回归)(使用 l2 正则化的最小二乘法)所组成。因此,它所学习到的在空间中不同的线性函数是由不同的内核和数据所导致的。对于非线性的内核,它与原始空间中的非线性函数相对应。

由 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 学习的模型的形式与支持向量回归( `SVR` ) 是一样的。但是他们使用不同的损失函数:内核岭回归(KRR)使用 squared error loss (平方误差损失函数)而 support vector regression (支持向量回归)(SVR)使用 ![\epsilon](img/58ef9e1b5d2ee139dcb588a3879ca1a6.jpg)-insensitive loss ( ε-不敏感损失 ),两者都使用 l2 regularization (l2 正则化)。与 `SVR` 相反,拟合 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 可以以 closed-form (封闭形式)完成,对于中型数据集通常更快。另一方面,学习的模型是非稀疏的,因此比 SVR 慢, 在预测时间,SVR 学习了:math:<cite>epsilon > 0</cite> 的稀疏模型。

下图比较了人造数据集上的 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 和 `SVR` 的区别,它由一个正弦目标函数和每五个数据点产生一个强噪声组成。图中分别绘制了由 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 和 `SVR` 学习到的回归曲线。两者都使用网格搜索优化了 RBF 内核的 complexity/regularization (复杂性/正则化)和 bandwidth (带宽)。它们的 learned functions (学习函数)非常相似;但是,拟合 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 大约比拟合 `SVR` 快七倍(都使用 grid-search ( 网格搜索 ) )。然而,由于 SVR 只学习了一个稀疏模型,所以 SVR 预测 10 万个目标值比使用 KernelRidge 快三倍以上。SVR 只使用了百分之三十的数据点做为支撑向量。

[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_kernel_ridge_regression_0011.png](img/5d71bcc9676eddcac89936397b2cd79c.jpg)](../auto_examples/plot_kernel_ridge_regression.html)

下图显示不同大小训练集的 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 和 `SVR` 的 fitting (拟合)和 prediction (预测)时间。 对于中型训练集(小于 1000 个样本),拟合 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 比 `SVR` 快; 然而,对于更大的训练集 `SVR` 通常更好。 关于预测时间,由于学习的稀疏解,`SVR` 对于所有不同大小的训练集都比 [`KernelRidge`](generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge "sklearn.kernel_ridge.KernelRidge") 快。 注意,稀疏度和预测时间取决于 `SVR` 的参数 ![\epsilon](img/58ef9e1b5d2ee139dcb588a3879ca1a6.jpg) 和 ![C](img/4b6d782a67ac392e97215c46b7590bf7.jpg) ; ![\epsilon = 0](img/1d9a1eb9200948482ebfd5811679276a.jpg) 将对应于密集模型。

[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_kernel_ridge_regression_0021.png](img/a921f24886997e2a5b94e2abb46d8402.jpg)](../auto_examples/plot_kernel_ridge_regression.html)

参考:

| [M2012] | “Machine Learning: A Probabilistic Perspective” Murphy, K. P. - chapter 14.4.3, pp. 492-493, The MIT Press, 2012 |