Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Singulärvärdesuppdelning (SVD) | Linjär Algebra och Matrismoduleringar
Introduktion till SciPy

Singulärvärdesuppdelning (SVD)

Svep för att visa menyn

Singulärvärdesuppdelning (SVD) är en matematisk teknik som hjälper dig att förstå och förenkla komplex data. Föreställ dig att du har en stor tabell med siffror—SVD låter dig dela upp denna tabell i tre mindre, mer lättförståeliga delar. Varje del avslöjar olika aspekter av den ursprungliga datan, såsom dess huvudsakliga mönster eller viktiga egenskaper.

Syftet med SVD är att skapa förståelse för komplicerad information. Genom att separera en matris (ett rutnät av siffror) i enklare komponenter kan du:

  • Identifiera de viktigaste trenderna eller egenskaperna i din data;
  • Ta bort brus eller irrelevanta detaljer som kan förvirra din analys;
  • Minska mängden information som behöver lagras eller bearbetas, vilket gör beräkningar snabbare och mer effektiva;
  • Upptäcka dolda samband eller strukturer som inte är uppenbara vid första anblick.

SVD används inom många vardagliga teknologier och vetenskapliga områden. Till exempel:

  • Vid bildkomprimering hjälper SVD till att minska filstorleken på foton utan att förlora viktiga detaljer;
  • Vid musik- och talbehandling hjälper det till att minska bakgrundsbrus och tydliggöra signaler;
  • I rekommendationssystem, såsom de som används av streamingtjänster, hittar SVD mönster i dina preferenser för att föreslå nytt innehåll;
  • Inom naturlig språkbehandling hjälper det till att gruppera liknande ämnen eller betydelser i stora textmängder.

Att förstå SVD ger dig ett kraftfullt verktyg för att arbeta med data, oavsett bakgrund. Det gör det möjligt att extrahera värdefulla insikter, förenkla information och förbättra prestandan hos moderna digitala system.

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

Denna kod visar hur du utför Singulärvärdesuppdelning (SVD) med SciPy i Python:

  • Du börjar med att importera de nödvändiga biblioteken: numpy för att skapa och hantera arrayer, samt scipy.linalg.svd för att utföra SVD;
  • En exempelmatris A skapas som en 2x3-array av siffror;
  • Funktionen svd dekomponerar matrisen A i tre komponenter: U, s och VT. Här innehåller U de vänstra singulärvektorerna, s innehåller singulärvärdena och VT innehåller de högra singulärvektorerna (transponerade);
  • Koden skriver ut var och en av dessa komponenter till konsolen så att du kan se resultatet av uppdelningen.

Detta exempel hjälper dig att förstå hur en matris kan brytas ner i sina grundläggande delar, vilket är användbart för dataanalys, komprimering och att upptäcka mönster i din 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)
Kodbeskrivning
expand arrow

Denna kod visar hur man använder singulärvärdesuppdelning (SVD) för att dela upp en matris och sedan rekonstruera den med alla eller bara några av dess singulärvärden. Här är vad som händer steg för steg:

  1. Skapande av ursprunglig matris: Du definierar en matris A med hjälp av NumPy. Detta är utgångspunkten för SVD.
  2. Fullständig SVD: Funktionen svd från SciPy delar upp A i tre matriser: U, s och VT. Dessa representerar vänstra singulärvektorer, singulärvärden och högra singulärvektorer.
  3. Rekonstruktion med alla singulärvärden: Du skapar en diagonal matris S_full från singulärvärdena och multiplicerar matriserna (U, S_full, VT) för att återskapa den ursprungliga matrisen. Detta visar att SVD kan återskapa matrisen exakt när alla singulärvärden används.
  4. Trunkering för approximation: Du skapar en ny diagonal matris S_truncated som endast behåller det största singulärvärdet (resterande sätts till noll). Multiplikation av U, S_truncated och VT ger en approximation av den ursprungliga matrisen. Detta steg illustrerar dimensionsreduktion: genom att använda färre singulärvärden förenklas matrisen samtidigt som dess viktigaste egenskaper bevaras.
  5. Utdata: Koden skriver ut både den fullständigt rekonstruerade matrisen och den trunkerade versionen, så att du kan jämföra effekterna av dimensionsreduktion. Den trunkerade matrisen fångar huvudstrukturen men förlorar vissa detaljer, vilket visar hur SVD kan användas för datakomprimering och feature-extraktion.

SVD är särskilt värdefullt för dimensionsreduktion. Genom att endast behålla de största singulärvärdena och deras motsvarande vektorer kan du approximera den ursprungliga matrisen med betydligt färre dimensioner. Denna process tar bort brus och redundant information, vilket gör dina data enklare att visualisera och bearbeta samtidigt som de viktigaste egenskaperna bevaras. I praktiken innebär detta att du kan komprimera datamängder, snabba upp maskininlärningsalgoritmer och identifiera den underliggande strukturen i dina data.

1. Vilka är de tre matriserna som produceras av SVD?

2. Hur kan SVD användas för datakomprimering?

3. Vilken SciPy-funktion används för singulärvärdesuppdelning?

question mark

Vilka är de tre matriserna som produceras av SVD?

Vänligen välj det korrekta svaret

question mark

Hur kan SVD användas för datakomprimering?

Vänligen välj det korrekta svaret

question mark

Vilken SciPy-funktion används för singulärvärdesuppdelning?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 2. Kapitel 5
some-alt