tf.contrib.distributions.Chi2
Распределение Хи-квадрат.
Наследуется от: Gamma
tf.contrib.distributions.Chi2(
df, validate_args=False, allow_nan_stats=True, name='Chi2'
)
Распределение Хи-квадрат определено на положительных действительных числах с помощью параметра степеней свободы ("df").
Математические подробности
Функция плотности вероятности (pdf) равна,
pdf(x; df, x > 0) = x**(0.5 df - 1) exp(-0.5 x) / Z Z = 2**(0.5 df) Gamma(0.5 df)
где:
-
dfобозначает степени свободы, -
Zявляется нормирующей константой, и, -
Gamma— гамма-функция.
Распределение Хи-квадрат является частным случаем распределения Гамма, т.е.,
Chi2(df) = Gamma(concentration=0.5 * df, rate=0.5)
| Аргументы | |
|---|---|
df | Плавающая точка тензор, степени свободы распределения(ий). df должны содержать только положительные значения. |
validate_args | Python bool, по умолчанию False. Когда True параметры распределения проверяются на валидность, несмотря на возможное ухудшение производительности во время выполнения. Когда False недопустимые входные данные могут молча привести к неверным результатам. |
allow_nan_stats | Python bool, по умолчанию True. Когда True, статистики (например, среднее значение, мода, дисперсия) используют значение "NaN", чтобы указать, что результат не определен. Когда False, возникает исключение, если один или несколько элементов пакетных статистик не определены. |
name | Python str имя, добавленное в префикс к операциям, созданным этим классом. |
| Атрибуты | |
|---|---|
allow_nan_stats | Python bool описывающий поведение, когда статистика не определена. Статистики возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистика не определена, например, если плотность распределения не достигает максимума в области определения распределения, мода не определена. Если среднее значение не определено, то дисперсия по определению также не определена. Например, среднее значение для распределения Стьюдента при df = 1 не определено (нет ясного способа сказать, что оно равно либо + или - бесконечности), поэтому дисперсия = E[(X - mean)**2] также не определена. |
batch_shape | Форма одного образца из одного индекса события как TensorShape. Может быть частично определена или неизвестна. Размерности пакета — индексы независимых, нетождественных параметризаций этого распределения. |
concentration | Параметр концентрации. |
df | |
dtype | DType обработанных Tensor этим Distribution. |
event_shape | Форма одного образца из одного пакета в виде TensorShape. Может быть частично определена или неизвестна. |
name | Префикс имени для всех операций, созданных этим Distribution. |
parameters | Словарь параметров, используемых для создания этого Distribution. |
rate | Параметр скорости. |
reparameterization_type | Описывает, как образцы из распределения перепараметризуются. В настоящее время это один из статических экземпляров |
validate_args | Python bool, указывающий на то, что возможно дорогостоящие проверки включены. |
Методы
batch_shape_tensor
batch_shape_tensor(
name='batch_shape_tensor'
)
Форма одного образца из одного индекса события в виде 1-мерного Tensor.
Размерности пакета — индексы независимых, нетождественных параметризаций этого распределения.
| Аргументы | |
|---|---|
name | имя для присвоения операции |
| Возвращаемое значение | |
|---|---|
batch_shape | Tensor. |
cdf
cdf(
value, name='cdf'
)
Функция кумулятивного распределения.
Для случайной величины X, функция кумулятивного распределения cdf имеет вид:
cdf(x) := P[X <= x]
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python str префикс, добавляемый к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
cdf | тензор с формой sample_shape(x) + self.batch_shape и значениями типа self.dtype. |
copy
copy(
**override_parameters_kwargs
)
Создает глубокую копию распределения.
Примечание: распределение копии может по-прежнему зависеть от исходных аргументов инициализации.
| Аргументы | |
|---|---|
**override_parameters_kwargs | Словарь строк/значений аргументов инициализации для перезаписи новыми значениями. |
| Возвращаемое значение | |
|---|---|
distribution | Новый экземпляр type(self), инициализированный из объединения self.parameters и override_parameters_kwargs, т.е., dict(self.parameters, **override_parameters_kwargs). |
covariance
covariance(
name='covariance'
)
Ковариация.
Ковариация (возможно) определена только для распределений с нескалярным событием.
Например, для распределения со векторной величиной длины k, оно вычисляется как,
Cov[i, j] = Covariance(X_i, X_j) = E[(X_i - E[X_i]) (X_j - E[X_j])]
где Cov является (пакетом) матрицей 0 <= (i, j) < k, а E обозначает математическое ожидание.
В альтернативном случае, для невекторных, многомерных распределений (например, матрично-значных, Вишарта), Covariance должно вернуть (пакет) матриц при какой-то векторизации событий, т.е.,
Cov[i, j] = Covariance(Vec(X)_i, Vec(X)_j) = [as above]
где Cov является (пакетом) матриц 0 <= (i, j) < k' = reduce_prod(event_shape), а Vec — некая функция, сопоставляющая индексы размерностей событий этого распределения с индексами длины-k' вектора.
| Аргументы | |
|---|---|
name | Python str префикс, добавляемый к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
covariance | Плавающая точка тензор с формой [B1, ..., Bn, k', k'], где первые n размерности — координаты пакета, а k' = reduce_prod(self.event_shape). |
cross_entropy
cross_entropy(
other, name='cross_entropy'
)
Вычисляет (энтропию Шеннона) кросс-энтропию.
Обозначим это распределение (self) как P и распределение other как Q. Предполагая, что P, Q абсолютно непрерывны друг относительно друга и допускают плотности p(x) dr(x) и q(x) dr(x), (энтропия Шеннона) кросс-энтропия определяется как:
H[P, Q] = E_p[-log q(X)] = -int_F p(x) log q(x) dr(x)
где F обозначает область определения случайной величины X ~ P.
| Аргументы | |
|---|---|
other | Экземпляр tfp.distributions.Distribution. |
name | Python str префикс, добавляемый к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
cross_entropy | Плавающая точка тензор с формой [B1, ..., Bn] представляющий собой n различные вычисления (энтропии Шеннона) кросс-энтропии. |
entropy
entropy(
name='entropy'
)
Энтропия Шеннона в натах.
event_shape_tensor
event_shape_tensor(
name='event_shape_tensor'
)
Форма одного образца из одной партии в виде 1-мерного int32 Tensor.
| Аргументы | |
|---|---|
name | имя, которое нужно присвоить операции |
| Возвращаемое значение | |
|---|---|
event_shape | Tensor. |
is_scalar_batch
is_scalar_batch(
name='is_scalar_batch'
)
Указывает, что batch_shape == [].
| Аргументы | |
|---|---|
name | Python str перед именами операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
is_scalar_batch | bool скаляр Tensor. |
is_scalar_event
is_scalar_event(
name='is_scalar_event'
)
Указывает, что event_shape == [].
| Аргументы | |
|---|---|
name | Python str перед именами операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
is_scalar_event | bool скаляр Tensor. |
kl_divergence
kl_divergence(
other, name='kl_divergence'
)
Вычисляет расхождение Куллбека-Лайблера.
Обозначим данное распределение (self) как p и распределение other как q. Предполагая, что p, q абсолютно непрерывны относительно меры отсчёта r, расхождение Куллбека-Лайблера определяется как:
KL[p, q] = E_p[log(p(X)/q(X))]
= -int_F p(x) log q(x) dr(x) + int_F p(x) log p(x) dr(x)
= H[p, q] - H[p]
где F обозначает область определения случайной величины X ~ p, H[., .] обозначает (поперечное) кросс-энтропию, а H[.] обозначает (поперечную) энтропию.
| Аргументы | |
|---|---|
other | экземпляр tfp.distributions.Distribution. |
name | Python str перед именами операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
kl_divergence | self.dtype Tensor с формой [B1, ..., Bn], представляющей n различные вычисления расхождения Куллбека-Лайблера. |
log_cdf
log_cdf(
value, name='log_cdf'
)
Логарифмическая функция кумулятивного распределения.
Для случайной величины X, функция кумулятивного распределения cdf выглядит так:
log_cdf(x) := Log[ P[X <= x] ]
Часто для log_cdf(x) используется численное приближение, которое дает более точный результат, чем просто взятие логарифма cdf при x << -1.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python str перед именами операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
logcdf | тензор с формой sample_shape(x) + self.batch_shape и значениями типа self.dtype. |
log_prob
log_prob(
value, name='log_prob'
)
Логарифмическая функция плотности/массы вероятности.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python str перед именами операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
log_prob | тензор с формой sample_shape(x) + self.batch_shape и значениями типа self.dtype. |
log_survival_function
log_survival_function(
value, name='log_survival_function'
)
Логарифмическая функция выживаемости.
Для случайной величины X, функция выживаемости определяется как:
log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]
Обычно для логарифмической функции выживаемости используются различные численные приближения, которые более точны, чем 1 - cdf(x) при x >> 1.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python str перед именами операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
тензор с формой sample_shape(x) + self.batch_shape и значениями типа self.dtype. |
mean
mean(
name='mean'
)
Среднее значение.
mode
mode(
name='mode'
)
Мода.
Дополнительная документация из Gamma:
Мода гамма-распределения — это (shape - 1) / rate при shape > 1, и NaN в противном случае. Если self.allow_nan_stats равно False, будет поднято исключение, а не возвращено значение NaN.
param_shapes
@classmethod
param_shapes(
sample_shape, name='DistributionParamShapes'
)
Формы параметров, заданных желаемой формой вызова sample().
Это метод класса, который описывает, какие пары «ключ-значение» необходимы для создания данного Distribution, чтобы для вызова sample() данного экземпляра возвращалась определённая форма.
Подклассы должны переопределить метод класса _param_shapes.
| Аргументы | |
|---|---|
sample_shape | Tensor или список/кортеж Python. Желаемая форма вызова sample(). |
name | имя для добавления к операциям. |
| Возвращаемое значение | |
|---|---|
словарь имен параметров к формам Tensor . |
param_static_shapes
@classmethod
param_static_shapes(
sample_shape
)
param_shapes со статическими (т.е. TensorShape) формами.
Это метод класса, который описывает, какие пары «ключ-значение» необходимы для создания данного Distribution, чтобы для вызова sample() данного экземпляра возвращалась определённая форма. Предполагается, что форма выборки известна статически.
Подклассы должны переопределить метод класса _param_shapes для возврата тензоров с постоянными значениями при вводе постоянных значений.
| Аргументы | |
|---|---|
sample_shape | TensorShape или список/кортеж Python. Желаемая форма вызова sample(). |
| Возвращаемое значение | |
|---|---|
словарь имен параметров к формам TensorShape . |
| Исключения | |
|---|---|
ValueError | если sample_shape является TensorShape и не определён полностью. |
prob
prob(
value, name='prob'
)
Функция плотности/массы вероятности.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python-строка str добавленная в начале имён операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
prob | тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
quantile
quantile(
value, name='quantile'
)
Функция квантиля. Также известна как «обратная функция распределения» или «функция процентиля».
Для случайной величины X и p in [0, 1], квантиль quantile:
quantile(p) := x such that P[X <= x] == p
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python-строка str добавленная в начале имён операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
quantile | тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
sample
sample(
sample_shape=(), seed=None, name='sample'
)
Генерирует выборки указанной формы.
Обратите внимание, что вызов sample() без аргументов сгенерирует одну выборку.
| Аргументы | |
|---|---|
sample_shape | 0D или 1D int32 Tensor. Форма генерируемых выборок. |
seed | Целое число Python для генератора случайных чисел. |
name | Имя для операции. |
| Возвращаемое значение | |
|---|---|
samples | тензор Tensor с добавленными в начале измерениями sample_shape. |
stddev
stddev(
name='stddev'
)
Среднее квадратическое отклонение.
Среднее квадратическое отклонение определяется как,
stddev = E[(X - E[X])**2]**0.5
где X — случайная величина, связанная с этим распределением, E обозначает математическое ожидание, а stddev.shape = batch_shape + event_shape.
| Аргументы | |
|---|---|
name | Python-строка str добавленная в начало имён операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
stddev | Число с плавающей точкой Tensor с формой, идентичной batch_shape + event_shape, т.е. той же формы, что и self.mean(). |
survival_function
survival_function(
value, name='survival_function'
)
Функция выживаемости.
Для случайной величины X, функция выживаемости определяется:
survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python-строка str добавленная в начало имён операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
variance
variance(
name='variance'
)
Дисперсия.
Дисперсия определяется как,
Var = E[(X - E[X])**2]
где X — случайная величина, связанная с этим распределением, E обозначает математическое ожидание, а Var.shape = batch_shape + event_shape.
| Аргументы | |
|---|---|
name | Python-строка str добавленная в начало имён операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
variance | Число с плавающей точкой Tensor с формой, идентичной batch_shape + event_shape, т.е. той же формы, что и self.mean(). |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/distributions/Chi2