Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Decomposição em Valores Singulares (SVD) | Álgebra Linear e Operações com Matrizes
Introdução ao SciPy

Decomposição em Valores Singulares (SVD)

Deslize para mostrar o menu

A Decomposição em Valores Singulares (SVD) é uma técnica matemática que ajuda a compreender e simplificar dados complexos. Imagine que você possui uma grande tabela de números—o SVD permite dividir essa tabela em três partes menores e mais fáceis de entender. Cada parte revela diferentes aspectos dos dados originais, como seus principais padrões ou características importantes.

O objetivo do SVD é tornar informações complicadas mais compreensíveis. Ao separar uma matriz (um conjunto de números organizados em grade) em componentes mais simples, é possível:

  • Identificar as tendências ou características mais importantes dos seus dados;
  • Remover ruídos ou detalhes irrelevantes que possam atrapalhar a análise;
  • Reduzir a quantidade de informação que precisa ser armazenada ou processada, tornando os cálculos mais rápidos e eficientes;
  • Descobrir relações ou estruturas ocultas que não são evidentes à primeira vista.

O SVD é utilizado em diversas tecnologias do dia a dia e áreas científicas. Por exemplo:

  • Na compressão de imagens, o SVD ajuda a reduzir o tamanho dos arquivos de fotos sem perder detalhes essenciais;
  • No processamento de música e fala, contribui para reduzir ruídos de fundo e clarear sinais;
  • Em sistemas de recomendação, como os usados por serviços de streaming, o SVD identifica padrões nas suas preferências para sugerir novos conteúdos;
  • No processamento de linguagem natural, auxilia na organização de tópicos ou significados semelhantes em grandes coleções de texto.

Compreender o SVD oferece uma ferramenta poderosa para trabalhar com dados, independentemente da sua área de atuação. Permite extrair insights valiosos, simplificar informações e melhorar o desempenho de sistemas digitais modernos.

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)
Descrição do Código
expand arrow

Este código demonstra como realizar a Decomposição em Valores Singulares (SVD) utilizando o SciPy em Python:

  • Inicia-se importando as bibliotecas necessárias: numpy para criar e manipular arrays, e scipy.linalg.svd para executar o SVD;
  • Uma matriz de exemplo A é criada como um array 2x3 de números;
  • A função svd decompõe a matriz A em três componentes: U, s e VT. Aqui, U contém os vetores singulares à esquerda, s armazena os valores singulares e VT contém os vetores singulares à direita (transpostos);
  • O código imprime cada um desses componentes no console para que você possa visualizar os resultados da decomposição.

Este exemplo auxilia na compreensão de como decompor uma matriz em suas partes fundamentais, o que é útil para análise de dados, compressão e identificação de padrões nos seus dados.

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)
Descrição do Código
expand arrow

Este código demonstra como usar a decomposição em valores singulares (SVD) para decompor uma matriz e depois reconstruí-la usando todos ou apenas alguns de seus valores singulares. Veja o que acontece passo a passo:

  1. Criação da Matriz Original: Você define uma matriz A usando o NumPy. Este é o ponto de partida para a SVD.
  2. SVD Completa: A função svd do SciPy divide A em três matrizes: U, s e VT. Estas representam, respectivamente, os vetores singulares à esquerda, os valores singulares e os vetores singulares à direita.
  3. Reconstrução com Todos os Valores Singulares: Você cria uma matriz diagonal S_full a partir dos valores singulares e multiplica as matrizes (U, S_full, VT) para reconstruir a matriz original. Isso mostra que a SVD pode reconstruir perfeitamente a matriz quando todos os valores singulares são utilizados.
  4. Truncamento para Aproximação: Você cria uma nova matriz diagonal S_truncated que mantém apenas o maior valor singular (define os demais como zero). Multiplicando U, S_truncated e VT resulta em uma aproximação da matriz original. Esta etapa demonstra a redução de dimensionalidade: ao usar menos valores singulares, a matriz é simplificada mantendo suas características mais importantes.
  5. Saída: O código imprime tanto a matriz totalmente reconstruída quanto a versão truncada, permitindo comparar os efeitos da redução de dimensionalidade. A matriz truncada preserva a estrutura principal, mas perde alguns detalhes, mostrando como a SVD pode ser usada para compressão de dados e extração de características.

A SVD é especialmente valiosa para redução de dimensionalidade. Ao manter apenas os maiores valores singulares e seus vetores correspondentes, é possível aproximar a matriz original com muito menos dimensões. Esse processo remove ruídos e informações redundantes, facilitando a visualização e o processamento dos dados, ao mesmo tempo em que preserva suas características mais importantes. Na prática, isso significa que é possível comprimir conjuntos de dados, acelerar algoritmos de aprendizado de máquina e revelar a estrutura subjacente dos dados.

1. Quais são as três matrizes produzidas pela SVD?

2. Como a SVD pode ser usada para compressão de dados?

3. Qual função do SciPy é usada para decomposição em valores singulares?

question mark

Quais são as três matrizes produzidas pela SVD?

Selecione a resposta correta

question mark

Como a SVD pode ser usada para compressão de dados?

Selecione a resposta correta

question mark

Qual função do SciPy é usada para decomposição em valores singulares?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 2. Capítulo 5
some-alt