Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Singulærværdidekomposition (SVD) | Lineær Algebra og Matrixoperationer
Introduktion til SciPy

Singulærværdidekomposition (SVD)

Stryg for at vise menuen

Singulærværdidekomposition (SVD) er en matematisk teknik, der hjælper med at forstå og forenkle komplekse data. Forestil dig, at du har en stor tabel med tal—SVD gør det muligt at opdele denne tabel i tre mindre, mere overskuelige dele. Hver del afslører forskellige aspekter af de oprindelige data, såsom hovedmønstre eller vigtige egenskaber.

Formålet med SVD er at skabe overblik over kompliceret information. Ved at opdele en matrix (et gitter af tal) i enklere komponenter kan du:

  • Identificere de vigtigste tendenser eller egenskaber i dine data;
  • Fjerne støj eller irrelevante detaljer, der kan forstyrre analysen;
  • Reducere mængden af information, der skal lagres eller behandles, hvilket gør beregninger hurtigere og mere effektive;
  • Opdage skjulte sammenhænge eller strukturer, som ikke er umiddelbart synlige.

SVD anvendes i mange dagligdags teknologier og videnskabelige områder. For eksempel:

  • Ved billedkomprimering hjælper SVD med at reducere filstørrelsen uden at miste vigtige detaljer;
  • Ved musik- og talebehandling hjælper det med at reducere baggrundsstøj og tydeliggøre signaler;
  • I anbefalingssystemer, som dem streamingtjenester bruger, finder SVD mønstre i dine præferencer for at foreslå nyt indhold;
  • I behandling af naturligt sprog hjælper det med at gruppere lignende emner eller betydninger i store tekstsamlinger.

Forståelse af SVD giver et stærkt værktøj til at arbejde med data, uanset baggrund. Det gør det muligt at udtrække værdifuld indsigt, forenkle information og forbedre ydeevnen i 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 kode demonstrerer, hvordan man udfører Singulærværdidekomposition (SVD) ved hjælp af SciPy i Python:

  • Du starter med at importere de nødvendige biblioteker: numpy til at oprette og manipulere arrays samt scipy.linalg.svd til at udføre SVD;
  • En eksempelmatrix A oprettes som et 2x3 array af tal;
  • Funktionen svd dekomponerer matrixen A i tre komponenter: U, s og VT. Her indeholder U de venstre singulærvektorer, s indeholder singulærværdierne, og VT indeholder de højre singulærvektorer (transponeret);
  • Koden udskriver hver af disse komponenter til konsollen, så du kan se resultatet af dekompositionen.

Dette eksempel giver forståelse for, hvordan en matrix kan opdeles i sine grundlæggende dele, hvilket er nyttigt til dataanalyse, komprimering og afdækning af mønstre i data.

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 kode demonstrerer, hvordan man bruger singulærværdidekomponering (SVD) til at opdele en matrix og derefter rekonstruere den ved hjælp af alle eller kun nogle af dens singulære værdier. Her er, hvad der sker trin for trin:

  1. Oprettelse af original matrix: En matrix A defineres ved hjælp af NumPy. Dette er udgangspunktet for SVD.
  2. Fuld SVD: Funktionen svd fra SciPy opdeler A i tre matricer: U, s og VT. Disse repræsenterer henholdsvis venstre singulærvektorer, singulære værdier og højre singulærvektorer.
  3. Rekonstruktion med alle singulære værdier: En diagonal matrix S_full oprettes ud fra de singulære værdier, og matricerne (U, S_full, VT) multipliceres for at genskabe den originale matrix. Dette viser, at SVD kan rekonstruere matricen perfekt, når alle singulære værdier bruges.
  4. Trunkering for approksimation: En ny diagonal matrix S_truncated oprettes, som kun bevarer den største singulære værdi (de øvrige sættes til nul). Multiplikation af U, S_truncated og VT giver en approksimation af den originale matrix. Dette trin illustrerer dimensionalitetsreduktion: Ved at bruge færre singulære værdier forenkles matricen, mens de vigtigste egenskaber bevares.
  5. Output: Koden udskriver både den fuldt rekonstruerede matrix og den trunkerede version, så du kan sammenligne effekten af dimensionalitetsreduktion. Den trunkerede matrix fanger hovedstrukturen, men mister nogle detaljer, hvilket viser, hvordan SVD kan bruges til datakomprimering og feature-ekstraktion.

SVD er særligt værdifuld til dimensionalitetsreduktion. Ved kun at beholde de største singulære værdier og deres tilhørende vektorer kan man approksimere den oprindelige matrix med langt færre dimensioner. Denne proces fjerner støj og overflødig information, hvilket gør data lettere at visualisere og behandle, samtidig med at de vigtigste egenskaber bevares. I praksis betyder det, at datasæt kan komprimeres, maskinlæringsalgoritmer kan gøres hurtigere, og den underliggende struktur i dataene kan afdækkes.

1. Hvilke tre matricer produceres af SVD?

2. Hvordan kan SVD bruges til datakomprimering?

3. Hvilken SciPy-funktion bruges til singulærværdidekomponering?

question mark

Hvilke tre matricer produceres af SVD?

Vælg det korrekte svar

question mark

Hvordan kan SVD bruges til datakomprimering?

Vælg det korrekte svar

question mark

Hvilken SciPy-funktion bruges til singulærværdidekomponering?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 2. Kapitel 5
some-alt