# Décomposition en valeurs singulières

En mathématiques, le procédé d'algèbre linéaire de décomposition en valeurs singulières (ou SVD, de l'anglais singular value decomposition) d'une matrice est un outil important de factorisation des matrices rectangulaires réelles ou complexes. Ses applications s'étendent du traitement du signal aux statistiques, en passant par la météorologie.
Le théorème spectral énonce qu'une matrice normale peut être diagonalisée par une base orthonormée de vecteurs propres. On peut voir la décomposition en valeurs singulières comme une généralisation du théorème spectral à des matrices arbitraires, qui ne sont pas nécessairement carrées.

## Contexte mathématique
### Énoncé du théorème

Soit M une matrice m×n dont les coefficients appartiennent au corps K, où K = ℝ ou K = ℂ. Alors il existe une factorisation de la forme :
    $M=U\Sigma V^{*}\,\!$,
avec U une matrice unitaire m×m sur K, Σ une matrice m×n dont les coefficients diagonaux sont des réels positifs ou nuls et tous les autres sont nuls, et V$^*$ est la matrice adjointe à V, matrice unitaire n×n sur K. On appelle cette factorisation la décomposition en valeurs singulières de M.
* La matrice V contient un ensemble de vecteurs de base orthonormés de K$^n$, dits « d'entrée » ou « d'analyse » ;
* La matrice U contient un ensemble de vecteurs de base orthonormés de K$^m$, dits « de sortie » ;
* La matrice Σ contient dans ses coefficients diagonaux les valeurs singulières de la matrice M, elles correspondent aux racines des valeurs propres de $M^{*}M$.
* Une convention courante est de ranger les valeurs Σ$_{i,i}$ par ordre décroissant. Alors, la matrice Σ est déterminée de façon unique par M (mais U et V ne le sont pas).

### Existence

Une valeur propre λ d'une matrice est caractérisée par l'existence d'un vecteur u non nul satisfaisant la relation M u = λ u. Quand M est hermitienne, une caractérisation différente est envisageable. Soit M une matrice n × n symétrique réelle. On pose f : R$^n$ → R telle que f(x) = x$^T$ M x. Cette fonction est continue et atteint son maximum en un certain vecteur u quand elle est restreinte à la boule unité fermée {x $\in$ R$^n$, ||x|| ≤ 1}. D'après le théorème des multiplicateurs de Lagrange, u vérifie :
    $\nabla f=\nabla \;x^{T}Mx=\lambda \cdot \nabla \;x^{T}x.$
On montre facilement que la relation ci-dessus donne M u = λ u. Ainsi, λ est la plus grande valeur propre de M. Les mêmes opérations sur le complément orthogonal de u donnent la seconde plus grande valeur, et ainsi de suite. Le cas d'une matrice complexe hermitienne est similaire, avec f(x) = x* M x, fonction de 2n variables à valeurs réelles.
Les valeurs singulières sont similaires, en tant qu'elles peuvent être décrites de façon algébrique ou à partir de principes variationnels. En revanche, au contraire du cas des valeurs propres, l'hermiticité et la symétrie de M ne sont plus nécessaires.

#### Preuve utilisant l'algèbre

Soit M une matrice complexe m×n. Alors M*M est positive semi-définie, donc hermitienne. D'après le théorème spectral, il existe une matrice unitaire carrée de côté n, notée V, telle que :
    $V^{*}M^{*}MV={\begin{pmatrix}D&0\\0&0\end{pmatrix}}$,
où D est diagonale, définie positive et de même rang r que M. En écrivant V de façon appropriée :
    ${\begin{pmatrix}V_{1}^{*}\\V_{2}^{*}\end{pmatrix}}M^{*}M{\begin{pmatrix}V_{1}&V_{2}\end{pmatrix}}={\begin{pmatrix}V_{1}^{*}M^{*}MV_{1}&V_{1}^{*}M^{*}MV_{2}\\V_{2}^{*}M^{*}MV_{1}&V_{2}^{*}M^{*}MV_{2}\end{pmatrix}}={\begin{pmatrix}D&0\\0&0\end{pmatrix}}.$
avec V$_1$ matrice n×r de rang r et V$_2$ matrice n×(n-r).
Ainsi, V*$_1$M*MV$_1$ = D, et MV$_2$ = 0. On pose :
    $U_{1}=D^{-1/2}V_{1}^{*}M^{*}.$
Alors on a :
    $U_{1}MV_{1}=D^{1/2}.\,$
On constate que c'est presque le résultat attendu, à ceci près que U$_1$ est une matrice r×m d'une isométrie partielle (U$_1$U*$_1$ = I). Pour achever la démonstration, on complète U$_1$ pour la rendre unitaire. On choisit U$_2$ tel que ${\begin{pmatrix}U_{1}\\U_{2}\end{pmatrix}}$ soit unitaire. Un calcul montre que :
    ${\begin{pmatrix}U_{1}\\U_{2}\end{pmatrix}}M{\begin{pmatrix}V_{1}&V_{2}\end{pmatrix}}={\begin{pmatrix}D^{1/2}&0\\0&0\end{pmatrix}},$
En effet, on utilise MV$_2$ = 0 et on constate que $U_{2}MV_{1}=U_{2}U_{1}^{\dagger }U_{1}MV_{1}=0\,$car $U_{1}^{\dagger }U_{1}=I\,$et $U_{2}U_{1}^{\dagger }=0\,$comme ${\begin{pmatrix}U_{1}\\U_{2}\end{pmatrix}}$ est unitaire, ce qui correspond au résultat attendu, en prenant pour U la matrice adjointe de ${\begin{pmatrix}U_{1}\\U_{2}\end{pmatrix}}$.
On aurait également pu commencer la démonstration en diagonalisant MM* au lieu de M*M, on aurait alors montré directement que MM* et M*M ont les mêmes valeurs propres non nulles.

#### Autre caractérisation

Les valeurs singulières peuvent également être caractérisées comme maxima de u$^T$Mv, considérée comme une fonction de u et v, sur des sous-espaces particuliers. Les vecteurs singuliers sont les valeurs de u et v pour lesquelles ces maxima sont atteints.
Soit M une matrice réelle m × n. Soit S$^{m–1}$ et S$^{n–1}$ l'ensemble des vecteurs unitaires (selon la norme 2) de R$^m$ et R$^n$ respectivement. On pose la fonction :
    $\sigma (u,v)=u^{T}Mv\,$,
pour les vecteurs u ∈ S$^{m–1}$ et v ∈ S$^{n–1}$.
On considère la fonction σ restreinte à S$^{m–1}$ × S$^{n–1}$. Puisqu'à la fois S$^{m–1}$ et S$^{n–1}$ sont des ensembles compacts, leur produit est également compact. En outre, puisque σ est continue, elle atteint son maximum pour au moins une paire de vecteurs u ∈ S$^{m–1}$ et v ∈ S$^{n–1}$. Ce maximum est noté σ$_1$, et les vecteurs correspondants sont notés u$_1$ et v$_1$. Puisque σ$_1$ est la plus grande valeur de σ(u,v), elle est positive : si elle était négative, en changeant le signe de u$_1$ ou de v$_1$, on la rendrait positive - et donc plus grande.
Lemme — u$_1$ et v$_1$ sont respectivement vecteurs singuliers à gauche et à droite pour M associés à σ$_1$.
Démonstration — De même que pour le cas des valeurs propres, en supposant que les deux vecteurs vérifient l'équation de Lagrange :
    $\nabla \sigma =\nabla \;u^{T}Mv=\lambda _{1}\cdot \nabla \;u^{T}u=\lambda _{2}\cdot \nabla \;v^{T}v$.
On montre que cela donne :
    $Mv_{1}=2\lambda _{1}u_{1}+0$, et
    $M^{T}u_{1}=0+2\lambda _{2}v_{1}$.
En multipliant la première équation à gauche par uT 1, et la seconde à gauche par vT 1, en prenant $\left|\left|u_{1}\right|\right|_{2}=\left|\left|v_{1}\right|\right|_{2}=1$, on a :
    $u_{1}^{T}Mv_{1}=\sigma _{1}=2\lambda _{1}$,
    $v_{1}^{T}M^{T}u_{1}=\sigma _{1}=2\lambda _{2}$.
Ainsi, σ$_1$ = 2 λ$_1$ = 2 λ$_2$. On a donc :
    $Mv_{1}=\sigma _{1}u_{1}\,$, et de même, $M^{T}u_{1}=\sigma _{1}v_{1}\,$.
D'autres vecteurs singuliers et valeurs singulières peuvent être obtenus en maximisant σ(u, v) sur u, v, qui sont orthogonaux à u$_1$ et v$_1$, respectivement.
On peut de même traiter le cas de matrices complexes.

### Valeurs singulières et vecteurs singuliers

On appelle valeur singulière de M toute racine carrée d'une valeur propre de M$^*$M, autrement dit tout réel positif σ tel qu'il existe un vecteur unitaire u dans K$^m$ et un vecteur unitaire v dans K$^n$ vérifiant :
    $M^{*}u=\sigma v\quad {\textrm {et}}\quad Mv=\sigma u\,\!$
Les vecteurs u et v sont appelés vecteur singulier à gauche et vecteur singulier à droite pour σ, respectivement.
Dans toute décomposition en valeurs singulières,
    $M=U\Sigma V^{*}\,\!$,
les coefficients diagonaux de Σ sont égaux aux valeurs singulières de M. Les colonnes de U et de V sont, respectivement, vecteur singulier à gauche et à droite pour les valeurs singulières correspondantes.
Par conséquent, le théorème ci-dessus énonce que :
* Une matrice M de type m × n possède au moins une et au plus p = min(m,n) valeurs singulières distinctes ;
* Il est toujours possible de trouver une base unitaire pour K$^m$ constituée des vecteurs singuliers à gauche de M ;
* Il est toujours possible de trouver une base unitaire pour K$^n$ constituée des vecteurs singuliers à droite de M ;
Une valeur singulière pour laquelle on peut trouver deux vecteurs singuliers à gauche (respectivement, à droite) qui sont linéairements indépendants est dite dégénérée.
Les valeurs singulières non dégénérées ont toujours un unique vecteur singulier à gauche et à droite, à un déphasage près, c’est-à-dire à une multiplication par un facteur de la forme e$^{iφ}$ près (pour des réels, à un signe près). Par conséquent, si toutes les valeurs singulières de M sont non dégénérées et non nulles, alors sa décomposition en valeurs singulières est unique, à une multiplication d'une colonne de U et de la colonne de V correspondante par un même déphasage.
Les valeurs singulières dégénérées, par définition, possèdent plusieurs vecteurs singuliers. De plus, si u$_1$ et u$_2$ sont deux vecteurs singuliers à gauche qui correspondent à une même valeur singulière σ, alors tout vecteur unitaire obtenu par combinaison linéaire de ces deux vecteurs est également un vecteur singulier à gauche pour σ. Il en est de même pour les vecteurs singuliers à droites. Ainsi, si M possède des valeurs singulières dégénérées, alors sa décomposition en valeurs singulières n'est pas unique.

### Exemple

Soit la matrice :
    $M={\begin{pmatrix}1&0&0&0&2\\0&0&3&0&0\\0&0&0&0&0\\0&4&0&0&0\end{pmatrix}}$
La décomposition en valeurs singulières de M est alors :
    $U={\begin{pmatrix}0&0&1&0\\0&1&0&0\\0&0&0&-1\\1&0&0&0\end{pmatrix}},\quad \Sigma ={\begin{pmatrix}4&0&0&0&0\\0&3&0&0&0\\0&0&{\sqrt {5}}&0&0\\0&0&0&0&0\end{pmatrix}},\quad V^{\ast }={\begin{pmatrix}0&1&0&0&0\\0&0&1&0&0\\1/{\sqrt {5}}&0&0&0&2/{\sqrt {5}}\\0&0&0&1&0\\-2/{\sqrt {5}}&0&0&0&1/{\sqrt {5}}\end{pmatrix}}$
On vérifie que Σ ne possède des valeurs non nulles que sur sa diagonale. De plus, comme montré ci-dessous, en multipliant les matrices U et V$^*$ par leurs transposées, on obtient la matrice identité :
    $UU^{*}={\begin{pmatrix}0&0&1&0\\0&1&0&0\\0&0&0&-1\\1&0&0&0\end{pmatrix}}{\begin{pmatrix}0&0&0&1\\0&1&0&0\\1&0&0&0\\0&0&-1&0\end{pmatrix}}={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&1\end{pmatrix}}$
Et de même :
    $VV^{*}={\begin{pmatrix}0&0&1/{\sqrt {5}}&0&-2/{\sqrt {5}}\\1&0&0&0&0\\0&1&0&0&0\\0&0&0&1&0\\0&0&2/{\sqrt {5}}&0&1/{\sqrt {5}}\end{pmatrix}}{\begin{pmatrix}0&1&0&0&0\\0&0&1&0&0\\1/{\sqrt {5}}&0&0&0&2/{\sqrt {5}}\\0&0&0&1&0\\-2/{\sqrt {5}}&0&0&0&1/{\sqrt {5}}\end{pmatrix}}={\begin{pmatrix}1&0&0&0&0\\0&1&0&0&0\\0&0&1&0&0\\0&0&0&1&0\\0&0&0&0&1\end{pmatrix}}$

### Lien avec la décomposition en valeurs propres

La décomposition en valeurs singulières est très générale, dans le sens où elle s'applique à toute matrice rectangulaire m × n. La décomposition en valeurs propres, en revanche, ne fonctionne que pour certaines matrices carrées. Néanmoins, quand elles sont toutes les deux définies, elles sont liées.
Dans le cas d'une matrice M hermitienne semi-définie positive, c'est-à-dire dont toutes les valeurs propres sont des réels positifs, alors les valeurs singulières et vecteurs singuliers correspondent aux valeurs propres et vecteurs propres de M :
    $M=U\Sigma V^{*}\,$
Plus généralement, étant donné une décomposition en valeurs singulières de M, alors on a :
    $M^{*}M=V\Sigma ^{*}U^{*}\,U\Sigma V^{*}=V(\Sigma ^{*}\Sigma )V^{*}\,$ et $MM^{*}=U\Sigma V^{*}\,V\Sigma ^{*}U^{*}=U(\Sigma \Sigma ^{*})U^{*}\,$
Le côté droit de ces relations décrit la décomposition en valeurs propres du côté gauche. Ainsi, le carré du module de chaque valeur singulière non nulle de M est égal au module de la valeur propre non nulle correspondante de M*M et de MM*. En outre, les colonnes de U (vecteurs singuliers à gauche) sont vecteurs propres pour $MM^{*}$, et les colonnes de V (vecteurs singuliers à droite) sont vecteurs propres de M*M.

### Interprétation géométrique

Puisque U et V sont unitaires, on sait que les colonnes u$_1$,...,u$_m$ de U forment une base orthonormée de K$^m$ et que les colonnes v$_1$,...,v$_n$ de V forment une base orthonormée de K$^n$ (par rapport au produit scalaire sur ces espaces).
La transformation linéaire T: K$^n$ → K$^m$, qui à chaque vecteur x associe Mx, a une expression relativement simple dans ces bases orthonormées : T(v$_i$) = σ$_i$ u$_i$, pour i = 1,...,min(m,n), où σ$_i$ est le i-ème coefficient diagonal de Σ, et T(v$_i$) = 0 pour i > min(m,n).
Le contenu géométrique du théorème de décomposition en valeurs singulières peut être résumé ainsi : pour toute application linéaire T : K$^n$ → K$^m$, on peut trouver une base orthonormale pour K$^n$ et une base orthonormale pour K$^m$ telles que T associe au i-ème vecteur de base de K$^n$ un multiple positif du i-ème vecteur de base de K$^m$, les vecteurs restants ayant pour image 0. Dans ces bases, l'application T est ainsi représentée par une matrice diagonale dont les coefficients sont des réels positifs.

### Interprétation statistique

On peut également interpréter cette décomposition dans l'esprit de l'étude statistique d'un ensemble de données. Alors, les principales colonnes de U représentent les tendances de l'ensemble d'étude (les vecteurs de U représentent les « directions de plus grande variation » de l'ensemble). Les valeurs diagonales de Σ sont alors analogues à l'« énergie » ou la « représentativité » qui va pondérer ces comportements ; elles décroissent d'autant plus vite que l'ensemble statistique est ordonné.
On peut considérer, par exemple dans l'optique du data mining, que les informations « importantes » de l'ensemble sont celles qui présentent une structure plus marquée. Alors, en annulant la diagonale de Σ au-delà d'un certain indice, puis en reconstituant la matrice de départ, on obtient des données filtrées, représentant l'information dominante de l'ensemble de départ. De façon équivalente, on peut considérer nulles des données d'énergie inférieure à un certain seuil.
Ainsi, la SVD permet de construire un modèle empirique, sans théorie sous-jacente, d'autant plus précis qu'on y injecte de termes.
Il est par ailleurs possible de reconstruire, en utilisant une base de vecteurs singuliers d'un premier jeu de données, un autre jeu de données avec plus ou moins de précision, afin de déterminer la similarité entre les deux. Selon ce principe, des systèmes de décomposition, de reconnaissance et de reconstruction faciale ont été développés.
L'efficacité de la méthode dépend en particulier de la manière dont on lui présente les informations. Dans l'exemple d'un visage, si on utilise naïvement la luminosité des différents pixels d'une photographie pour construire une base de vecteurs singuliers, alors il sera difficile de reconstruire le même visage dans une pose légèrement différente (ou si l'éclairement du visage a varié) : les pixels ont changé - parfois beaucoup - mais pas l'information implicite (à savoir le visage). On préfère, dans ces domaines d'application, traiter les données dans l'espace, d'où l'ajout d'un système de reconnaissance en 3D, qui permet d'« expliquer » les variations observées en reliant celles-ci, et de les relier aux données connues.

## Histoire

La décomposition en valeurs singulières fut développée à l'origine par les mathématiciens étudiant la géométrie différentielle, qui désiraient déterminer si une forme bilinéaire réelle pouvait en égaler une autre par des transformations orthogonales indépendantes des deux espaces concernés.
Eugenio Beltrami et Camille Jordan ont découvert indépendamment, en 1873 et 1874 respectivement, que les valeurs singulières des formes bilinéaires, représentées sous forme matricielle, constituaient un ensemble complet d'invariants pour les formes bilinéaires subissant des substitutions orthogonales.
James Joseph Sylvester s'intéressa également à la décomposition en valeurs singulières en 1889 pour les matrices réelles carrées, apparemment indépendamment des travaux de Beltrami et Jordan. Sylvester donna aux valeurs singulières le nom de « multiplicateurs canoniques » d'une matrice A.
Le quatrième mathématicien à l'origine de la découverte de cette décomposition est Autonne, en 1915. Il aboutit à ce résultat au travers de la décomposition polaire.
La première preuve de la décomposition en valeurs singulières pour les matrices rectangulaires et complexes est attribuée à Eckart et à Young, en 1936.
En 1907, Erhard Schmidt définit l'analogue des valeurs singulières pour les opérateurs intégraux (qui, à certaines conditions près, sont compacts) ; il semble qu'il ne connaissait pas les travaux parallèles sur les valeurs singulières des matrices de dimension finie. Cette théorie fut développée encore par le mathématicien français Émile Picard en 1910, qui est à l'origine du terme moderne de « valeurs singulières » qu'il notait $\sigma _{k}$$^,$.
Avant 1965, aucune méthode efficace de calcul de cette décomposition n'était connue. Gene H. Golub et William Kahan proposèrent un premier algorithme cette année-là, puis, en 1970, Golub et Christian Reinsch publièrent une variante de l'algorithme Golub-Kahan qui demeure aujourd'hui le plus utilisé.
La généralisation de cette décomposition à deux, trois ou N dimensions est encore un sujet de recherche active, puisqu'elle se révèle d'un intérêt majeur dans de nombreux domaines.

## Variantes
### SVD/ICA

Il est courant d'associer les résultats de la décomposition en valeurs singulières à ceux de l'analyse en composantes indépendantes (ou ICA). Les algorithmes qui exploitent une combinaison des deux sont couramment appelés SVD/ICA. En effet, l'analyse en composantes indépendantes tient compte des termes d'ordre supérieurs ou égaux à 2 négligés par la décomposition en valeurs singulières.

### Décomposition généralisée

Le procédé de décomposition en valeurs singulières généralisée, ou GSVD, étend le concept de la décomposition en valeurs singulières en utilisant des semi-normes quadratiques et s'applique aux systèmes linéaires.
Une matrice A de taille m × n et une matrice B de taille p × n réelles ou complexes étant données, leur décomposition généralisée est :
    $A=U\Sigma _{1}[0,R]Q^{*}$
et
    $B=V\Sigma _{2}[0,R]Q^{*}$
avec U, V et Q des matrices unitaires et R une matrice triangulaire supérieure, non singulière, carrée r × r, en notant r ≤ n le rang de [A$^*$,B$^*$].
Par ailleurs, Σ$_1$ et Σ$_2$ sont des matrices m × r et p × r respectivement, nulles partout sauf sur leur diagonale principale, qui contient les réels α$_i$ et β$_i$ respectivement, tels que :
    $0\leq \alpha _{i},\beta _{i}\leq 1\quad {\textrm {et}}\quad \alpha _{i}^{2}+\beta _{i}^{2}=1$.
Les rapports $\sigma _{i}=\alpha _{i}/\beta _{i}$ sont analogues aux valeurs singulières. Dans le cas particulier, mais important, où B est carrée et inversible, elles sont les valeurs singulières, U et V sont alors les vecteurs singuliers de la matrice AB$^{−1}$.

### Décomposition 2D

Il est possible d'étendre le concept de décomposition en valeurs singulières à des matrices complexes, ou, de manière équivalente à des matrices constituées de vecteurs 2D. Le calcul est proche de celui de la décomposition en valeurs singulières simple. On parle de décomposition en valeurs singulières 2D, ou 2DSVD.
De même que pour le cas simple, il existe des algorithmes spécialisés qui donnent une approximation d'un ensemble de matrices de rang faible, par exemple des images ou des cartes météorologiques.
Soit X=(x$_1$,...,x$_n$) un ensemble de réels (c'est-à-dire de vecteurs 1D). Pour la décomposition en valeurs singulières, on construit la matrice de covariance et la matrice de Gram :
    $F=XX^{T}\ ,\ G=X^{T}X$.
On calcule ensuite leurs vecteurs propres U=(u$_1$,...,u$_n$) et V=(v$_1$,...,v$_n$). Puisque $VV^{T}=I,UU^{T}=I$, on a :
    $X=UU^{T}XVV^{T}=U(U^{T}XV)V^{T}=U\Sigma V^{T}$.
En ne gardant que les K vecteurs propres principaux de U et V, on obtient ainsi une approximation de rang faible de la matrice X. Pour les algorithmes de 2DSVD, on travaille avec des matrices 2D, c'est-à-dire un ensemble de matrices (X$_1$,...,X$_n$). On construit les matrices de covariance ligne-ligne et colonne-colonne :
    $F=\sum _{i}X_{i}X_{i}^{T}\ ,\ G=\sum _{i}X_{i}^{T}X_{i}$.
Pour ce faire, on agit de la même façon que pour la décomposition classique, et on calcule leurs vecteurs propres U et V. On approche les X$_i$ :
    $X_{i}=UU^{T}X_{i}VV^{T}=U(U^{T}X_{i}V)V^{T}=UM_{i}V^{T}$
par une méthode identique à celle de la décomposition en valeurs singulières.
On obtient ainsi une approximation de (X$_1$,...,X$_n$) par la fonction :
    $J=\sum _{i}\left|X_{i}-LM_{i}R^{T}\right|^{2}$
Les algorithmes de 2DSVD sont principalement utilisés en compression et représentation d'images. L'utilisation de la SVD pour la compression d'images a toutefois été montrée comme étant sous-optimale par rapport à une DCT, notamment à cause de l'obligation de transmettre la transformée elle-même, en plus des données image. Son rôle dans le domaine de la compression est de fait marginal.

### Décomposition 3D

En considérant l'utilisation de matrices dépliées, on peut étendre la décomposition en valeurs singulières aux cas tridimensionnels, ou 3DSVD. De tels algorithmes sont utilisés en sismologie, en météorologie et en acoustique, où l'analyse de données 3D (ou 2D dépendant du temps) est souvent nécessaire.

### Décompositions réduites

Dans les utilisations, il est assez rare de devoir utiliser la forme complète de la décomposition en valeurs singulières, y compris la décomposition complète du noyau sous forme unitaire. Il est en effet courant, plus rapide, et moins coûteux en termes de mémoire, d'utiliser des versions réduites de la SVD. Les décompositions suivantes sont valables pour les matrices m × n de rang r.

#### SVD « fine »

    $M=U_{n}\Sigma _{n}V^{*}\,$
Seuls les n vecteurs colonnes de U correspondant aux vecteurs lignes de V* sont calculés. Les vecteurs colonnes restants de U ne sont pas calculés, ce qui économise une quantité importante de calculs si $m\gg n$. La matrice U$_n$ est ainsi m × n, Σ$_n$ est diagonale n × n et V est n × n.
La première étape du calcul d'une SVD « fine » est la décomposition QR de M, qui peut être optimisée pour $m\gg n$.

#### SVD « compacte »

    $M=U_{r}\Sigma _{r}V_{r}^{*}$
Seuls les r vecteurs colonnes de U et les r vecteurs lignes de V* correspondant aux valeurs singulières non nulles Σ$_r$ sont calculés. On obtient un résultat plus rapidement qu'avec la SVD « fine » si $n\gg r$. La matrice U$_r$ est ainsi m × r, Σ$_r$ est diagonale r × r et V$_r$* est r × n.

#### SVD « tronquée »

    ${\tilde {M}}=U_{t}\Sigma _{t}V_{t}^{*}$
Seuls les t vecteurs colonnes de U et les t vecteurs lignes de V* correspondant aux t plus grandes valeurs singulières Σ$_r$ sont calculées. C'est un calcul encore plus rapide que la SVD « compacte » si $r\gg t$. La matrice U$_t$ est ainsi m×t, Σ$_t$ est diagonale t × t et V$_t$* est t × n.
Cependant, cette décomposition « tronquée » n'est plus une décomposition exacte de la matrice d'origine M, mais la matrice obtenue, ${\tilde {M}}$, est la meilleure approximation de M obtenue par une matrice de rang t, pour la norme d'opérateur subordonnée aux normes euclidiennes de R$^n$ et R$^m$.

## Normes
### Normes de Ky Fan

La somme des k plus grandes valeurs singulières de M est une norme sur l'espace vectoriel des matrices, appelée norme de Ky Fan ou norme k de M.
La première des normes de Ky Fan, la norme 1 de Ky Fan, est la même que la norme d'opérateur de M en tant qu'opérateur linéaire, selon les normes euclidiennes de K$^m$ et K$^n$. En d'autres termes, la norme 1 de Ky Fan est la norme d'opérateur induite par le produit intérieur euclidien standard l$^2$. Pour cette raison, on l'appelle également norme 2 d'opérateur. On peut facilement vérifier la relation entre la norme 1 de Ky Fan et les valeurs singulières. C'est vrai en général, pour un opérateur borné M sur un espace de Hilbert (potentiellement infini) :
    $\|M\|=\|M^{*}M\|^{\frac {1}{2}}.$
Cependant, dans le cas des matrices, (M*M)$^½$ est une matrice normale, donc ||M*M||$^½$ est la plus grande valeur propre de (M*M)$^½$, donc la plus grande valeur singulière de M.
La dernière norme de Ky Fan, qui est égale à la somme de toutes les valeurs singulières, est la norme de trace définie par ||M|| = Tr (M*M)$^½$.
On considère la forme linéaire définie dans l'algèbre des matrices d'ordre n par:
    $u_{X}:Y\to {\rm {Tr}}(^{t}YX)$
On considère la norme spectrale $\|\ \|_{2}$ des matrices et l'on définit la norme duale de $u_{X}$ par:
    $\|u_{X}\|=\sup _{\|Y\|_{2}=1}|{\rm {Tr}}(^{t}YX)|$
On vérifie alors aisément que cette norme duale est en fait la norme trace de X définie ci-dessus. De plus, cette norme est une norme d'algèbre.

### Norme de Hilbert-Schmidt

Les valeurs singulières sont liées à une autre norme sur l'espace des opérateurs. On considère le produit scalaire de Hilbert-Schmidt sur les matrices n × n, défini par <M, N> = Tr N*M. Alors la norme induite est ||M|| = <M, M>$^½$ = (Tr M*M)$^½$. La trace étant un invariant de similitude, cela implique que :
    $\|M\|=\left(\sum s_{i}^{2}\right)^{\frac {1}{2}}$,
où les s$_i$ sont les valeurs singulières de M. On l'appelle norme de Frobenius, norme 2 de Schatten ou norme de Hilbert-Schmidt de M. On montre également que si :
    $\,M=(m_{ij})$,
alors cette norme coïncide avec :
    ${\biggl\sum _{ij}|m_{ij}|^{2}{\biggr )}^{\frac {1}{2}}$.

## Opérateurs bornés sur les espaces de Hilbert

La factorisation M = UΣV* peut être étendue comme opérateur borné M sur un espace de Hilbert H. D'une façon générale, pour tout opérateur borné M, il existe une isométrie partielle U, un vecteur unitaire V, un espace de mesure (X, μ) et f mesurable positive telle que :
    $\;M=UT_{f}V^{*},$
où $T_{f}$ est la multiplication par f sur L$^2$(X, μ).
On peut le montrer en travaillant l'argument d'algèbre linéaire utilisé pour le cas matriciel. VT$_f$ V* est l'unique racine positive de M*M, donnée par l'analyse fonctionnelle de Borel, pour les opérateurs auto-adjoints. La raison pour laquelle U n'a pas besoin d'être unitaire est liée au fait que, contrairement au cas de dimension finie, étant donné une isométrie U$_1$ avec un noyau non trivial, une isométrie U$_2$ existe telle que :
    ${\begin{pmatrix}U_{1}\\U_{2}\end{pmatrix}}$
est un opérateur unitaire.
Puisque, pour les matrices, la décomposition en valeurs singulières est équivalente à la décomposition polaire pour les opérateurs, on peut réécrire cela sous la forme :
    $M=UV^{*}\cdot VT_{f}V^{*}$
et remarquer que U V* est encore une isométrie partielle tant que VT$_f$ V* est positif.

### Valeurs singulières et opérateurs compacts

Pour étendre la notion de valeur singulière et de vecteurs singuliers au cas des opérateurs, on doit se restreindre aux opérateurs compacts sur les espaces de Hilbert. On rappelle certaines propriétés utiles :
* Les opérateurs compacts sur les espaces de Banach, donc de Hilbert, possèdent un spectre discret ;
* Si T est compact, tout λ de son spectre, non nul, est une valeur propre ;
* Un opérateur compact auto-adjoint peut être diagonalisé par ses vecteurs propres ;
* Si M est compact, alors M*M l'est également.
En utilisant la diagonalisation, l'image unitaire de la racine carrée positive de M, notée T$_f$, possède une famille orthonormale de vecteurs propres {e$_i$}, correspondants aux valeurs propres strictement positives {σ$_i$}. Pour tout ψ ∈ H,
    $\;M\psi =UT_{f}V^{*}\psi =\sum _{i}\langle UT_{f}V^{*}\psi ,Ue_{i}\rangle Ue_{i}=\sum _{i}\sigma _{i}\langle \psi ,Ve_{i}\rangle Ue_{i},$
quand la série converge normalement dans H. On remarque que cette expression est proche de celle dans le cas de dimension finie.
Les σ$_i$ sont appelées valeurs singulières de M. {U e$_i$} et {V e$_i$} sont analogues aux vecteurs singuliers à gauche et à droite respectivement pour M.

## Utilisations
### Calcul du pseudo-inverse

La décomposition en valeurs singulières permet de calculer le pseudo-inverse d'une matrice. En effet, le pseudo-inverse d'une matrice M connaissant sa décomposition en valeurs singulières M = UΣV*, est donné par :
    $M^{+}=V\Sigma ^{+}U^{*},\,$
avec Σ$^+$ le pseudo-inverse de Σ où tout coefficient non nul est remplacé par son inverse. Le pseudo-inverse lui-même permet de résoudre la méthode des moindres carrés.

### Image, rang et noyau

Une autre utilisation de la décomposition en valeurs singulières est la représentation explicite de l'image et du noyau d'une matrice M. Les vecteurs singuliers à droite correspondant aux valeurs singulières nulles de M engendrent le noyau de M. Les vecteurs singuliers à gauche correspondant aux valeurs singulières non nulles de M engendrent son image.
Par conséquent, le rang de M est égal au nombre de valeurs singulières non nulles de M. De plus, les rangs de M, de M*M et de MM* sont égaux. M*M et MM* ont les mêmes valeurs propres non nulles.
En algèbre linéaire, on peut prévoir numériquement le rang effectif d'une matrice, puisque les erreurs d'arrondi pourraient autrement engendrer des valeurs petites mais non nulles, faussant le calcul du rang de la matrice.

### Approximations de matrices, le théorème d'Eckart Young

Certaines applications pratiques ont besoin de résoudre un problème d'approximation de matrices M à partir d'une matrice ${\tilde {M}}$ ayant un rang donné, égal à r. Dans le cas où on tente de minimiser la distance au sens de la norme spectrale (ou aussi de Frobenius) entre M et ${\tilde {M}}$, en gardant ${\mbox{rg}}({\tilde {M}})=r$, on constate que la solution est la décomposition en valeurs singulières de M, c'est-à-dire :
    ${\tilde {M}}=U{\tilde {\Sigma }}V^{*}$
avec ${\tilde {\Sigma }}$ égale à Σ, si ce n'est qu'elle ne contient que les $r$ plus grandes valeurs singulières, les autres étant remplacées par 0. Voici une démonstration :
On se limite aux matrices carrées par souci de simplification. On utilise le symbole norme triple pour représenter la norme spectrale. On prouve le théorème d'Eckart Young tout d'abord pour la norme spectrale. Sans perte de généralité, on peut supposer que A est une matrice diagonale et donc que U et V sont la matrice identité. On pose donc A = Σ. Les termes diagonaux de A sont notés σ$_i$. Ils sont triés par ordre décroissant. On a donc
    $\sigma _{1}\geq \sigma _{2}\geq \ldots \geq \sigma _{n}$
On considère une matrice B quelconque de rang r. On considère le sous-espace vectoriel E de $\mathbb {R} ^{n}$ engendrés par les vecteurs (e$_1$, ..., e$_{r+1}$) où chacun des e$_i$ est le vecteur (0, ..., 0,1,0,...,0) non nul au rang i. Ce sous-espace vectoriel est de dimension r+1. Comme la matrice B est de rang r, le noyau de B est de rang n-r. Par un argument simple aux dimensions, l'intersection de E et du noyau de B n'est pas nulle. On considère un vecteur normalisé x appartenant à cette intersection. On définit $x=\sum _{i=1}^{r+1}x_{i}e_{i}$ On a alors
    $(A-B)x=Ax-0=\Sigma x=\sum _{i=1}^{r+1}\sigma _{i}x_{i}e_{i}.$
Comme les vecteurs e$_i$ sont orthogonaux et normés, on obtient:
    $\|(A-B)x\|^{2}=\sum _{i=1}^{r+1}\sigma _{i}^{2}x_{i}^{2}\geq \sigma _{r+1}^{2}\times 1.$
Par définition de la norme spectrale, on déduit donc que quelle que soit la matrice B, on a
    $|\|A-B\||\geq \sigma _{r+1}$
On conclut la preuve en choisissant $B=\Sigma '={\rm {diag}}(\sigma _{1},\ldots ,\sigma _{r},0,\ldots ,0)$. n constate alors aisément que $|\|A-B\||=\sigma _{r+1}$.
Donc B = Σ' est la matrice de rang r qui minimise la norme spectrale de A - B.
En ce qui concerne la preuve pour la norme de Frobenius, on garde les mêmes notations et on remarque que
    $|\|\ \||\leq \|\ \|_{F}$
La preuve est alors similaire.
Ainsi, ${\tilde {M}}$, matrice de rang r, est la meilleure approximation de M au sens de la norme de Frobenius (ou spectrale) quand $\sigma _{i}=s_{i}\quad (i=1,\cdots ,r)$. De plus, ses valeurs singulières sont les mêmes que les r premières plus grandes de M.

### Application au traitement automatique des langues

Une des principales utilisation de la décomposition en valeurs singulières en traitement automatique des langues est l'analyse sémantique latente (ou LSA, de l'anglais latent semantic analysis), une méthode de la sémantique vectorielle. Ce procédé a pour but l'analyse des relations entre un ensemble de documents et des termes ou expressions qu'on y trouve, en établissant des « concepts » communs à ces différents éléments.
Brevetée en 1988, on parle également d'indexation sémantique latente (LSI). Voici une description sommaire du principe de cet algorithme.
Dans un premier temps, on construit une matrice représentant les différentes occurrences des termes (d'un dictionnaire prédéterminé, ou extraits des documents), en fonction des documents. Par exemple, prenons trois œuvres littéraires :
* Document 1 : « J'adore Wikipédia »
* Document 2 : « J'adore le chocolat »
* Document 3 : « Je déteste le chocolat »
Alors la matrice M associée à ces documents sera :
    J'JeadoredétesteleWikipédiachocolat Document 11010010 Document 21010101 Document 30101101
Éventuellement, on peut réduire certains mots à leur radical ou à un mot équivalent, ou même négliger certains termes trop courts pour avoir un sens ; la matrice contient alors Je, adorer, détester, Wikipédia, chocolat. Les coefficients (ici 1 ou 0) sont en général non pas un décompte mais une valeur proportionnelle au nombre d'occurrences du terme dans le document, on parle de pondération tf (term frequency). D'autres pondérations comme idf (inverse document frequency ou TF-IDF) peuvent être impliquées.
Alors M sera de la forme :
    ${\begin{matrix}&{\textbf {terme}}_{j}\\&\downarrow \\{\textbf {document}}_{i}^{T}\rightarrow &{\begin{pmatrix}x_{1,1}&\dots &x_{1,n}\\\vdots &\ddots &\vdots \\x_{m,1}&\dots &x_{m,n}\\\end{pmatrix}}\end{matrix}}$
On peut également travailler avec la transposée de M, que l'on note N. Alors les vecteurs lignes de N correspondent à un terme donné, et donnent accès à leur « relation » à chaque document :
    ${\textbf {terme}}_{i}^{T}={\begin{bmatrix}x_{i,1}&\dots &x_{i,n}\end{bmatrix}}$
Et de même, une colonne de la matrice N représente un document donné, et donne accès à sa relation à chaque terme :
    ${\textbf {document}}_{j}={\begin{bmatrix}x_{1,j}\\\vdots \\x_{m,j}\end{bmatrix}}$
On accède à la corrélation entre les termes de deux documents en effectuant leur produit scalaire. La matrice symétrique obtenue en calculant le produit $S=NN^{T}$ contient tous ces produits scalaires. L'élément de S d'indice (i,p) contient le produit :
    $S_{i,p}={\textbf {terme}}_{i}^{T}{\textbf {terme}}_{p}={\textbf {terme}}_{p}^{T}{\textbf {terme}}_{i}$.
De même, la matrice symétrique $Z=N^{T}N$ contient les produits scalaires entre tous les documents, qui donne leur corrélation selon les termes :
    $Z_{j,q}={\textbf {document}}_{j}^{T}{\textbf {document}}_{q}={\textbf {document}}_{q}^{T}{\textbf {document}}_{j}$.
On calcule maintenant la décomposition en valeurs singulières de la matrice N, qui donne les matrices telles que :
    $M=U\Sigma V^{T}$
Alors les matrices de corrélation deviennent :
    ${\begin{matrix}S&=&(U\Sigma V^{T})(U\Sigma V^{T})^{T}=(U\Sigma V^{T})(V^{T^{T}}\Sigma ^{T}U^{T})=U\Sigma V^{T}V\Sigma ^{T}U^{T}=U\Sigma \Sigma ^{T}U^{T}\\Z&=&(U\Sigma V^{T})^{T}(U\Sigma V^{T})=(V^{T^{T}}\Sigma ^{T}U^{T})(U\Sigma V^{T})=V\Sigma ^{T}U^{T}U\Sigma V^{T}=V\Sigma ^{T}\Sigma V^{T}\end{matrix}}$
La matrice U contient les vecteurs propres de S, la matrice V contient ceux de Z. On a alors :
    ${\begin{matrix}&({\textbf {document}}_{j})&&&&&&&({\widehat {{\textbf {document}}_{j})}}\\&\downarrow &&&&&&&\downarrow \\({\textbf {terme}}_{i}^{T})\rightarrow &{\begin{pmatrix}x_{1,1}&\dots &x_{1,n}\\\\\vdots &\ddots &\vdots \\\\x_{m,1}&\dots &x_{m,n}\\\end{pmatrix}}&=&({\widehat {{\textbf {terme}}_{i}}}^{T})\rightarrow &{\begin{pmatrix}{\begin{bmatrix}\,\\\,\\{\textbf {u}}_{1}\\\,\\\,\end{bmatrix}}\dots {\begin{bmatrix}\,\\\,\\{\textbf {u}}_{l}\\\,\\\,\end{bmatrix}}\end{pmatrix}}&\cdot &{\begin{pmatrix}\sigma _{1}&\dots &0\\\vdots &\ddots &\vdots \\0&\dots &\sigma _{l}\\\end{pmatrix}}&\cdot &{\begin{pmatrix}{\begin{bmatrix}&&{\textbf {v}}_{1}&&\end{bmatrix}}\\\vdots \\{\begin{bmatrix}&&{\textbf {v}}_{l}&&\end{bmatrix}}\end{pmatrix}}\\&M&&&U&&\Sigma &&V^{T}\end{matrix}}$
Les valeurs singulières, $\sigma _{1},\dots ,\sigma _{l}$ peuvent alors être sélectionnées, pour obtenir une « approximation » de la matrice à un rang k arbitraire, qui permet une analyse plus ou moins précise des données.

### Cinématique inverse

En robotique, le problème de la cinématique inverse, qui consiste essentiellement à savoir « comment bouger pour atteindre un point, » peut être abordé par la décomposition en valeurs singulières.

#### Énoncé du problème

On peut considérer — c'est un modèle très général — un robot constitué de bras articulés, indicés i, formant un angle θ$_i$ entre eux, dans un plan. On note X le vecteur représentant la position du « bout » de cette chaine de bras, qui en pratique est une pince, une aiguille, un aimant… Le problème va être de déterminer le vecteur Θ, contenant tous les θ$_i$, de sorte que X soit égal à une valeur donnée X$_0$.

#### Résolution

On définit le jacobien de X par :
    $J={\frac {\partial {\textbf {X}}}{\partial \mathbf {\Theta } }}$.
On a alors :
    ${\dot {\textbf {X}}}=J{\dot {\mathbf {\Theta } }}$.
Si J est inversible (ce qui est, en pratique, toujours le cas), on peut alors accéder à la dérivée de θ :
    ${\dot {\mathbf {\Theta } }}=J^{-1}{\dot {\textbf {X}}}$.
Si J n'est pas inversible, on peut de toute façon utiliser la notion de pseudo-inverse. Néanmoins, son utilisation ne garantit pas que l'algorithme converge, il faut donc que le jacobien soit nul en un nombre réduit de points. En notant (U, Σ, V) la décomposition en valeurs singulières de J, l'inverse (le pseudo-inverse si J n'est pas inversible) de J est donné par :
    $J^{-1}=V\Sigma ^{-1}U^{T}\,$ (cas inversible) ;
    $J^{+}=V\Sigma ^{+}U^{T}\,$ (cas pseudo-inversible).
On a noté Σ$^+$ la matrice diagonale comportant l'inverse des valeurs singulières non nulles. Dans la suite, la notation J$^{−1}$ renverra sans distinction à l'inverse ou au pseudo-inverse de J.
Le calcul des vecteurs colonne de J peut être effectué de la manière qui suit :
* On note X$_i$ la position de l'articulation i ;
* On note e$_z$ le vecteur unitaire de même direction que l'axe de rotation de l'articulation ;
Alors $J_{i}={\textbf {e}}_{z}\wedge \left({\textbf {X}}_{0}-{\textbf {X}}\right)$.
On peut alors discrétiser l'équation, en posant :
    $\Delta {\textbf {X}}={\textbf {X}}_{0}-{\textbf {X}}$
    $\Delta \mathbf {\Theta } =J^{-1}\Delta {\textbf {X}}$
Et en ajoutant ΔΘ à Θ à chaque itération, puis en recalculant ΔX et ΔΘ, on atteint peu à peu la solution désirée.

#### Autre résolution

Il est également possible d'utiliser la décomposition en valeurs singulières de J autrement pour obtenir ΔΘ :
    $\Delta \mathbf {\Theta } =J^{-1}\Delta {\textbf {X}}$
En multipliant successivement à gauche par J puis par sa transposée, pour enfin utiliser la décomposition en valeurs singulières de J$^T$J, on a :
    $J\Delta \mathbf {\Theta } =\Delta {\textbf {X}}$
    $J^{T}J\Delta \mathbf {\Theta } =J^{T}\Delta {\textbf {X}}$
    $V\Sigma ^{2}V^{T}\Delta \mathbf {\Theta } =J^{T}\Delta {\textbf {X}}$
Soit en conclusion :
    $\Delta \mathbf {\Theta } =\left(V\Sigma ^{-2}V^{T}J^{T}\right)\Delta {\textbf {X}}$.

### Autres exemples

Une utilisation courante de la décomposition en valeurs singulières est la séparation d'un signal sur deux sous-espaces supplémentaires, par exemple un sous-espace « signal » et un sous-espace de bruit. La décomposition en valeurs singulières est beaucoup utilisée dans l'étude de l'inversion de matrices, très pratique dans les méthodes de régularisation. On l'emploie également massivement en statistique, en traitement du signal, en reconnaissance de formes et dans le traitement informatique des langues naturelles.
De grandes matrices sont décomposées au travers de cet algorithme en météorologie, pour l'algorithme de Lanczos par exemple.
L'étude géologique et sismique, qui a souvent à faire avec des données bruitées, fait également usage de cette décomposition et de ses variantes multidimensionnelles pour « nettoyer » les spectres obtenus. Étant donné un certain nombre d'échantillons connus, certains algorithmes peuvent, au moyen d'une décomposition en valeurs singulières, opérer une déconvolution sur un jeu de données.
Les valeurs singulières sont également utilisées en automatique. Elles permettent de généraliser le principe de gain d'une fonction de transfert à un système multi-entrées multi-sorties. Les valeurs singulières sont utilisées dans le calcul de la norme H$_∞$ pour l'élaboration d'une commande H$_∞$.

## Calcul de la SVD

Le calcul explicite, analytique, de la décomposition en valeurs singulières d'une matrice est difficile dans le cas général. On utilise, en particulier dans les applications, des algorithmes spécialisés.
La procédure DGESVD de la bibliothèque LAPACK propose une approche courante pour le calcul de la décomposition en valeurs singulières d'une matrice. Si la matrice possède plus de lignes que de colonnes, on effectue tout d'abord une décomposition QR. Le facteur R est ensuite réduit sous forme bidiagonale (en). Pour ceci, on peut effectuer des transformations de Householder alternativement sur les colonnes et sur les lignes de la matrice. Les valeurs singulières et vecteurs singuliers sont alors trouvés en effectuant une itération de type QR bidiagonale avec la procédure DBDSQR.
GNU Scientific Library propose trois possibilités : l'algorithme de Golub-Reinsch, l'algorithme de Golub-Reinsch modifié (plus rapide pour les matrices possédant bien plus de lignes que de colonnes) et l'orthogonalisation de Jacobi.