Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Singulærverdidekomponering (SVD) | Lineær algebra og matriseoperasjoner
Introduksjon til SciPy

Singulærverdidekomponering (SVD)

Sveip for å vise menyen

Singulærverdidekomponering (SVD) er en matematisk teknikk som hjelper deg å forstå og forenkle komplekse data. Tenk deg at du har en stor tabell med tall—SVD lar deg dele denne tabellen opp i tre mindre, mer oversiktlige deler. Hver del avslører ulike aspekter ved de opprinnelige dataene, som hovedmønstre eller viktige egenskaper.

Formålet med SVD er å gjøre komplisert informasjon mer forståelig. Ved å dele opp en matrise (et rutenett av tall) i enklere komponenter, kan du:

  • Identifisere de viktigste trendene eller egenskapene i dataene dine;
  • Fjerne støy eller irrelevante detaljer som kan forvirre analysen;
  • Redusere mengden informasjon som må lagres eller behandles, noe som gjør beregninger raskere og mer effektive;
  • Oppdage skjulte sammenhenger eller strukturer som ikke er åpenbare ved første øyekast.

SVD brukes i mange dagligdagse teknologier og vitenskapelige felt. For eksempel:

  • Ved bildekomprimering hjelper SVD med å redusere filstørrelsen på bilder uten å miste viktige detaljer;
  • Innen musikk- og taleprosessering bidrar det til å redusere bakgrunnsstøy og tydeliggjøre signaler;
  • I anbefalingssystemer, slik som de som brukes av strømmetjenester, finner SVD mønstre i preferansene dine for å foreslå nytt innhold;
  • Innen naturlig språkprosessering hjelper det med å gruppere lignende temaer eller betydninger i store tekstsamlinger.

Å forstå SVD gir deg et kraftig verktøy for å arbeide med data, uansett bakgrunn. Det gjør det mulig å hente ut verdifulle innsikter, forenkle informasjon og forbedre ytelsen til moderne digitale systemer.

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)
Kodebeskrivelse
expand arrow

Denne koden viser hvordan du kan utføre Singulærverdidekomponering (SVD) ved hjelp av SciPy i Python:

  • Du starter med å importere de nødvendige bibliotekene: numpy for å lage og håndtere matriser, og scipy.linalg.svd for å utføre SVD;
  • En eksempelmatrise A opprettes som et 2x3-array med tall;
  • svd-funksjonen dekomponerer matrisen A i tre komponenter: U, s og VT. Her inneholder U de venstre singulærvektorene, s inneholder singulærverdiene, og VT inneholder de høyre singulærvektorene (transponert);
  • Koden skriver ut hver av disse komponentene til konsollen slik at du kan se resultatet av dekomponeringen.

Dette eksempelet hjelper deg å forstå hvordan en matrise kan brytes ned i sine grunnleggende deler, noe som er nyttig for dataanalyse, komprimering og å avdekke mønstre i dataene dine.

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)
Kodebeskrivelse
expand arrow

Denne koden viser hvordan man bruker singularverdidekomponering (SVD) til å dele opp en matrise og deretter rekonstruere den ved å bruke alle eller bare noen av singularverdiene. Her er hva som skjer steg for steg:

  1. Opprettelse av originalmatrise: Du definerer en matrise A med NumPy. Dette er utgangspunktet for SVD.
  2. Full SVD: svd-funksjonen fra SciPy deler A opp i tre matriser: U, s og VT. Disse representerer henholdsvis venstre singularvektorer, singularverdier og høyre singularvektorer.
  3. Rekonstruksjon med alle singularverdier: Du lager en diagonal matrise S_full fra singularverdiene og multipliserer matrisene (U, S_full, VT) sammen for å bygge opp den originale matrisen igjen. Dette viser at SVD kan rekonstruere matrisen nøyaktig når alle singularverdier brukes.
  4. Trunkering for tilnærming: Du lager en ny diagonal matrise S_truncated som kun beholder den største singularverdien (setter resten til null). Ved å multiplisere U, S_truncated og VT får du en tilnærming av originalmatrisen. Dette steget demonstrerer dimensjonsreduksjon: ved å bruke færre singularverdier forenkler du matrisen, men beholder de viktigste egenskapene.
  5. Utdata: Koden skriver ut både den fullstendig rekonstruerte matrisen og den trunkerte versjonen, slik at du kan sammenligne effekten av dimensjonsreduksjon. Den trunkerte matrisen fanger hovedstrukturen, men mister noen detaljer, og viser hvordan SVD kan brukes til datakomprimering og utvinning av egenskaper.

SVD er spesielt nyttig for dimensjonsreduksjon. Ved å beholde kun de største singularverdiene og tilhørende vektorer, kan du tilnærme den opprinnelige matrisen med langt færre dimensjoner. Denne prosessen fjerner støy og overflødig informasjon, noe som gjør dataene enklere å visualisere og behandle, samtidig som de viktigste egenskapene beholdes. I praksis betyr dette at du kan komprimere datasett, øke hastigheten på maskinlæringsalgoritmer og avdekke den underliggende strukturen i dataene dine.

1. Hvilke tre matriser produseres av SVD?

2. Hvordan kan SVD brukes til datakomprimering?

3. Hvilken SciPy-funksjon brukes for singulærverdidekomponering?

question mark

Hvilke tre matriser produseres av SVD?

Velg det helt riktige svaret

question mark

Hvordan kan SVD brukes til datakomprimering?

Velg det helt riktige svaret

question mark

Hvilken SciPy-funksjon brukes for singulærverdidekomponering?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 2. Kapittel 5
some-alt