Singuliere Waardedecompositie (SVD)
Veeg om het menu te tonen
Singulierewaardedecompositie (SVD) is een wiskundige techniek die helpt om complexe gegevens te begrijpen en te vereenvoudigen. Stel je voor dat je een grote tabel met getallen hebt—SVD maakt het mogelijk om deze tabel op te splitsen in drie kleinere, beter te begrijpen delen. Elk deel onthult verschillende aspecten van de oorspronkelijke gegevens, zoals de belangrijkste patronen of kenmerken.
Het doel van SVD is om ingewikkelde informatie inzichtelijk te maken. Door een matrix (een rooster van getallen) te scheiden in eenvoudigere componenten kun je:
- De belangrijkste trends of kenmerken in je gegevens identificeren;
- Ruis of irrelevante details verwijderen die je analyse kunnen verstoren;
- De hoeveelheid informatie die je moet opslaan of verwerken verminderen, waardoor berekeningen sneller en efficiënter worden;
- Verborgen relaties of structuren ontdekken die op het eerste gezicht niet zichtbaar zijn.
SVD wordt gebruikt in veel alledaagse technologieën en wetenschappelijke disciplines. Bijvoorbeeld:
- Bij beeldcompressie helpt SVD om fotobestanden te verkleinen zonder belangrijke details te verliezen;
- Bij muziek- en spraakverwerking helpt het achtergrondgeluid te verminderen en signalen te verduidelijken;
- In aanbevelingssystemen, zoals die van streamingdiensten, vindt SVD patronen in je voorkeuren om nieuwe inhoud voor te stellen;
- In natuurlijke taalverwerking helpt het om vergelijkbare onderwerpen of betekenissen te groeperen in grote tekstverzamelingen.
Inzicht in SVD biedt een krachtig hulpmiddel voor het werken met gegevens, ongeacht je achtergrond. Het stelt je in staat waardevolle inzichten te verkrijgen, informatie te vereenvoudigen en de prestaties van moderne digitale systemen te verbeteren.
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)
Deze code laat zien hoe je Singulierewaardedecompositie (SVD) uitvoert met SciPy in Python:
- Je begint met het importeren van de benodigde bibliotheken:
numpyvoor het maken en bewerken van arrays, enscipy.linalg.svdvoor het uitvoeren van SVD; - Een voorbeeldmatrix
Awordt aangemaakt als een 2x3-array van getallen; - De functie
svdontleedt matrixAin drie componenten:U,senVT. Hier bevatUde linker singuliere vectoren,sbevat de singuliere waarden enVTbevat de rechter singuliere vectoren (getransponeerd); - De code print elk van deze componenten naar de console zodat je het resultaat van de ontbinding kunt zien.
Dit voorbeeld helpt om te begrijpen hoe je een matrix kunt ontleden in zijn fundamentele delen, wat nuttig is voor data-analyse, compressie en het ontdekken van patronen in je gegevens.
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)
Deze code laat zien hoe je singulierewaardedecompositie (SVD) gebruikt om een matrix op te splitsen en vervolgens te reconstrueren met alle of slechts enkele van zijn singuliere waarden. Dit gebeurt stap voor stap:
- Originele matrix aanmaken: Je definieert een matrix
Amet NumPy. Dit is het startpunt voor SVD. - Volledige SVD: De functie
svduit SciPy splitstAin drie matrices:U,senVT. Deze vertegenwoordigen respectievelijk de linker singuliere vectoren, singuliere waarden en rechter singuliere vectoren. - Reconstructie met alle singuliere waarden: Je maakt een diagonale matrix
S_fullvan de singuliere waarden en vermenigvuldigt de matrices (U,S_full,VT) om de originele matrix opnieuw op te bouwen. Dit toont aan dat SVD de matrix perfect kan reconstrueren wanneer alle singuliere waarden worden gebruikt. - Truncatie voor benadering: Je maakt een nieuwe diagonale matrix
S_truncateddie alleen de grootste singuliere waarde behoudt (de rest wordt op nul gezet). DoorU,S_truncatedenVTte vermenigvuldigen, krijg je een benadering van de originele matrix. Deze stap toont dimensiereductie: door minder singuliere waarden te gebruiken, vereenvoudig je de matrix terwijl de belangrijkste kenmerken behouden blijven. - Uitvoer: De code print zowel de volledig gereconstrueerde matrix als de getrunceerde versie, zodat je het effect van dimensiereductie kunt vergelijken. De getrunceerde matrix bevat de hoofdstructuur, maar verliest enkele details, wat laat zien hoe SVD kan worden gebruikt voor datacompressie en feature-extractie.
SVD is vooral waardevol voor dimensiereductie. Door alleen de grootste singuliere waarden en hun bijbehorende vectoren te behouden, kun je de originele matrix benaderen met veel minder dimensies. Dit proces verwijdert ruis en overbodige informatie, waardoor je data eenvoudiger te visualiseren en te verwerken is, terwijl de belangrijkste kenmerken behouden blijven. In de praktijk betekent dit dat je datasets kunt comprimeren, machine learning-algoritmen kunt versnellen en de onderliggende structuur van je data kunt blootleggen.
1. Wat zijn de drie matrices die door SVD worden geproduceerd?
2. Hoe kan SVD worden gebruikt voor datacompressie?
3. Welke SciPy-functie wordt gebruikt voor singulierewaardedecompositie?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.