Décomposition en valeurs singulières (SVD)
Glissez pour afficher le menu
La décomposition en valeurs singulières (SVD) est une technique mathématique qui permet de comprendre et de simplifier des données complexes. Imaginez que vous disposez d’un grand tableau de nombres : la SVD vous permet de décomposer ce tableau en trois parties plus petites et plus faciles à interpréter. Chaque partie révèle différents aspects des données d’origine, comme les principaux motifs ou caractéristiques importantes.
L’objectif de la SVD est de donner du sens à des informations compliquées. En séparant une matrice (une grille de nombres) en composants plus simples, il est possible de :
- Identifier les tendances ou caractéristiques les plus importantes dans vos données ;
- Éliminer le bruit ou les détails non pertinents qui pourraient perturber l’analyse ;
- Réduire la quantité d’informations à stocker ou à traiter, ce qui rend les calculs plus rapides et plus efficaces ;
- Découvrir des relations ou structures cachées qui ne sont pas évidentes au premier abord.
La SVD est utilisée dans de nombreuses technologies du quotidien et dans différents domaines scientifiques. Par exemple :
- En compression d’images, la SVD permet de réduire la taille des fichiers photo sans perdre les détails essentiels ;
- En traitement de la musique et de la parole, elle aide à réduire le bruit de fond et à clarifier les signaux ;
- Dans les systèmes de recommandation, comme ceux utilisés par les services de streaming, la SVD identifie des motifs dans vos préférences pour suggérer de nouveaux contenus ;
- En traitement du langage naturel, elle permet de regrouper des sujets ou des significations similaires dans de grands ensembles de textes.
Comprendre la SVD offre un outil puissant pour travailler avec les données, quel que soit votre domaine. Elle permet d’extraire des informations précieuses, de simplifier les données et d’améliorer les performances des systèmes numériques modernes.
12345678910111213import numpy as np from scipy.linalg import svd # Create a sample matrix A = np.array([[3, 1, 1], [-1, 3, 1]]) # Compute the Singular Value Decomposition U, s, VT = svd(A) print("U matrix:\n", U) print("Singular values:", s) print("VT matrix:\n", VT)
Ce code montre comment effectuer une décomposition en valeurs singulières (SVD) avec SciPy en Python :
- On commence par importer les bibliothèques nécessaires :
numpypour créer et manipuler des tableaux, etscipy.linalg.svdpour réaliser la SVD ; - Une matrice d’exemple
Aest créée sous la forme d’un tableau 2x3 de nombres ; - La fonction
svddécompose la matriceAen trois composants :U,setVT. Ici,Ucontient les vecteurs singuliers à gauche,scontient les valeurs singulières, etVTcontient les vecteurs singuliers à droite (transposés) ; - Le code affiche chacun de ces composants dans la console afin de visualiser le résultat de la décomposition.
Cet exemple permet de comprendre comment décomposer une matrice en ses éléments fondamentaux, ce qui est utile pour l’analyse de données, la compression et la découverte de motifs dans vos données.
12345678910111213141516171819202122import numpy as np from scipy.linalg import svd # Original matrix A = np.array([[3, 1, 1], [-1, 3, 1]]) # Full SVD U, s, VT = svd(A) # Reconstruct the original matrix from all singular values S_full = np.zeros((U.shape[1], VT.shape[0])) np.fill_diagonal(S_full, s) A_reconstructed = np.dot(U, np.dot(S_full, VT)) print("Reconstructed matrix (all singular values):\n", A_reconstructed) # Truncate to keep only the largest singular value S_truncated = np.zeros_like(S_full) S_truncated[0, 0] = s[0] A_truncated = np.dot(U, np.dot(S_truncated, VT)) print("Reconstructed matrix (truncated):\n", A_truncated)
Ce code montre comment utiliser la décomposition en valeurs singulières (SVD) pour décomposer une matrice puis la reconstruire en utilisant toutes ou seulement certaines de ses valeurs singulières. Voici le déroulement étape par étape :
- Création de la matrice d'origine : Une matrice
Aest définie avec NumPy. Il s'agit du point de départ pour la SVD. - SVD complète : La fonction
svdde SciPy décomposeAen trois matrices :U,setVT. Celles-ci représentent respectivement les vecteurs singuliers à gauche, les valeurs singulières et les vecteurs singuliers à droite. - Reconstruction avec toutes les valeurs singulières : Une matrice diagonale
S_fullest créée à partir des valeurs singulières, puis les matrices (U,S_full,VT) sont multipliées pour reconstruire la matrice d'origine. Cela montre que la SVD permet de reconstruire parfaitement la matrice lorsque toutes les valeurs singulières sont utilisées. - Troncature pour l'approximation : Une nouvelle matrice diagonale
S_truncatedest créée en ne conservant que la plus grande valeur singulière (les autres sont mises à zéro). La multiplication deU,S_truncatedetVTdonne une approximation de la matrice d'origine. Cette étape illustre la réduction de dimension : en utilisant moins de valeurs singulières, la matrice est simplifiée tout en conservant ses caractéristiques principales. - Résultat : Le code affiche à la fois la matrice entièrement reconstruite et la version tronquée, permettant de comparer les effets de la réduction de dimension. La matrice tronquée conserve la structure principale mais perd certains détails, illustrant comment la SVD peut être utilisée pour la compression de données et l'extraction de caractéristiques.
La SVD est particulièrement utile pour la réduction de dimension. En ne conservant que les plus grandes valeurs singulières et leurs vecteurs associés, il est possible d'approximer la matrice d'origine avec beaucoup moins de dimensions. Ce processus élimine le bruit et les informations redondantes, ce qui facilite la visualisation et le traitement des données tout en préservant leurs caractéristiques essentielles. Concrètement, cela permet de compresser des ensembles de données, d'accélérer les algorithmes d'apprentissage automatique et de révéler la structure sous-jacente des données.
1. Quelles sont les trois matrices produites par la SVD ?
2. Comment la SVD peut-elle être utilisée pour la compression de données ?
3. Quelle fonction SciPy est utilisée pour la décomposition en valeurs singulières ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion