scikit-learn 协方差估计
许多统计问题都需要估计总体的协方差矩阵,这可以看作是对数据集散点图形状的估计。在大多数情况下,必须对某个样本进行这样的估计,其属性(大小,结构,均匀性)对估计质量有很大影响。 sklearn.covariance
包提供了用于在各种设置下准确估计总体协方差矩阵的工具。
我们假设观测值是独立的,并且分布相同(iid)。
2.6.1. 经验协方差
已知数据集的协方差矩阵可以由经典的最大似然估计器(或“经验协方差”)很好地近似,前提是观测的数量要比特征的数量(描述观测的变量)大得多。更准确地说,更准确地说,样本的最大似然估计是相应总体协方差矩阵的无偏估计。
样本的经验协方差矩阵可以使用empirical_covariance
包的功能来计算 ,或者使用 EmpiricalCovariance.fit
方法将对象EmpiricalCovariance
与数据样本拟合 。请注意,结果取决于数据是否聚集,因此可能需要准确的使用assume_centered
参数。更准确地说,如果要使用 assume_centered=False
,则假定测试集具有与训练集相同的均值向量。如果不是,则两者都应被用户聚集后,再使用assume_centered=True
。
示例:
2.6.2. 收缩协方差
2.6.2.1. 基本收缩
尽管最大似然估计是协方差矩阵的无偏估计,但它并不是对协方差矩阵特征值的一个良好的估计,因此从其反演中获得的精度矩阵并不准确。有时,由于数值原因甚至会发生经验协方差矩阵而无法反转的情况。为了避免这种反演问题,引入了经验协方差矩阵的一种变换方式:shrinkage
。
在scikit-learn中,可以使用该方法将转换(具有用户定义的收缩系数)直接应用shrunk_covariance
预先计算协方差。此外,协方差的收缩估计可以通过 ShrunkCovariance
对象的 ShrunkCovariance.fit
方法拟合到数据中。同样,结果取决于数据是否聚集,因此可能需要准确的使用参数assume_centered
。
选择收缩量, 相当于设置了偏差/方差权衡,下面将就此进行讨论。
示例:
2.6.2.2. Ledoit-Wolf 收缩
O. Ledoit和M. Wolf 在他们2004年的论文[1]中提出了计算最佳收缩系数α的公式 。这样可以使估计协方差矩阵与实际协方差矩阵之间的均方误差最小。
可以使用sklearn.covariance包中 ledoit_wolf
函数来计算样本的协方差的Ledoit-Wolf 估计, 或者拟合一个LedoitWolf
对象对相同的样本来获取该估计。
注意:总体协方差矩阵是各向同性的情况
当样本数量远大于特征数量时,人们会认为没有必要收缩。这背后的直觉是,如果总体协方差是满秩的,则当样本数量增加时,样本协方差也将变为正定。结果,没有必要收缩并且该方法应该自动进行收缩。
但是,当总体协方差恰好是单位矩阵的倍数时,在Ledoit-Wolf过程中就不是这种情况。在这种情况下,随着样本数量的增加,Lodoit-Wolf收缩率估算值接近1。这表明在Ledoit-Wolf的意义上,协方差矩阵的最佳估计是同一性的倍数。由于总体协方差已经是单位矩阵的倍数,因此Ledoit-Wolf解的确是一个合理的估计。
示例:
参考文献:
1O. 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 收缩近似估计器。
可以使用sklearn.covariance 包中函数 oas
计算样本协方差的OAS估计,或者可以通过将 OAS
对象拟合到相同的样本来获得该估计。
设置收缩时的偏差-方差权衡:比较Ledoit-Wolf和OAS估计器的选择
参考文献:
[2]Chen et al., “Shrinkage Algorithms for MMSE Covariance Estimation”, IEEE Trans. on Sign. Proc., Volume 58, Issue 10, October 2010.
示例:
-见收缩协方差估计:LedoitWolf vs OAS和最大似然对于如何拟合OAS
对象到数据。
-见Ledoit-Wolf vs OAS估计器,以可视化LedoitWolf
还有一个OAS
协方差的估计量。
2.6.3. 稀疏逆协方差
协方差矩阵的矩阵逆(通常称为精度矩阵)与部分相关矩阵成正比。它给出了部分独立性的关系。换句话说,如果两个特征在条件上彼此独立,则精度矩阵中的相应系数将为零。这就是为什么估计稀疏精度矩阵是有道理的:通过从数据中学习独立关系,可以得到更好地调节协方差矩阵的条件。这称为协方差选择。
在小样本情况下(n_samples
和n_features
相等或更小),稀疏的逆协方差估计量往往比收缩的协方差估计更好。但是,在相反的情况下,或者对于非常相关的数据,它们可能在数值上不稳定。另外,与收缩估计器不同,稀疏估计器能够恢复非对角线结构。
GraphicalLasso
估计器使用L1惩罚执行关于精度矩阵的稀疏性:alpha
参数越高,精度矩阵越稀疏。相应的GraphicalLassoCV
对象使用交叉验证来自动设置alpha
参数。
协方差矩阵和精度矩阵基于最大似然度估计,收缩估计和稀疏估计的比较。
注意 :结构恢复
从数据的相关性中恢复图形结构是一项具有挑战性的工作。如果您对这种恢复感兴趣,请记住:
从相关矩阵进行的恢复要比协方差矩阵容易:在运行 GraphicalLasso
之前先对观察值进行标准化如果底层图的节点连接数比平均节点数多,则该算法将丢失其中一些连接。 如果与基础图形中的边数相比,观察的次数不多,则将无法恢复。 即使您处于良好的恢复条件下,通过交叉验证(例如,使用 GraphicalLassoCV
对象)选择的alpha参数 也会导致选择过多的边。但是,相关边的权重将比无关边大。
数学公式如下:
其中:是要估计的精度矩阵(precision matrix),是样本的协方差矩阵。是非对角系数 的绝对值之和。 用于解决这个问题的算法是来自 Friedman 2008 Biostatistics 论文的 GLasso 算法。 它与 R 语言 glasso
包中的算法相同。
示例:
稀疏逆协方差估计: 合成数据的例子显示了结构的一些恢复,并与其他协方差估计量进行了比较。 股票市场结构的可视化: 以真实的股票市场数据为例,找出哪些符号联系最紧密。
参考文献:
Friedman et al, “Sparse inverse covariance estimation with the graphical lasso”, Biostatistics 9, pp 432, 2008
2.6.4. 鲁棒协方差估计
真实的数据集经常受到测量或记录误差的影响。由于各种原因,常规但不寻常的观察也可能出现。罕见的观测称为异常值。上面显示的经验协方差估计器和收缩协方差估计器对数据中异常值的存在非常敏感。因此,应该使用鲁棒的协方差估计器来估计实际数据集的协方差。 或者,可以使用鲁棒协方差估计器来执行异常值检测, 并根据数据的进一步处理:丢弃/降低某些观察值。
该sklearn.covariance
程序包实现了一个强大的协方差估计器,即最小协方差行列式[3]。
2.6.4.1. 最小协方差决定
最小协方差估计器是PJ Rousseeuw在[3]引入的数据集协方差的鲁棒估计器。这个想法是找出一个给定比例(h)的 “良好” 观察值,它们不是离群值, 然后计算他们的经验协方差矩阵,以补偿观测值的执行选择(“一致性步骤”)。 然后将该经验协方差矩阵重新缩放以补偿所执行的观察选择(”consistency step(一致性步骤)”)。计算完最小协方差决定估计器后,可以根据其马氏距离(Mahalanobis distance)给出观测值的权重, 得到数据集的协方差矩阵的重新加权估计(”reweighting step(重新加权步骤)”)。
Rousseeuw 和 Van Driessen [4]开发了 FastMCD 算法,以计算最小协方差决定因子。在 scikit-learn 中,在将 MCD 对象拟合到数据时, 使用该算法。FastMCD 算法同时计算数据集位置的鲁棒估计。
原始估计(Raw estimates)可通过 MinCovDet
对象的 raw_location_
和 raw_covariance_
属性获得。
参考文献:
[3] 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.
示例:
见稳健与经验协方差估计一个例子,说明如何将
MinCovDet
对象与数据相匹配,并查看在存在异常值的情况下如何保持估计的准确性。见鲁棒协方差估计与马氏距离相关性 想象
EmpiricalCovariance
和MinCovDet
基于马氏距离的协方差估计(因此我们也得到了精度矩阵的更好估计).
异常值对位置和协方差估计的影响 | 使用Mahalanobis距离分离内围点和离群点 |
---|---|
异常值对位置和协方差估计的影响
使用Mahalanobis距离分离内围点和离群点
更多建议: