# 2.6. 协方差估计

校验者:

[@李昊伟](https://github.com/apachecn/scikit-learn-doc-zh)

[@小瑶](https://github.com/apachecn/scikit-learn-doc-zh)

翻译者:

[@柠檬](https://github.com/apachecn/scikit-learn-doc-zh)

许多统计问题在某一时刻需要估计一个总体的协方差矩阵,这可以看作是对数据集散点图形状的估计。 大多数情况下,基于样本的估计(基于其属性,如尺寸,结构,均匀性), 对估计质量有很大影响。 sklearn.covariance 方法的目的是 提供一个能在各种设置下准确估计总体协方差矩阵的工具。

我们假设观察是独立的,相同分布的 (i.i.d.)。

已知数据集的协方差矩阵与经典 *maximum likelihood estimator(最大似然估计)* (或 “经验协方差”) 很好地近似,条件是与特征数量(描述观测值的变量)相比,观测数量足够大。 更准确地说,样本的最大似然估计是相应的总体协方差矩阵的无偏估计。

样本的经验协方差矩阵可以使用 [`empirical_covariance`](generated/sklearn.covariance.empirical_covariance.html#sklearn.covariance.empirical_covariance "sklearn.covariance.empirical_covariance") 包的函数计算 , 或者通过 [`EmpiricalCovariance`](generated/sklearn.covariance.EmpiricalCovariance.html#sklearn.covariance.EmpiricalCovariance "sklearn.covariance.EmpiricalCovariance") 使用 [`EmpiricalCovariance.fit`](generated/sklearn.covariance.EmpiricalCovariance.html#sklearn.covariance.EmpiricalCovariance.fit "sklearn.covariance.EmpiricalCovariance.fit")方法将对象与数据样本拟合 。 要注意,取决于数据是否居中,结果会有所不同,所以可能需要准确使用参数 `assume_centered`。 如果使用 `assume_centered=False` ,则结果更准确。且测试集应该具有与训练集相同的均值向量。 如果不是这样,两者都应该使用中心值, `assume_centered=True` 应该使用。

例子:

- 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 [`EmpiricalCovariance`](generated/sklearn.covariance.EmpiricalCovariance.html#sklearn.covariance.EmpiricalCovariance "sklearn.covariance.EmpiricalCovariance") object to data.

## 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](https://box.kancloud.cn/b694d9395a37c3038d2f237e6c6ea388_222x29.jpg).

选择收缩量, ![\alpha](https://box.kancloud.cn/4e17a26ba4b90c226c2bc40e5a1a833a_11x8.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](https://box.kancloud.cn/4e17a26ba4b90c226c2bc40e5a1a833a_11x8.jpg) , 它使得估计协方差和实际协方差矩阵之间的均方差进行最小化。

在 sklearn.covariance 包中,可以使用 [`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 收缩近似估计器。

在 sklearn.covariance 包中, 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](https://box.kancloud.cn/0f73d56fd147013044d7ad81f20510b3_566x424.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.

[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_lw_vs_oas_0011.png](https://box.kancloud.cn/6d8bfd927e2763a26f2ee0e48f6ec24d_566x424.jpg)](../auto_examples/covariance/plot_lw_vs_oas.html)

协方差矩阵的逆矩阵,通常称为精度矩阵(precision matrix),它与部分相关矩阵(partial correlation matrix)成正比。 它给出部分独立性关系。换句话说,如果两个特征在其他特征上有条件地独立, 则精度矩阵中的对应系数将为零。这就是为什么估计一个稀疏精度矩阵是有道理的: 通过从数据中学习独立关系,协方差矩阵的估计能更好处理。这被称为协方差选择。

在小样本的情况,即 `n_samples` 是数量级 `n_features` 或更小, 稀疏的逆协方差估计往往比收敛的协方差估计更好。 然而,在相反的情况下,或者对于非常相关的数据,它们可能在数值上不稳定。 此外,与收敛估算不同,稀疏估计器能够恢复非对角线结构 (off-diagonal structure)。

[`GraphLasso`](generated/sklearn.covariance.GraphLasso.html#sklearn.covariance.GraphLasso "sklearn.covariance.GraphLasso") 估计器使用 L1 惩罚执行关于精度矩阵的稀疏性: `alpha` 参数越高,精度矩阵的稀疏性越大。 相应的 [`GraphLassoCV`](generated/sklearn.covariance.GraphLassoCV.html#sklearn.covariance.GraphLassoCV "sklearn.covariance.GraphLassoCV") 对象使用交叉验证来自动设置 `alpha` 参数。

[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_sparse_cov_0011.png](https://box.kancloud.cn/4e61903edc33173a8b8c36664a1045d2_566x339.jpg)](../auto_examples/covariance/plot_sparse_cov.html)

Note

**结构恢复**

从数据中的相关性恢复图形结构是一个具有挑战性的事情。如果您对这种恢复感兴趣,请记住:

- 相关矩阵的恢复比协方差矩阵更容易:在运行 [`GraphLasso`](generated/sklearn.covariance.GraphLasso.html#sklearn.covariance.GraphLasso "sklearn.covariance.GraphLasso") 前先标准化观察值

- 如果底层图具有比平均节点更多的连接节点,则算法将错过其中一些连接。

- 如果您的观察次数与底层图形中的边数相比不大,则不会恢复。

- 即使您具有良好的恢复条件,通过交叉验证(例如使用GraphLassoCV对象)选择的 Alpha 参数将导致选择太多边。 然而,相关边缘将具有比不相关边缘更重的权重。

数学公式如下:

![\hat{K} = \mathrm{argmin}_K \big( \mathrm{tr} S K - \mathrm{log} \mathrm{det} K + \alpha \|K\|_1 \big)](https://box.kancloud.cn/ca3dd90982aa2d766d33b579a384c5ed_326x24.jpg)

其中:![K](https://box.kancloud.cn/cdbf8b35090576059f2b14a851c73b86_16x12.jpg) 是要估计的精度矩阵(precision matrix), ![S](https://box.kancloud.cn/3654ba253cea374c1cf48d1877e4bf6c_12x12.jpg) 是样本的协方差矩阵。 ![\|K\|_1](https://box.kancloud.cn/a3ca8d00992402847c4fd2ae269fd9ce_39x19.jpg) 是非对角系数 ![K](https://box.kancloud.cn/cdbf8b35090576059f2b14a851c73b86_16x12.jpg) (off-diagonal coefficients)的绝对值之和。 用于解决这个问题的算法是来自 Friedman 2008 Biostatistics 论文的 GLasso 算法。 它与 R 语言 `glasso` 包中的算法相同。

例子:

- [Sparse inverse covariance estimation](../auto_examples/covariance/plot_sparse_cov.html#sphx-glr-auto-examples-covariance-plot-sparse-cov-py):

合成数据示例,显示结构的一些恢复,并与其他协方差估计器进行比较。

- [Visualizing the stock market structure](../auto_examples/applications/plot_stock_market.html#sphx-glr-auto-examples-applications-plot-stock-market-py): 真实股票市场数据示例,查找哪些信号最相关。

参考文献:

- Friedman et al, [“Sparse inverse covariance estimation with the graphical lasso”](http://biostatistics.oxfordjournals.org/content/9/3/432.short), Biostatistics 9, pp 432, 2008

实际数据集通常是会有测量或记录错误。合格但不常见的观察也可能出于各种原因。 每个不常见的观察称为异常值。 上面提出的经验协方差估计器和收缩协方差估计器对数据中异常观察值非常敏感。 因此,应该使用更好的协方差估计(robust covariance estimators)来估算其真实数据集的协方差。 或者,可以使用更好的协方差估计器(robust covariance estimators)来执行异常值检测, 并根据数据的进一步处理,丢弃/降低某些观察值。

`sklearn.covariance` 包实现了 robust estimator of covariance, 即 Minimum Covariance Determinant [\[3\]](#id14) 。

## 2.10.1. 最小协方差决定

最小协方差决定(Minimum Covariance Determinant)估计器是 由 P.J. Rousseeuw 在 [\[3\]](#id14) 中引入的数据集协方差的鲁棒估计 (robust estimator)。 这个想法是找出一个给定比例(h)的 “好” 观察值,它们不是离群值, 且可以计算其经验协方差矩阵。 然后将该经验协方差矩阵重新缩放以补偿所执行的观察选择(”consistency step(一致性步骤)”)。 计算最小协方差决定估计器后,可以根据其马氏距离(Mahalanobis distance)给出观测值的权重, 这导致数据集的协方差矩阵的重新加权估计(”reweighting step(重新加权步骤)”)。

Rousseeuw 和 Van Driessen [\[4\]](#id15) 开发了 FastMCD 算法,以计算最小协方差决定因子(Minimum Covariance Determinant)。 在 scikit-learn 中,该算法在将 MCD 对象拟合到数据时应用。FastMCD 算法同时计算数据集位置的鲁棒估计。

Raw估计可通过 [`MinCovDet`](generated/sklearn.covariance.MinCovDet.html#sklearn.covariance.MinCovDet "sklearn.covariance.MinCovDet") 对象的 `raw_location_` 和 `raw_covariance_` 属性获得。

参考文献:

\[3\]*([1](#id10), [2](#id12))* P. J. Rousseeuw. Least median of squares regression. J. Am Stat Ass, 79:871, 1984.[\[4\]](#id13)A Fast Algorithm for the Minimum Covariance Determinant Estimator, 1999, American Statistical Association and the American Society for Quality, TECHNOMETRICS.

例子:

- See [Robust vs Empirical covariance estimate](../auto_examples/covariance/plot_robust_vs_empirical_covariance.html#sphx-glr-auto-examples-covariance-plot-robust-vs-empirical-covariance-py)关于如何将对象 [`MinCovDet`](generated/sklearn.covariance.MinCovDet.html#sklearn.covariance.MinCovDet "sklearn.covariance.MinCovDet") 与数据拟合的示例, 尽管存在异常值,但估计结果仍然比较准确。

- See [Robust covariance estimation and Mahalanobis distances relevance](../auto_examples/covariance/plot_mahalanobis_distances.html#sphx-glr-auto-examples-covariance-plot-mahalanobis-distances-py)马氏距离(Mahalanobis distance),针对协方差估计器 [`EmpiricalCovariance`](generated/sklearn.covariance.EmpiricalCovariance.html#sklearn.covariance.EmpiricalCovariance "sklearn.covariance.EmpiricalCovariance") 和 [`MinCovDet`](generated/sklearn.covariance.MinCovDet.html#sklearn.covariance.MinCovDet "sklearn.covariance.MinCovDet") 之间的差异进行可视化。(所以我们得到了精度矩阵的更好估计)

Influence of outliers on location and covariance estimatesSeparating inliers from outliers using a Mahalanobis distance[![robust_vs_emp](https://box.kancloud.cn/9a6596ba1f70ce69674c5c8e0bb1213f_566x424.jpg)](../auto_examples/covariance/plot_robust_vs_empirical_covariance.html)[![mahalanobis](https://box.kancloud.cn/73539c6befeadfd4680d3e2a11196e6c_566x424.jpg)](../auto_examples/covariance/plot_mahalanobis_distances.html)

oracle协方差函数,2.6. 协方差估计相关推荐

  1. sklearn自学指南(part57)--协方差估计

    学习笔记,仅供参考,有错必纠 文章目录 协方差估计 经验协方差 缩减协方差 基本的收缩 Ledoit-Wolf收缩 甲骨文近似收缩(Oracle Approximating Shrinkage) 稀疏 ...

  2. python计算两组数据的协方差_2.6. 协方差估计(Covariance estimation)

    2.6. 协方差估计(Covariance estimation) 许多统计问题需要估计总体的协方差矩阵(population's covariance matrix),这可以看作是对数据集散点图形状 ...

  3. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——协方差估计的高维效应与Marcenko-Pastur规则

    UA MATH567 高维统计 专题0 为什么需要高维统计理论?--协方差估计的高维效应与Marcenko-Pastur规则 上一讲我们介绍了在实验中,线性判别分析的判别误差会随着维度的上升而上升,而 ...

  4. UA MATH567 高维统计III 随机矩阵10 亚高斯矩阵的应用:协方差估计与聚类问题的样本量需求计算

    UA MATH567 高维统计III 随机矩阵10 亚高斯矩阵的应用:协方差估计与聚类的样本量 如果XXX是零均值的随机变量,则Σ=EXXT\Sigma = EXX^TΣ=EXXT,假设{Xi}i=1 ...

  5. sklearn自学指南(part20)--收缩和协方差估计

    学习笔记,仅供参考,有错必究 文章目录 线性判别和二次判别分析 收缩和协方差估计 估计算法 线性判别和二次判别分析 收缩和协方差估计 收缩是一种正则化形式,用于在训练样本数量比特征数量少的情况下改善协 ...

  6. sklearn(三) sklearn.covariance 协方差估计 *

    首先对协方差有个总体认识:协方差主要是用来估计数据中不同特征之间的相互关系的一个统计量,除协方差以外,"相关系数"也可以用来估计数据中不同特征的相互关系. "相关系数&q ...

  7. sklearn.covariance(协方差)模块结构及用法

    许多统计学问题需要做总体协方差矩阵评估,可以看作是数据集散点图的评估. 大多数情况下,这样一个评估会在与一个对估计质量有很大影响(大小.结构.同质性)的样本上完成. sklearn.covarianc ...

  8. eviews怎么回归道格拉斯生产函数_【干货分享】Eviews估计方法汇总

    1最小二乘法 (1)普通最小二乘估计(OLS):这是使用的最为普遍的模型,基本原理就是估计残差平方和最小化,不予赘述.(2)加权最小二乘估计(WLS)       Eviews路径:LS模型设定对话框 ...

  9. Oracle CheckPoint进程

    在实例经过分配内存结构,加载控制文件后,然后要打开数据库的时候,需要做到控制文件,数据文件,联机重做日志保持相互状态一致性,数据库才可以打开.当数据库发生实例不正常关闭时(比如系统掉电或者Shutdo ...

最新文章

  1. js实现审批流_JavaScript实现审核流程状态的动态显示进度条
  2. 微信第一行代码曝光!从「扫地僧」到「地成佛」,张小龙10年磨一剑
  3. qstringlist格式怎么写到txt_进阶能力 | 一招解决TXT电子书乱码问题
  4. U-Boot移植教程之二:移植
  5. 一个失败的SAP Spartacus路由修改尝试 -在CmsPageGuard的开头触发 OCC API 调用
  6. 选择排序法对数组进行排序
  7. SVN学习总结(3)——分支合并
  8. java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...
  9. Struts2简单入门实例
  10. 个人源码管理,SVN本地化
  11. 程序语言POJ 2406 Power Strings
  12. ArcView GIS 应用与开发技术(5)-统计图
  13. node express框架实现下载文件功能
  14. 我是一个将近30岁的女程序员
  15. 抖音快手如何上热门技巧IP定位让你离百万网红只差一步-阿甘电商
  16. 大陆人怎么去香港银行开户?
  17. Flutter高仿微信-第36篇-单聊-语音通话
  18. 练手必备,20个Python实战项目含源代码
  19. LBS找外贸客户 外贸怎么找客户
  20. 微信公众号推广技巧之一

热门文章

  1. Equalization Loss论文小结(CVPR2020)
  2. 云计算基础——云存储
  3. LabVIEW随前面板缩放前面板的所有对象
  4. TortoiseGit的使用
  5. python小猴子摘桃子的故事_小猴子摘桃子看图写话
  6. autojs命令代码大全_mac使用技巧,mac使用常见教程,mac终端命令常见大全
  7. owncloud php intl,owncloud部署
  8. tcpip.sys是什么文件,tcpip.sys蓝屏的解决办法
  9. java 获取默认网关_Java查找默认网关的网络接口
  10. Linux 中如何查询默认网关