Lo que la operación $C^{-\frac{1}{2}}$ se refiere a que es la descorrelación de los subyacentes de la muestra de componentes no correlacionados; $C^{-\frac{1}{2}}$ es utilizado como el blanqueamiento de la matriz. Esto es natural de la operación cuando se busca analizar cada columna/fuente de los datos originales de la matriz de $A$ (teniendo una matriz de covarianza $C$), a través de una correlación de la matriz $Z$. La forma más común de la aplicación de tales blanqueamiento es a través de la descomposición de Cholesky (donde utilizamos $C = LL^T$, ver este hilo para ver un ejemplo con la "coloración" un ejemplo) pero aquí se utiliza un poco menos infrecuente de Mahalanobis blanqueamiento (donde utilizamos $C= C^{0.5} C^{0.5}$).
Toda la operación en R iría un poco como esto:
set.seed(323)
N <- 10000;
p <- 3;
# Define the real C
( C <- base::matrix( data =c(4,2,1,2,3,2,1,2,3), ncol = 3, byrow= TRUE) )
# Generate the uncorrelated data (ground truth)
Z <- base::matrix( ncol = 3, rnorm(N*p) )
# Estimate the colouring matrix C^0.5
CSqrt <- expm::sqrtm(C)
# "Colour" the data / usually we use Cholesky (LL^T) but using C^0.5 valid too
A <- t( CSqrt %*% t(Z) )
# Get the sample estimated C
( CEst <- round( digits = 2, cov( A )) )
# Estimate the whitening matrix C^-0.5
CEstInv <- expm::sqrtm(solve(CEst))
# Whiten the data
ZEst <- t(CEstInv %*% t(A) )
# Check that indeed we have whitened the data
( round( digits = 1, cov(cbind(ZEst, Z) ) ) )
Tan sucintamente responder a la pregunta planteada:
- Esto significa que podemos decorrelate la muestra $A$ que está asociado con la matriz de covarianza $C$, de tal manera que podemos obtener los componentes no correlacionados. Esto es comúnmente conocido como blanqueamiento.
- El general de Álgebra Lineal idea de lo que supone es que un (covarianza) de la matriz puede ser utilizado como una proyección del operador (para generar una correlación de la muestra por la "coloración"), pero también lo hace a la inversa (para decorrelate/"blanquear" una muestra).
- Sí, la forma más fácil de criar a un válido matriz de covarianza a cualquiera de los poderes (la raíz cuadrada negativa es simplemente un caso especial) mediante el eigen-descomposición de la misma; $C = V \Lambda V^T$, $V$ ser un ortonormales de la matriz de la celebración de los vectores propios de a $C$ $\Lambda$ ser una matriz diagonal la celebración de los autovalores. Entonces podemos fácilmente cambiar la matriz diagonal $\Lambda$ como deseemos y obtener el resultado relevante.
Un pequeño fragmento de código mostrando el punto 3.
# Get the eigendecomposition of the covariance matrix
myEigDec <- eigen(cov(A))
# Use the eigendecomposition to get the inverse square root
myEigDec$vectors %*% diag( 1/ sqrt( myEigDec$values) ) %*% t(myEigDec$vectors)
# Use the eigendecomposition to get the "negative half power" (same as above)
myEigDec$vectors %*% diag( ( myEigDec$values)^(-0.5) ) %*% t(myEigDec$vectors)
# And to confirm by the R library expm
solve(expm::sqrtm(cov(A)))