oas#

sklearn.covariance.oas(X, *, assume_centered=False)[source]#

使用Oracle近似收缩估计协方差。

更多信息请阅读用户指南

参数:
Xarray-like of shape (n_samples, n_features)

用于计算协方差估计的数据。

assume_centeredbool, default=False

如果为True,则在计算之前不会对数据进行居中。这对于处理均值近似等于零但不完全等于零的数据很有用。如果为False,则在计算之前会对数据进行居中。

返回值:
shrunk_covarray-like of shape (n_features, n_features)

收缩后的协方差。

shrinkagefloat

用于计算收缩估计的凸组合中的系数。

备注

正则化协方差为

(1 - shrinkage) * cov + shrinkage * mu * np.identity(n_features),

其中 mu = trace(cov) / n_features,而 shrinkage 由 OAS 公式给出(参见 [1])。

此处实现的收缩公式与文献[1]中的公式(23)有所不同。原文中,公式(23)指出分子和分母都乘以2/p(其中p为特征数量),但此处省略了此操作,因为对于较大的p,2/p的值非常小,不会影响估计器的值。

参考文献

示例

>>> import numpy as np
>>> from sklearn.covariance import oas
>>> rng = np.random.RandomState(0)
>>> real_cov = [[.8, .3], [.3, .4]]
>>> X = rng.multivariate_normal(mean=[0, 0], cov=real_cov, size=500)
>>> shrunk_cov, shrinkage = oas(X)
>>> shrunk_cov
array([[0.7533..., 0.2763...],
       [0.2763..., 0.3964...]])
>>> shrinkage
np.float64(0.0195...)