2
$\begingroup$

I am trying to find the parameter $\hat\Omega = \mathrm{argmin}_{\Omega}\Big(-\log|\Omega| + \mathrm{Tr}(S\Omega) + \sum_{i,j}\lambda|\Omega_{ij}|\Big)$

This is to regularize the precision matrix $\Omega$ for the glasso. I have been studying the Lasso for regression and that makes sense, but I have no idea and cannot find how to find $\hat\Omega$ given an initial empirical covariance matrix $S$ for centered MVN.

Thank you, any help is greatly appreciated. This is the paper I am reading, eq. (5). I am trying to code this paper to work for something I want to try in assembling predictions from multiple machine learning models.


Jalali, H., & Kasneci, G. (2022). Gaussian graphical models as an ensemble method for distributed Gaussian processes. Retrieved from http://arxiv.org/abs/2202.03287

$\endgroup$

1 Answer 1

0
$\begingroup$

This question is already quite old, and unfortunately it is not quite clear, as the loss function is already stated in the question itself. However, the part

"[I] cannot find how to find $\hat\Omega$ given an initial empirical covariance matrix $S$,"

leads me to believe this question is asking for an implementation. One such implementation is readily available in R, using the glasso package:

library("glasso")
set.seed(2024)
n <- 100
p <- 10
X <- matrix(rnorm(n * p), nrow = n, ncol = p)
S <- 1 / n * crossprod(scale(X, center = TRUE, scale = FALSE))
P <- glasso(s, rho = .01)$wi
P

For Python users, there is the graphical_lasso function in sklearn.covariance:

import numpy as np
from sklearn.covariance import graphical_lasso
np.random.seed(2024)
n = 100
p = 10
X = np.random.randn(n, p)
S = np.cov(X, rowvar=False)
P, _ = graphical_lasso(S, alpha=0.01)
print(P)

As for how to choose the amount of shrinkage, see this post: How to determine $\lambda$ for graphical lasso?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.