I need to invert a Hessian matrix to calculate the covariance matrix. The matrices are fairly large, typical sizes are (300x300), or values of that order. In general, the Hessian is very ill-conditioned. The covariance matrix (in this case, the inverse of the Hessian) will have a blocky structure (blocks of elements around the main diagonal). I have tried to do an SVD of the Hessian, and invert it, but I am at a loss of where to cut the singular values. If I cut very early, I have what looks like a smoothed version of the covariances. If I cut too lates, it's just noise.

All my "clever" :) processing is to truncate the svd at some level, reconstruct the truncated Hessian and invert it. I don't know whether there are any more robust ways of going about this, and that do not involve trial and error in terms of truncating the matrix.

Thanks