oas#
- sklearn.covariance.oas(X, *, assume_centered=False)[source]#
使用 Oracle 近似收缩估算协方差。
Read more in the User Guide.
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
Data from which to compute the covariance estimate.
- 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])。
此处实现的 shrinkage 公式与 [1] 中的公式 (23) 不同。在原始文章中,公式 (23) 指出 2/p(p 是特征数)在分子和分母中都乘以 Trace(cov*cov),但此操作被省略,因为对于较大的 p,2/p 的值非常小,以至于它不会影响估计器(estimator)的值。
References
示例
>>> 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)