Skip to content

2.6. 协方差估计(Covariance estimation)

许多统计问题需要估计总体的协方差矩阵(population’s covariance matrix),这可以看作是对数据集散点图形状的估计。大多数情况下,这样的估计必须对其性质(大小、结构、同质性)对估计质量有很大影响的样本进行。sklearn.covariance 包提供了在各种设置下精确估计总体协方差矩阵的工具。

我们假设观测值是独立且同分布的(i.i.d.)。

2.6.1. 经验协方差(Empirical covariance)

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

可以使用包的empirical_covariance函数计算样本的经验协方差矩阵,或者使用EmpiricalCovariance.fit方法将 EmpiricalCovariance 对象与数据样本拟合。请注意,结果取决于数据是否聚集(centered),因此可能需要准确地使用 assume_centered 参数。更准确地说,如果 assume_centered=False,那么测试集应该与训练集具有相同的平均向量。如果不是,则两者都应由用户聚集,并应使用 assume_centered=True

示例:

2.6.2. 收缩协方差(Shrunk Covariance)

2.6.2.1. 基本收缩(Basic shrinkage)

尽管极大似然估计是协方差矩阵的无偏估计,但它不是协方差矩阵特征值的一个很好的估计,因此由其求逆得到的精度矩阵是不精确的。有时,由于数值原因,甚至出现经验协方差矩阵不能求逆的情况。为了避免这种问题,引入了经验协方差矩阵的一种变换:shrinkage(收缩)。

在scikit-learn中,此变换(具有用户定义的收缩系数)可直接应用于使用shrunk_covariance方法预先计算的协方差。此外,协方差的收缩估计器(shrunk estimator)可以用ShrunkCovariance对象及其 ShrunkCovariance.fit方法拟合数据。同样,结果取决于数据是否聚集,因此可能需要准确地使用 assume_centered 参数。

从数学上讲,这种收缩包括减小经验协方差矩阵的最小特征值和最大特征值之间的比率。这可以通过简单地根据给定的偏移量(offset)移动每个特征值来实现,这相当于找到协方差矩阵的l2惩罚极大似然估计器(l2-penalized Maximum Likelihood Estimator)。实际上,收缩可以归结为一个简单的凸变换(convex transformation):$\Sigma_{\rm shrunk} = (1-\alpha)\hat{\Sigma} + \alpha\frac{{\rm Tr}\hat{\Sigma}}{p}\rm Id$

选择收缩量$\alpha$相当于于设置偏差/方差(bias/variance)权衡,如下所述。

示例:

•有关如何将ShrunkCovariance 对象与数据拟合的示例,请参见收缩协方差估计:LedoitWolf vs OAS和最大似然

2.6.2.2. 莱多特沃尔夫收缩(Ledoit-Wolf shrinkage)

在2004年的论文[1]中,O.Ledoit和M.Wolf提出了一个计算最佳收缩系数$\alpha$的公式,该公式使估计值与实际协方差矩阵之间的均方误差(Mean Squared Error)最小。

可以用sklearn.covariance包的ledoit_wolf函数在样本上计算协方差矩阵的Ledoit-Wolf估计,也可以通过将LedoitWolf 对象拟合到同一样本来获得该估计。

注意:总体协方差矩阵各向同性(isotropic)的情形

需要注意的是,当样本数量远大于特征数量时,预计无需收缩。直观地说,如果总体协方差是满秩的(full rank),当样本数增加时,样本协方差也将成为正定的(positive definite)。因此,无需收缩,该方法应自动进行收缩。

然而,在Ledoit-Wolf过程中,当总体协方差恰好是恒等矩阵(identity matrix)的倍数时,情况并非如此。在这种情况下,随着样本数量的增加,Ledoit-Wolf收缩率估计值接近1。这表明在Ledoit-Wolf意义下协方差矩阵的最优估计是恒等式的倍数。由于总体协方差已经是恒等矩阵的倍数,因此Ledoit-Wolf解确实是一个合理的估计。

示例:

参考文献:

  • [1] 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.6.2.3. Oracle 近似收缩

在假设数据是高斯分布的情况下,Chen 等人 [2] 导出了一个公式,该公式旨在选择一个收缩系数,其产生的均方误差小于 Ledoit 和 Wolf 的公式给出的值。由此得到的估计器称为协方差的Oracle收缩近似估计器(Oracle Shrinkage Approximating estimator)。

可以使用sklearn.covariance包的oas函数在样本上计算协方差矩阵的OAS估计,也可以通过将OAS 对象与同一样本进行拟合来获得该估计。

https://scikit-learn.org/stable/_images/sphx_glr_plot_covariance_estimation_0011.png

设定收缩率时的偏差-方差(Bias-variance)权衡:比较Ledoit-Wolf和OAS估计器的选择。

参考文献:

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

示例:

https://scikit-learn.org/stable/_images/sphx_glr_plot_lw_vs_oas_0011.png

2.6.3. 稀疏逆协方差(Sparse inverse covariance)

协方差矩阵的逆矩阵,通常称为精度矩阵(precision matrix),该矩阵与部分相关矩阵(partial correlation matrix)成正比。它给出了部分独立关系。换言之,如果两个特征在条件上相互独立,则精度矩阵中的相应系数将为零。这就是为什么估计稀疏精度矩阵是有意义的:协方差矩阵估计可以更好受到通过从数据中学习独立关系的限制。这就是协方差选择(covariance selection)

在小样本情况下,当n_samplesn_features或更小数量级,稀疏逆协方差估计器(sparse inverse covariance estimators)比收缩协方差估计器(shrunk covariance estimators)更有效。然而,在相反的情况下,或者对于非常相关的数据,它们在数值上是不稳定的。此外,与收缩估计器(shrinkage estimators)不同,稀疏估计器(sparse estimators)能够恢复非对角结构(off-diagonal structure)。

GraphicalLasso估计器使用l1惩罚来增强精度矩阵(precision matrix)的稀疏性:其 alpha 参数越高,精度矩阵(precision matrix)越稀疏。相应的 GraphicalLassoCV对象使用交叉验证(cross-validation)自动设置 alpha 参数。

https://scikit-learn.org/stable/_images/sphx_glr_plot_sparse_cov_0011.png

在非常小样本设置下协方差和精度矩阵的最大似然、收缩和稀疏估计的比较。

注意:结构恢复

从数据中的相关性恢复图形结构(graphical structure)是一件具有挑战性的事情。如果您对此类恢复感兴趣,请记住:

  • 从相关矩阵中恢复比从协方差矩阵中恢复更容易:在运行GraphicalLasso之前标准化您的观察值

  • 如果基础图中的节点的连接比平均节点多得多,则算法将丢失其中的一些连接。

  • 如果与基础图中的边数量相比,观察值的数量不是很大,则无法恢复。

  • 即使您处于有利的恢复条件下,通过交叉验证(例如使用GraphicalLassoCV对象)选择的alpha参数也会导致选择过多的边。但是,相关的边的权重将比不相关的边的权重更大。

数学公式如下: $$ \hat{K} = \mathrm{argmin}_K \big( \mathrm{tr} S K - \mathrm{log} \mathrm{det} K + \alpha |K|_1 \big) $$ 其中$K$是要估计的精度矩阵,$S$是样本协方差矩阵。$|K|_1$是$K$的非对角系数绝对值之和。用于解决此问题的算法是Friedman 2008生物统计学论文中的GLasso算法。它与Rglasso 包中的算法相同。

示例:

参考文献:

2.6.4.鲁棒协方差估计(Robust Covariance Estimation)

真实的数据集经常受到测量或记录误差的影响。有规律但不常见的观察也可能出于各种原因出现。非常罕见的观测数据称为离群值(outliers)。上述经验协方差估计器(empirical covariance estimator)和收缩协方差估计器(shrunk covariance estimators)对数据中存在异常值非常敏感。因此,应该使用鲁棒协方差估计器(robust covariance estimators)来估计其真实数据集的协方差。或者,根据数据的进一步处理,可以使用鲁棒协方差估计器来执行离群点检测(outlier detection)和丢弃/降低某些观测值的权重。

sklearn.covariance包实现了协方差的稳健估计器,最小协方差行列式(Minimum Covariance Determinant)[3]

2.6.4.1. 最小协方差行列式(Minimum Covariance Determinant)

最小协方差行列式估计器是P.J.Rousseeuw在 [3] 中提出的一种数据集协方差的鲁棒估计。其思想是找到一个给定比例(h)的“好”观测值(这些观测值不是离群值(outliers)),并计算它们的经验协方差矩阵(empirical covariance matrix)。然后重新缩放该经验协方差矩阵以补偿执行的观测选择(“一致性步骤”)。在计算了最小协方差行列式估计量之后,可以根据观测值的Mahalanobis距离给观测值赋予权重,从而导致对数据集的协方差矩阵的重新加权估计(“重新加权步骤”)。

为了计算最小协方差行列式,Rousseeuw和Van Driessen [4] 设计了FastMCD算法。将MCD对象拟合到数据时,此算法在scikit-learn中使用。FastMCD算法还同时计算数据集位置的鲁棒估计。

原始估计可以通过 MinCovDet 鲁棒协方差估计器对象的 raw_location_raw_covariance_属性来访问。

参考文献:

  • 3(1,2) P. J. Rousseeuw. Least median of squares regression. J. Am Stat Ass, 79:871, 1984.

  • [4] A Fast Algorithm for the Minimum Covariance Determinant Estimator, 1999, American Statistical Association and the American Society for Quality, TECHNOMETRICS.

示例:


离群值对位置和协方差估计的影响 用Mahalanobis距离内围点和离群点
robust_vs_emp mahalanobis

© 2007 - 2019, scikit-learn 开发人员(BSD 许可证). 此页显示源码