Matrix
將方差-協方差矩陣提高到負半冪
我想實現以下公式是變量x、y和z的方差-協方差矩陣:
我了解對角線和逆運算,但我不清楚將方差協方差矩陣提高到負半冪的含義。因此,我的問題
- 將協方差矩陣提高到負半冪是什麼意思?
- 這假設了線性代數的一般概念是什麼?
- 有沒有什麼好的公式可以將協方差矩陣提高到負半冪?
什麼操作指的是基礎樣本與不相關分量的去相關; 用作白化矩陣。在分析原始數據矩陣的每一列/源時,這是很自然的操作(有一個協方差矩陣),通過一個不相關的矩陣. 實現這種白化的最常見方法是通過 Cholesky 分解(我們使用,請參閱此線程以獲取“著色”樣本的示例)但在這裡我們使用稍微不常見的馬氏美白(我們使用)。R 中的整個操作有點像這樣:
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) ) ) )
因此,為了簡潔地回答提出的問題:
- 這意味著我們可以對樣本進行去相關與該協方差矩陣相關聯這樣我們就得到了不相關的分量。這通常被稱為美白。
- 它假設的一般線性代數思想是(協方差)矩陣可以用作投影算子(通過“著色”生成相關樣本),但它的逆矩陣也是如此(去相關/“白化”樣本)。
- 是的,通過使用它的特徵分解將有效協方差矩陣提高到任何冪(負平方根只是一種特殊情況)的最簡單方法;,是一個包含特徵向量的正交矩陣和是一個包含特徵值的對角矩陣。然後我們可以很容易地改變對角矩陣如我們所願並得到相關結果。
一個展示第 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)))