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...)