Harvojen Interaktiomatriisien Faktorisointi Yksittäisarvohajotelman Avulla
Pyyhkäise näyttääksesi valikon
SVD:n yleiskatsaus
Singular Value Decomposition eli SVD on tehokas matemaattinen menetelmä, jolla matriisi hajotetaan kolmeen yksinkertaisempaan matriisiin.
Suositusjärjestelmien yhteydessä SVD:tä käytetään usein suurten, harvaan täytettyjen käyttäjä-tuote-interaktiomatriisien analysointiin ja tiivistämiseen, jolloin voidaan paljastaa piileviä rakenteita ja yhteyksiä.
Matemaattinen selitys
Kun annetaan matriisi A (esimerkiksi käyttäjä-tuote-interaktiomatriisi), SVD hajottaa sen kolmeen matriisiin: U, Σ ja V^T. Yhteys voidaan esittää seuraavasti:
A = U Σ V^T
Uon matriisi, jonka sarakkeet ovat vasemmanpuoleisia singulaarivektoreita;Σ(Sigma) on diagonaalimatriisi, joka sisältää singulaariluvut;V^Ton matriisin transpoosi, jonka sarakkeet ovat oikeanpuoleisia singulaarivektoreita.
Tämän hajotelman avulla alkuperäinen matriisi voidaan approksimoida käyttämällä vain merkittävimpiä singulaarilukuja ja -vektoreita, mikä on erityisen hyödyllistä korkean ulottuvuuden ja harvan datan tapauksissa.
Rooli suosituksissa
Suositusjärjestelmissä käyttäjä-tuote-matriisit ovat tyypillisesti harvoja, ja niissä on paljon puuttuvia arvoja (esimerkiksi arvioimattomia tuotteita). SVD auttaa paljastamaan piileviä ominaisuuksia, jotka selittävät havaitut interaktiot. Rekonstruoimalla matriisi pienemmällä määrällä singulaarilukuja voidaan ennustaa puuttuvia arvoja—eli arvioida, miten käyttäjä mahdollisesti arvioisi tuotteen, johon hän ei ole vielä tutustunut. Tämä mahdollistaa yksilölliset suositukset pääteltyjen mieltymysten perusteella, ei pelkästään eksplisiittisen datan avulla.
SVD:n soveltaminen harvaan käyttäjä-tuote-matriisiin
Oletetaan, että käytössä on käyttäjä-tuote-matriisi, jossa rivit edustavat käyttäjiä ja sarakkeet tuotteita. Monet arvot puuttuvat (tai ovat nollia), mikä kuvaa tuntemattomia käyttäjäpreferenssejä. SVD:tä soveltamalla matriisi voidaan pelkistää olennaisiin osiin ja rekonstruoinnin avulla arvioida puuttuvat arvot, joita voidaan käyttää suositusten tuottamiseen.
123456789101112131415161718192021222324252627282930import numpy as np # Example sparse user-item matrix (0 indicates missing/unknown rating) user_item_matrix = np.array([ [5, 3, 0, 1], [4, 0, 0, 1], [1, 1, 0, 5], [0, 0, 5, 4], [0, 1, 5, 4], ]) # Filling missing values (0) with the mean of non-zero elements for SVD mean_value = user_item_matrix[user_item_matrix != 0].mean() filled_matrix = np.where(user_item_matrix == 0, mean_value, user_item_matrix) # Performing SVD U, sigma, VT = np.linalg.svd(filled_matrix, full_matrices=False) # Keeping only top 2 singular values for dimensionality reduction k = 2 U_k = U[:, :k] sigma_k = np.diag(sigma[:k]) VT_k = VT[:k, :] # Reconstructing the matrix using only top k components approx_matrix = np.dot(np.dot(U_k, sigma_k), VT_k) print('Original matrix with missing values filled:') print(np.round(filled_matrix, 2)) print('\nApproximated matrix (using top 2 singular values):') print(np.round(approx_matrix, 2))
1. Missä SVD:n matriisissa ovat singulaariarvot, jotka kuvaavat piilevien ominaisuuksien merkitystä?
2. Mikä on SVD:n ensisijainen tarkoitus käyttäjä-tuote-matriisille suositusjärjestelmissä?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme