Faktorisering av glesa interaktionsmatriser med singulärvärdesuppdelning
Svep för att visa menyn
Översikt av SVD
Singular Value Decomposition, eller SVD, är en kraftfull matematisk teknik för att dekomponera en matris i tre enklare matriser.
Inom rekommendationssystem används SVD ofta för att analysera och komprimera stora, glesa användar-objekt-interaktionsmatriser, vilket avslöjar dolda mönster och samband.
Matematisk förklaring
Givet en matris A (till exempel en användar-objekt-interaktionsmatris), faktoriserar SVD den i tre matriser: U, Σ och V^T. Sambandet kan beskrivas som:
A = U Σ V^T
Uär en matris vars kolumner är de vänstra singulärvektorerna;Σ(Sigma) är en diagonal matris som innehåller singulärvärdena;V^Tär transponatet av en matris vars kolumner är de högra singulärvektorerna.
Denna dekomposition gör det möjligt att approximera den ursprungliga matrisen med endast de mest betydelsefulla singulärvärdena och vektorerna, vilket är särskilt användbart i högdimensionella, glesa datasammanhang.
Roll i rekommendationer
I rekommendationssystem är användar-objekt-matriser vanligtvis glesa, med många saknade värden (till exempel ej betygsatta produkter). SVD hjälper till genom att identifiera latenta egenskaper som förklarar observerade interaktioner. Genom att rekonstruera matrisen med ett reducerat antal singulärvärden kan man förutsäga saknade värden—det vill säga uppskatta hur en användare kan komma att betygsätta ett objekt de ännu inte har interagerat med. Detta möjliggör personliga rekommendationer baserade på härledda preferenser snarare än enbart explicit data.
Tillämpning av SVD på en gles användar-objekt-matris
Anta att du har en användar-objekt-matris där rader representerar användare och kolumner representerar objekt. Många värden saknas (eller är satta till noll), vilket representerar okända användarpreferenser. Genom att tillämpa SVD kan du reducera matrisen till dess väsentliga komponenter och använda rekonstruktionen för att uppskatta saknade värden, vilka sedan kan användas för att generera rekommendationer.
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. Vilken matris i SVD innehåller singulärvärdena som fångar vikten av varje latent egenskap?
2. Vad är det huvudsakliga syftet med att använda SVD på en användar-item-matris i rekommendationssystem?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal