76 votos

¿La distribución gaussiana es isótropa?

Hoy he estado en un seminario y el profesor ha dicho que la distribución gaussiana es isótropa. ¿Qué significa que una distribución sea isótropa? Parece que está utilizando esta propiedad para la pseudo-independencia de los vectores donde cada entrada se muestrea a partir de la distribución normal.

4 votos

En general, una distribución normal multivariante puede ser anisótropa en función de la matriz de covarianza. Es evidente que ha habido algún error de comunicación.

109voto

Darren Puntos 101

TLDR: Una gaussiana isotrópica es aquella cuya matriz de covarianza está representada por la matriz simplificada $\Sigma = \sigma^{2}I$ .

Algunas motivaciones:

Consideremos la distribución gaussiana tradicional:

$$ \mathcal{N}(\mu,\,\Sigma) $$

donde $\mu$ es la media y $\Sigma$ es la matriz de covarianza.

Considere cómo crece el número de parámetros libres en esta gaussiana a medida que aumenta el número de dimensiones.

$\mu$ tendrá un crecimiento lineal. $\Sigma$ ¡tendrá un crecimiento cuadrático!

Este crecimiento cuadrático puede ser muy costoso computacionalmente, por lo que $\Sigma$ suele restringirse como $\Sigma = \sigma^{2}I$ donde $\sigma^{2}I$ es una varianza escalar multiplicada por una matriz de identidad.

Tenga en cuenta que esto da como resultado $\Sigma$ donde todas las dimensiones son independientes y donde la varianza de cada dimensión es la misma. Por tanto, la gaussiana será circular/esférica.

Descargo de responsabilidad: no soy matemático y acabo de enterarme de esto, así que puede que me falten algunas cosas :)

Espero que le sirva de ayuda.

16voto

Milind R Puntos 108

Me gustaría añadir algo visual a las otras respuestas.

Cuando las variables son independientes, es decir, la distribución es isótropa, significa que la distribución está alineada con el eje.

Por ejemplo, para $\Sigma = \begin{pmatrix}1 & 0 \\ 0 & 30\end{pmatrix}$ obtendrías algo como esto:

image of 2D gaussian with higher Y variance

Entonces, ¿qué ocurre cuando se no ¿isotrópico? Por ejemplo, cuando $\Sigma = \begin{pmatrix}1 & 15 \\ 15 & 30\end{pmatrix}$ la distribución aparece "girada", ya no alineada con los ejes:

image of 2D gaussian with covariance between X and Y

Tenga en cuenta que esto es sólo un ejemplo, el $\Sigma$ anterior no es válido, ya que no es PSD.


Código:

import numpy as np
from matplotlib import pyplot as plt

pts = np.random.multivariate_normal([0, 0], [[1,15],[15,31]], size=10000, check_valid='warn')

plt.scatter(pts[:, 0], pts[:, 1], s=1)
plt.xlim((-30,30))
plt.ylim((-30,30))

11voto

Cez Chi Puntos 13

No soy un estudiante de matemáticas pero intentaré describir lo que yo entiendo: una distribución gaussiana isotrópica significa una distribución gaussiana multidimensional con su matriz de varianza como una matriz identidad multiplicada por el mismo número en su diagonal. Cada dimensión puede verse como una distribución gaussiana unidimensional independiente (no existe covarianza).

1voto

Conner93 Puntos 1

Gracias a Tomoiaga, valiosa oportunidad de aprendizaje. Explicación para psd en su respuesta.

en relación con material del curso Aprendizaje profundo probabilístico con TensorFlow 2 en coursera.

la definición de semidefinido positivo:

Una matriz simétrica $M \in \mathbb{R}^{d\times d}$ es positivo semidefinida si cumple $b^TMb \ge 0$ para todo $b\in\mathbb{R}^d$ . Si, además, tenemos $b^TMb = 0 \Rightarrow > b=0$ entonces $M$ es positiva definida.

En una palabra: la matriz de covarianza válida debe ser simetría y positiva (semi)definida . Sin embargo, ¿cómo comprobar el $\Sigma$ satisfecho con el requisito?

Aquí viene La descomposición de Cholesky

Para toda matriz simétrica positiva-definida de valor real $M$ existe una única matriz de diagonal inferior $L$ que tiene entradas diagonales positivas para las que

\begin{equation} LL^T = M \end{equation} Esto se denomina Descomposición Cholesky de $M$

Construyamos algunos códigos.

Dada una matriz psd $ \Sigma = \begin{bmatrix} 10 & 5 \\ 5 & 10 \end{bmatrix}$ y un no-psd $ \Sigma = \begin{bmatrix} 10 & 11 \\ 11 & 10 \end{bmatrix}$ como la matriz de covarianza

sigma = [[10., 5.],[5., 10.]]
np.linalg.cholesky(sigma)

Salida:

<tf.Tensor: shape=(2, 2), dtype=float32, numpy= array([[3.1622777, 0.  ],
       [1.5811388, 2.738613 ]], dtype=float32)>

bad_sigma = [[10., 11.], [11., 10.]]
try:
    scale_tril = tf.linalg.cholesky(bad_sigma)
except Exception as e:
    print(e)

Salida:

Cholesky decomposition was not successful. The input might not be valid.

Para mayor comodidad, un matriz triangular inferior es más fácil de crear.

Por último, la demostración con gaussianas isótropas y no isótropas.

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

## isotropic normal
sigma = [[1., 0.],[0., 1.]]
lower_triangular = np.linalg.cholesky(sigma)
print(lower_triangular)
sigma = np.matmul(lower_triangular, np.transpose(lower_triangular))
##

bivariate_normal = np.random.multivariate_normal([0, 0], sigma, size=10000, check_valid='warn')

x1 = bivariate_normal[:, 0]
x2 = bivariate_normal[:, 1]
sns.jointplot(x1, x2, kind='kde', space=0, color='b')

isotrópico-normal

# #non-isotropic normal
# sigma = [[1. , 0.6], [0.6, 1.]]

no isotrópico-normal

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X