Spectre approximatif d'une grande matrice

14

Je veux calculer le spectre ( toutes les valeurs propres) d'une grande matrice clairsemée (des centaines de milliers de lignes). C'est dur.

Je suis prêt à me contenter d'une approximation. Existe-t-il des méthodes d'approximation pour ce faire?

Bien que j'espère une réponse générale à cette question, je serais également satisfait d'une réponse dans le cas spécifique suivant. Ma matrice est un laplacien normalisé d'un grand graphique. Les valeurs propres seront comprises entre 0 et 2 avec un grand nombre d'entre elles regroupées autour de 1.

MRocklin
la source
La matrice est-elle clairsemée ou dense?
Aron Ahmadia
La matrice est clairsemée. J'ai édité la question pour refléter cela.
MRocklin
Pourquoi voulez-vous toutes les valeurs propres? C'est presque universellement une mauvaise chose à faire lorsque vous avez une matrice clairsemée ou structurée, il est donc important de savoir comment vous prévoyez de l'utiliser.
Jed Brown
Le spectre d'un laplacien graphique contient des informations importantes que j'aimerais inspecter. Je n'ai pas tous besoin d'eux, j'ai juste besoin de savoir à peu près où ils se trouvent.
MRocklin

Réponses:

15

Si votre graphique n'est pas dirigé (comme je le soupçonne), la matrice est symétrique et vous ne pouvez rien faire de mieux que l'algorithme de Lanczsos (avec une réorthogonalisation sélective si nécessaire pour la stabilité). Comme le spectre complet est composé de 100 000 nombres, je suppose que vous êtes principalement intéressé par la densité spectrale.

Pour obtenir une densité spectrale approximative, prenez le spectre du premier sous-espace de Krylov de dimension 100 environ, et remplacez sa densité discrète par une version lissée.

Le premier spectre de Krylov aura des valeurs propres bien isolées presque résolues (si elles existent), se rapproche des valeurs propres à la fin du spectre non isolé et est quelque peu aléatoire entre les deux, avec une distribution dont la fonction de distribution cumulée ressemble à celle du vrai spectre . Il y convergerait en arithmétique exacte si la dimension augmentait. (Si votre opérateur était de dimension infinie, ce serait toujours le cas, et vous obtiendriez l'intégrale de la véritable fonction de densité spectrale sur le spectre continu.)

Arnold Neumaier
la source
Le spectre du premier sous-espace de Krylov ne sera-t-il pas simplement les 100 plus grandes valeurs propres? Je m'intéresse également à la distribution des valeurs propres modérées et les plus petites.
MRocklin
1
@MRocklin: Non. J'ai augmenté ma réponse pour donner plus de détails.
Arnold Neumaier
4

Si vous êtes d'accord pour penser à des choses qui ne sont pas des valeurs propres mais des fonctions qui, dans un certain sens, vous disent encore quelque chose sur le spectre, alors je pense que vous devriez vérifier certains des travaux de Mark Embree à l'Université Rice.

Wolfgang Bangerth
la source
2

Voici encore une autre façon de caractériser le spectre.

Avk=λkvkA

S(ω)=kπ1σσ2+(λkω)2=σπTr[σ2+(ωA)2]1
S(ω)=σπzT[σ2+(ωA)2]1z
z+11σω[σ2+(ωA)2]1z[ω+iσA]1[ωiσA]1S(ω)

ω

ω

pv.
la source
0

Voir le document "On Sampling-based Approximate Spectral Decomposition" par Sanjiv Kumar, Mehryar Mohri & Ameet Talwalkar (ICML 2009.). Il utilise l'échantillonnage des colonnes de votre matrice.

Puisque votre matrice est symétrique, vous devez procéder comme suit:

Soit A votre matrice n * n. Vous voulez réduire le calcul des valeurs propres d'une matrice n * n au calcul des valeurs propres d'une matrice k * k. Choisissez d'abord votre valeur de k. Disons que vous choisissez k = 500, car vous pouvez facilement calculer les valeurs propres d'une matrice 500 * 500. Ensuite, choisissez aléatoirement k colonnes de la matrice A. Construisez la matrice B qui ne conserve que ces colonnes et les lignes correspondantes.

B = A (x, x) pour un ensemble aléatoire de k indices x

B est maintenant une matrice ak * k. Calculez les valeurs propres de B et multipliez-les par (n / k). Vous avez maintenant k valeurs qui sont approximativement distribuées comme les n valeurs propres de A. Notez que vous n'obtenez que k valeurs, pas n, mais leur distribution sera correcte (jusqu'au fait qu'elles soient une approximation).

Jérôme Kunegis
la source
-1

Vous pouvez toujours utiliser les bornes du théorème du cercle de Gershgorin pour approximer les valeurs propres.

Si les termes hors diagonale sont petits, la diagonale elle-même est une bonne approximation du spectre. Sinon, si vous vous retrouvez avec une approximation de l'espace propre (par d'autres méthodes), vous pouvez essayer d'exprimer les entrées diagonales dans ce système. Cela conduira à une matrice avec des termes hors diagonale plus petits et la nouvelle diagonale sera une meilleure approximation du spectre.

FKaria
la source
Gerschgoring ne donne aucune approximation mais des limites d'erreur, donc n'est pas pertinent ici. De plus, l'utilisation de votre méthode sur une matrice clairsemée nécessiterait une matrice de vecteur propre dense, qui est impossible à stocker pour le problème des PO.
Arnold Neumaier
Comme je l'ai dit, la diagonale est elle-même une approximation du spectre avec les limites d'erreur données par le théorème du cercle de Gershgorin, bien sûr, les limites d'erreur de Gershgorin ne sont pas des approximations. La diagonale sera une bonne approximation si les termes hors diagonale sont petits, ce qui, je crois, est le cas puisque OP a déclaré que la matrice était clairsemée.
FKaria
5
La plupart des matrices clairsemées apparaissant dans la pratique ont des éléments hors diagonale significatifs dans chaque ligne et colonne, ce qui rend les approximations diagonales très médiocres (par exemple, pour un laplacien d'un graphique régulier, la diagonale est constante) et les limites d'erreur sont inutiles.
Arnold Neumaier