Qu'est-ce que SVD(singular value decomposition)?)

comment réduit-il réellement le bruit..pouvez-vous suggérer quelques belles tutoriels?

33
demandé sur Zach Scrivena 2009-02-10 11:16:05

5 réponses

SVD peut être compris à partir d'un sens géométrique pour les matrices carrées comme une transformation sur un vecteur.

considérons une matrice carrée n x n m en multipliant un vecteur v pour produire un vecteur de sortie w:

w = M*v

la décomposition de la valeur singulière M est le produit de trois matrices M=U*S*V, donc w=U*S*V*v. U et V sont des matrices orthonormales. D'un point de vue de transformation géométrique (agissant sur un vecteur en le multipliant), ils sont des combinaisons de rotations et réflexions qui ne changent pas la longueur du vecteur elles se multiplient. S est une matrice diagonale qui représente l'échelle ou la quadrature avec différents facteurs d'échelle (les termes diagonaux) le long de chacun des axes N.

ainsi, la multiplication à gauche d'un vecteur v par une matrice M A pour effet de tourner/refléter v par le facteur orthonormal V de M, puis d'étalonner/écraser le résultat par un facteur diagonal S, puis de tourner/refléter le résultat par le facteur orthonormal U de M

une raison pour laquelle SVD est d'un point de vue numérique, il est souhaitable que la multiplication par des matrices orthonormales soit inversible et extrêmement stable opération (condition numéro est 1). SVD capte tout mauvais conditionnement dans la matrice d'échelle diagonale S.

49
répondu Jason S 2009-02-10 14:36:27

une façon d'utiliser SVD pour réduire le bruit est de faire la décomposition, mettre les composants qui sont près de zéro pour être exactement zéro, puis recomposer.

Voici un tutoriel en ligne sur SVD.

Vous voudrez peut-être jeter un coup d'oeil à Recettes Numériques.

18
répondu John D. Cook 2009-02-10 12:24:09

la décomposition de la valeur singulière est une méthode pour prendre une matrice nxm M et la "décomposer" en trois matrices telles que M=U S V. S est une matrice diagonale carrée (les seules entrées non nulles sont sur la diagonale de haut-gauche à bas-droite) contenant les "valeurs singulières" de M. U et V sont orthogonales, ce qui conduit à la compréhension géométrique de SVD, mais ce n'est pas nécessaire pour la réduction du bruit.

Avec M=U S V, nous avons toujours la matrice originale M avec tout son bruit intact. Cependant, si nous ne conservons que les valeurs singulières k les plus grandes (ce qui est facile, puisque de nombreux algorithmes SVD calculent une décomposition où les entrées de S sont triées dans un ordre non croissant), alors nous avons une approximation de la matrice originale. Cela fonctionne parce que nous supposons que les petites valeurs sont le bruit, et que les modèles les plus significatifs dans les données seront exprimées par les vecteurs associés à des valeurs singulières plus grandes.

En fait, le l'approximation résultante est l'approximation de rang-k la plus précise de la matrice originale (a l'erreur la moins carrée).

8
répondu Michael Ekstrand 2010-05-11 14:45:32

pour répondre à la question de titre: SVD est une généralisation des valeurs propres/eigenvectors à des matrices non carrées. Dire, La décomposition SVD de X donne X = UDV^T où D est diagonale et U et V sont des matrices orthogonales. Maintenant X^TX est une matrice carrée, et la décomposition SVD de X^TX=VD^2V où V est équivalent aux vecteurs propres de X^TX et D^2 contient les valeurs propres de X^TX.

6
répondu vak 2009-06-25 12:52:56

SVD peut aussi être utilisé pour faciliter grandement l'ajustement global (c.-à-d. à toutes les observations simultanément) d'un modèle arbitraire (exprimé dans une formule) aux données (par rapport à deux variables et exprimé dans une matrice).

Par exemple, les données de la matrice = D* M T D représente les états possibles d'un système et d' M représente son évolution par rapport à certaines variables (par exemple le temps).

Par SVD,(x, y) = U (x)* S* V T(y) et donc D* M T= U* S* V T

puis D= U* S* V T* M T+ où le " + " indique un pseudoinverse.

On peut alors prendre un modèle mathématique pour l'évolution et l'ajuster aux colonnes de V, qui sont une combinaison linéaire des composantes du modèle (c'est facile, que chaque colonne est une courbe 1D). Ce obtient les paramètres du modèle qui génèrent M? (l' ? indique qu'il est basé sur le montage).

M* M?+ * V= V? qui permet les résidus R * S 2= V - V? à réduire au minimum, déterminant ainsi D et M.

Assez cool, hein?

Les colonnes de U et V peut aussi être inspecté pour glaner des informations sur les données; par exemple chaque point d'inflexion dans les colonnes de V indique généralement une autre composante du modèle.

Enfin, et pour répondre à votre question, il est important de noter que, bien que chaque valeur singulière successive (élément de la matrice diagonale S) avec ses vecteurs auxiliaires U et V ont un signal plus faible au bruit, la séparation des composants du modèle dans ces vecteurs "moins importants" est en fait plus prononcée. En d'autres termes, si les données sont décrites par un tas de changements d'état de suivre une somme d'exponentielles ou que ce soit, le poids relatif de chaque exponentielle se rapprocher dans les plus petites valeurs singulières. En d'autres termes, les valeurs singulières postérieures ont des vecteurs qui sont moins lisse (bruyant), mais dans lequel le changement représenté par chaque composante sont plus distinct.

4
répondu reve_etrange 2010-05-21 07:26:58