Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Singuliere Waardedecompositie (SVD) | Lineaire Algebra en Matrixbewerkingen
Introductie tot SciPy

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.

12345678910111213
import 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)
Codebeschrijving
expand arrow

Deze code laat zien hoe je Singulierewaardedecompositie (SVD) uitvoert met SciPy in Python:

  • Je begint met het importeren van de benodigde bibliotheken: numpy voor het maken en bewerken van arrays, en scipy.linalg.svd voor het uitvoeren van SVD;
  • Een voorbeeldmatrix A wordt aangemaakt als een 2x3-array van getallen;
  • De functie svd ontleedt matrix A in drie componenten: U, s en VT. Hier bevat U de linker singuliere vectoren, s bevat de singuliere waarden en VT bevat 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.

12345678910111213141516171819202122
import 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)
Codebeschrijving
expand arrow

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:

  1. Originele matrix aanmaken: Je definieert een matrix A met NumPy. Dit is het startpunt voor SVD.
  2. Volledige SVD: De functie svd uit SciPy splitst A in drie matrices: U, s en VT. Deze vertegenwoordigen respectievelijk de linker singuliere vectoren, singuliere waarden en rechter singuliere vectoren.
  3. Reconstructie met alle singuliere waarden: Je maakt een diagonale matrix S_full van 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.
  4. Truncatie voor benadering: Je maakt een nieuwe diagonale matrix S_truncated die alleen de grootste singuliere waarde behoudt (de rest wordt op nul gezet). Door U, S_truncated en VT te 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.
  5. 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?

question mark

Wat zijn de drie matrices die door SVD worden geproduceerd?

Selecteer het correcte antwoord

question mark

Hoe kan SVD worden gebruikt voor datacompressie?

Selecteer het correcte antwoord

question mark

Welke SciPy-functie wordt gebruikt voor singulierewaardedecompositie?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 2. Hoofdstuk 5
some-alt