Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Singulaariarvohajotelma (SVD) | Lineaarialgebra ja matriisitoiminnot
Johdatus SciPyyn

Singulaariarvohajotelma (SVD)

Pyyhkäise näyttääksesi valikon

Singular Value Decomposition (SVD) on matemaattinen menetelmä, joka auttaa ymmärtämään ja yksinkertaistamaan monimutkaista dataa. Kuvittele, että sinulla on suuri taulukko numeroita—SVD mahdollistaa tämän taulukon jakamisen kolmeen pienempään, helpommin ymmärrettävään osaan. Jokainen osa paljastaa erilaisia näkökulmia alkuperäisestä datasta, kuten sen pääkuviot tai tärkeimmät ominaisuudet.

SVD:n tarkoituksena on selkeyttää monimutkaista tietoa. Jakamalla matriisin (numeroiden ruudukko) yksinkertaisempiin osiin voit:

  • Tunnistaa datasi tärkeimmät trendit tai ominaisuudet;
  • Poistaa kohinaa tai epäolennaisia yksityiskohtia, jotka voivat hämmentää analyysiäsi;
  • Vähentää tallennettavan tai käsiteltävän tiedon määrää, mikä nopeuttaa ja tehostaa laskentaa;
  • Löytää piileviä yhteyksiä tai rakenteita, jotka eivät ole heti ilmeisiä.

SVD:tä käytetään monissa arkipäivän teknologioissa ja tieteellisillä aloilla. Esimerkiksi:

  • Kuvien pakkaamisessa SVD auttaa pienentämään valokuvatiedostojen kokoa ilman, että tärkeät yksityiskohdat katoavat;
  • Musiikin ja puheen käsittelyssä se auttaa vähentämään taustamelua ja selkeyttämään signaaleja;
  • Suositusjärjestelmissä, kuten suoratoistopalveluissa, SVD löytää mieltymyksistäsi kuvioita ehdottaakseen uutta sisältöä;
  • Luonnollisen kielen käsittelyssä se auttaa ryhmittelemään samankaltaisia aiheita tai merkityksiä suurissa tekstikokoelmissa.

SVD:n ymmärtäminen tarjoaa tehokkaan työkalun datan käsittelyyn taustasta riippumatta. Sen avulla voit löytää arvokkaita oivalluksia, yksinkertaistaa tietoa ja parantaa nykyaikaisten digitaalisten järjestelmien suorituskykyä.

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)
Koodin kuvaus
expand arrow

Tämä koodi havainnollistaa, kuinka Singular Value Decomposition (SVD) suoritetaan SciPy-kirjastolla Pythonissa:

  • Aloitat tuomalla tarvittavat kirjastot: numpy taulukoiden luomiseen ja käsittelyyn sekä scipy.linalg.svd SVD:n suorittamiseen;
  • Esimerkkimatriisi A luodaan 2x3-numeroiden taulukkona;
  • svd-funktio hajottaa matriisin A kolmeen osaan: U, s ja VT. Tässä U sisältää vasemmanpuoleiset singulaariarvovektorit, s sisältää singulaariarvot ja VT oikeanpuoleiset singulaariarvovektorit (transponoituina);
  • Koodi tulostaa jokaisen näistä osista konsoliin, jotta näet hajotuksen tulokset.

Tämä esimerkki auttaa ymmärtämään, kuinka matriisi voidaan jakaa perusosiinsa, mikä on hyödyllistä data-analyysissä, pakkauksessa ja piilevien kuvioiden löytämisessä datasta.

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)
Koodin kuvaus
expand arrow

Tämä koodi havainnollistaa, kuinka yksittäisarvohajotelmaa (SVD) käytetään matriisin hajottamiseen ja sen uudelleenrakentamiseen joko kaikilla tai vain osalla sen yksittäisarvoista. Vaiheet etenevät seuraavasti:

  1. Alkuperäisen matriisin luonti: Matriisi A määritellään NumPyn avulla. Tämä toimii SVD:n lähtökohtana.
  2. Täysi SVD: SciPyn svd-funktio jakaa A:n kolmeen matriisiin: U, s ja VT. Nämä edustavat vasempia yksittäisvektoreita, yksittäisarvoja ja oikeita yksittäisvektoreita.
  3. Uudelleenrakennus kaikilla yksittäisarvoilla: Diagonaalimatriisi S_full muodostetaan yksittäisarvoista ja matriisit (U, S_full, VT) kerrotaan yhteen alkuperäisen matriisin palauttamiseksi. Tämä osoittaa, että SVD voi täydellisesti palauttaa matriisin, kun kaikki yksittäisarvot käytetään.
  4. Trunkkaus approksimaatiota varten: Uusi diagonaalimatriisi S_truncated luodaan, jossa vain suurin yksittäisarvo säilytetään (muut asetetaan nollaksi). Matriisien U, S_truncated ja VT kertolasku antaa alkuperäisen matriisin approksimaation. Tämä vaihe havainnollistaa ulottuvuuden pienentämistä: käyttämällä vähemmän yksittäisarvoja matriisi yksinkertaistuu, mutta tärkeimmät ominaisuudet säilyvät.
  5. Tuloste: Koodi tulostaa sekä täysin uudelleenrakennetun matriisin että trunkatun version, jolloin voidaan vertailla ulottuvuuden pienentämisen vaikutuksia. Trunkattu matriisi säilyttää pääasiallisen rakenteen, mutta menettää joitakin yksityiskohtia, mikä osoittaa, miten SVD:tä voidaan käyttää tiedon pakkaamiseen ja piirteiden poimintaan.

SVD on erityisen hyödyllinen ulottuvuuden pienentämisessä. Säilyttämällä vain suurimmat yksittäisarvot ja niiden vastaavat vektorit voidaan alkuperäinen matriisi approksimoida huomattavasti pienemmällä ulottuvuudella. Tämä prosessi poistaa kohinaa ja redundanttia tietoa, jolloin dataa on helpompi visualisoida ja käsitellä, mutta sen tärkeimmät ominaisuudet säilyvät. Käytännössä tämä tarkoittaa, että voit pakata tietoaineistoja, nopeuttaa koneoppimisalgoritmeja ja paljastaa datan taustalla olevan rakenteen.

1. Mitkä ovat kolme SVD:n tuottamaa matriisia?

2. Miten SVD:tä voidaan käyttää datan pakkaamiseen?

3. Mikä SciPy-funktio suorittaa singulaariarvohajotelman?

question mark

Mitkä ovat kolme SVD:n tuottamaa matriisia?

Valitse oikea vastaus

question mark

Miten SVD:tä voidaan käyttää datan pakkaamiseen?

Valitse oikea vastaus

question mark

Mikä SciPy-funktio suorittaa singulaariarvohajotelman?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 5
some-alt