oas#

sklearn.covariance.oas(X, *, assume_centered=False)[источник]#

Оценить ковариацию с Oracle Approximating Shrinkage.

Подробнее в Руководство пользователя.

Параметры:
Xarray-like формы (n_samples, n_features)

Данные, по которым вычисляется оценка ковариации.

assume_centeredbool, по умолчанию=False

Если True, данные не будут центрироваться перед вычислением. Полезно для работы с данными, среднее значение которых значительно равно нулю, но не точно нулю. Если False, данные будут центрироваться перед вычислением.

Возвращает:
shrunk_covarray-like формы (n_features, n_features)

Сжатая ковариация.

сжатиеfloat

Коэффициент в выпуклой комбинации, используемой для вычисления сжатой оценки.

Примечания

Регуляризованная ковариация:

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

где mu = trace(cov) / n_features, а сжатие задается формулой OAS (см. [1]).

Формулировка сжатия, реализованная здесь, отличается от уравнения 23 в [1]В исходной статье формула (23) утверждает, что 2/p (где p — количество признаков) умножается на Trace(cov*cov) как в числителе, так и в знаменателе, но эта операция опущена, потому что для большого 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)