27.md 5.6 KB
Newer Older
片刻小哥哥's avatar
片刻小哥哥 已提交
1
{% raw %}
片刻小哥哥's avatar
片刻小哥哥 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
# 2.8\. 收敛协方差

## 2.8.1\. 基本收敛

尽管是协方差矩阵的无偏估计, 最大似然估计不是协方差矩阵的特征值的一个很好的估计, 所以从反演得到的精度矩阵是不准确的。 有时,甚至出现数学原因,经验协方差矩阵不能反转。 为了避免这样的反演问题,引入了经验协方差矩阵的一种变换方式:`shrinkage`

在 scikit-learn 中,该变换(具有用户定义的收缩系数) 可以直接应用于使用 [`shrunk_covariance`](generated/sklearn.covariance.shrunk_covariance.html#sklearn.covariance.shrunk_covariance "sklearn.covariance.shrunk_covariance") 方法预先计算协方差。 此外,协方差的收缩估计可以用 [`ShrunkCovariance`](generated/sklearn.covariance.ShrunkCovariance.html#sklearn.covariance.ShrunkCovariance "sklearn.covariance.ShrunkCovariance") 对象 及其 [`ShrunkCovariance.fit`](generated/sklearn.covariance.ShrunkCovariance.html#sklearn.covariance.ShrunkCovariance.fit "sklearn.covariance.ShrunkCovariance.fit") 方法拟合到数据中。 再次,根据数据是否居中,结果会不同,所以可能要准确使用参数 `assume_centered`

在数学上,这种收缩在于减少经验协方差矩阵的最小和最大特征值之间的比率。 可以通过简单地根据给定的偏移量移动每个特征值来完成, 这相当于找到协方差矩阵的l2惩罚的最大似然估计器(l2-penalized Maximum Likelihood Estimator)。在实践中,收缩归结为简单的凸变换: ![\Sigma_{\rm
shrunk} = (1-\alpha)\hat{\Sigma} + \alpha\frac{{\rm
Tr}\hat{\Sigma}}{p}\rm Id](img/8f62a01deaf67a7f9960d853abd9dcca.jpg).

选择收缩量, ![\alpha](img/d8b3d5242d513369a44f8bf0c6112744.jpg) 相当于设置偏差/方差权衡,下面将讨论。

示例:

*   See [Shrinkage covariance estimation: LedoitWolf vs OAS and max-likelihood](../auto_examples/covariance/plot_covariance_estimation.html#sphx-glr-auto-examples-covariance-plot-covariance-estimation-py) for an example on how to fit a [`ShrunkCovariance`](generated/sklearn.covariance.ShrunkCovariance.html#sklearn.covariance.ShrunkCovariance "sklearn.covariance.ShrunkCovariance") object to data.

## 2.8.2\. Ledoit-Wolf 收敛

在他们的 2004 年的论文 [[1]](#id6) 中, O.Ledoit 和 M.Wolf 提出了一个公式, 用来计算优化的收敛系数 ![\alpha](img/d8b3d5242d513369a44f8bf0c6112744.jpg) , 它使得估计协方差和实际协方差矩阵之间的均方差进行最小化。

<cite>sklearn.covariance</cite> 包中,可以使用 [`ledoit_wolf`](generated/sklearn.covariance.ledoit_wolf.html#sklearn.covariance.ledoit_wolf "sklearn.covariance.ledoit_wolf") 函数来计算样本的 基于 Ledoit-Wolf estimator 的协方差, 或者可以针对同样的样本 通过拟合 [`LedoitWolf`](generated/sklearn.covariance.LedoitWolf.html#sklearn.covariance.LedoitWolf "sklearn.covariance.LedoitWolf") 对象来获得。

例子:

*   See [Shrinkage covariance estimation: LedoitWolf vs OAS and max-likelihood](../auto_examples/covariance/plot_covariance_estimation.html#sphx-glr-auto-examples-covariance-plot-covariance-estimation-py) 关于如何将 [`LedoitWolf`](generated/sklearn.covariance.LedoitWolf.html#sklearn.covariance.LedoitWolf "sklearn.covariance.LedoitWolf") 对象与数据拟合, 并将 Ledoit-Wolf 估计器的性能进行可视化的示例。

参考文献:

| [[1]](#id5) | O. Ledoit and M. Wolf, “A Well-Conditioned Estimator for Large-Dimensional Covariance Matrices”, Journal of Multivariate Analysis, Volume 88, Issue 2, February 2004, pages 365-411. |

## 2.8.3\. Oracle 近似收缩

在数据为高斯分布的假设下,Chen et al. 等 [[2]](#id8) 推导出了一个公式,旨在 产生比 Ledoit 和 Wolf 公式具有更小均方差的收敛系数。 所得到的估计器被称为协方差的 Oracle 收缩近似估计器。

<cite>sklearn.covariance</cite> 包中, OAS 估计的协方差可以使用函数 [`oas`](generated/sklearn.covariance.oas.html#sklearn.covariance.oas "sklearn.covariance.oas") 对样本进行计算,或者可以通过将 [`OAS`](generated/sklearn.covariance.OAS.html#sklearn.covariance.OAS "sklearn.covariance.OAS") 对象拟合到相同的样本来获得。

[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_covariance_estimation_0011.png](img/7f37b8cd4340f3d0981f518f14670c26.jpg)](../auto_examples/covariance/plot_covariance_estimation.html)

设定收缩时的偏差方差权衡:比较 Ledoit-Wolf 和 OAS 估计量的选择

参考文献:

| [[2]](#id7) | Chen et al., “Shrinkage Algorithms for MMSE Covariance Estimation”, IEEE Trans. on Sign. Proc., Volume 58, Issue 10, October 2010. |

示例:

*   See [Shrinkage covariance estimation: LedoitWolf vs OAS and max-likelihood](../auto_examples/covariance/plot_covariance_estimation.html#sphx-glr-auto-examples-covariance-plot-covariance-estimation-py) for an example on how to fit an [`OAS`](generated/sklearn.covariance.OAS.html#sklearn.covariance.OAS "sklearn.covariance.OAS") object to data.
*   See [Ledoit-Wolf vs OAS estimation](../auto_examples/covariance/plot_lw_vs_oas.html#sphx-glr-auto-examples-covariance-plot-lw-vs-oas-py) to visualize the Mean Squared Error difference between a [`LedoitWolf`](generated/sklearn.covariance.LedoitWolf.html#sklearn.covariance.LedoitWolf "sklearn.covariance.LedoitWolf") and an [`OAS`](generated/sklearn.covariance.OAS.html#sklearn.covariance.OAS "sklearn.covariance.OAS") estimator of the covariance.

片刻小哥哥's avatar
片刻小哥哥 已提交
53 54
[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_lw_vs_oas_0011.png](img/bc35316fd422689a9bc65845d63c1433.jpg)](../auto_examples/covariance/plot_lw_vs_oas.html)
{% endraw %}