Fatoração de Matrizes de Interação Esparsas Usando Decomposição em Valores Singulares
Deslize para mostrar o menu
Visão Geral do SVD
Singular Value Decomposition, ou SVD, é uma técnica matemática poderosa para decompor uma matriz em três matrizes mais simples.
No contexto de sistemas de recomendação, o SVD é frequentemente utilizado para analisar e comprimir grandes matrizes de interação usuário-item esparsas, revelando padrões e relações ocultas.
Explicação Matemática
Dada uma matriz A (como uma matriz de interação usuário-item), o SVD a fatoriza em três matrizes: U, Σ e V^T. A relação pode ser descrita como:
A = U Σ V^T
Ué uma matriz cujas colunas são os vetores singulares à esquerda;Σ(Sigma) é uma matriz diagonal contendo os valores singulares;V^Té a transposta de uma matriz cujas colunas são os vetores singulares à direita.
Essa decomposição permite aproximar a matriz original utilizando apenas os valores e vetores singulares mais significativos, o que é especialmente útil em cenários de dados esparsos e de alta dimensão.
Papel nas Recomendações
Em sistemas de recomendação, as matrizes usuário-item são tipicamente esparsas, com muitas entradas ausentes (por exemplo, produtos não avaliados). O SVD auxilia ao revelar características latentes que explicam as interações observadas. Ao reconstruir a matriz com um número reduzido de valores singulares, é possível prever valores ausentes—essencialmente estimando como um usuário avaliaria um item com o qual ainda não interagiu. Isso possibilita recomendações personalizadas baseadas em preferências inferidas, e não apenas em dados explícitos.
Aplicando SVD a uma Matriz Usuário-Item Esparsa
Suponha que você tenha uma matriz usuário-item onde as linhas representam usuários e as colunas representam itens. Muitas entradas estão ausentes (ou definidas como zero), representando preferências desconhecidas dos usuários. Ao aplicar o SVD, é possível reduzir a matriz aos seus componentes essenciais e utilizar a reconstrução para estimar valores ausentes, que podem então ser usados para gerar recomendações.
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. Qual matriz na SVD contém os valores singulares que capturam a importância de cada característica latente?
2. Qual é o principal objetivo de aplicar SVD a uma matriz usuário-item em sistemas de recomendação?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo