Faktorisering av sparsomme interaksjonsmatriser ved bruk av singulærverdidekomponering
Sveip for å vise menyen
Oversikt over SVD
Singular Value Decomposition, eller SVD, er en kraftig matematisk teknikk for å dekomponere en matrise i tre enklere matriser.
I anbefalingssystemer brukes SVD ofte til å analysere og komprimere store, sparsomme bruker–vare-interaksjonsmatriser, og avdekker skjulte mønstre og relasjoner.
Matematisk forklaring
Gitt en matrise A (for eksempel en bruker–vare-interaksjonsmatrise), faktoriserer SVD denne i tre matriser: U, Σ og V^T. Forholdet kan beskrives som:
A = U Σ V^T
Uer en matrise der kolonnene er de venstre singulærvektorene;Σ(Sigma) er en diagonal matrise som inneholder singulærverdiene;V^Ter transponatet av en matrise der kolonnene er de høyre singulærvektorene.
Denne dekomponeringen gjør det mulig å tilnærme den opprinnelige matrisen ved å bruke kun de mest signifikante singulærverdiene og vektorene, noe som er spesielt nyttig i høy-dimensjonale, sparsomme datasett.
Rolle i anbefalinger
I anbefalingssystemer er bruker–vare-matriser vanligvis sparsomme, med mange manglende oppføringer (for eksempel produkter som ikke er vurdert). SVD hjelper ved å avdekke latente egenskaper som forklarer observerte interaksjoner. Ved å rekonstruere matrisen med et redusert antall singulærverdier, kan man predikere manglende verdier—altså estimere hvordan en bruker kan komme til å vurdere et produkt de ennå ikke har interagert med. Dette muliggjør personlige anbefalinger basert på antatte preferanser, ikke bare eksplisitte data.
Bruk av SVD på en sparsom bruker–vare-matrise
Anta at du har en bruker–vare-matrise der rader representerer brukere og kolonner representerer varer. Mange oppføringer mangler (eller er satt til null), noe som representerer ukjente brukerpreferanser. Ved å bruke SVD kan du redusere matrisen til dens essensielle komponenter og bruke rekonstruksjonen til å estimere manglende verdier, som deretter kan benyttes til å generere anbefalinger.
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. Hvilken matrise i SVD inneholder singularverdiene som fanger opp viktigheten til hver latente egenskap?
2. Hva er hovedformålet med å bruke SVD på en bruker–vare-matrise i anbefalingssystemer?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår