Descomponiendo Señales en Componentes

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos el tema de la descomposición de señales en componentes utilizando técnicas de factorización de matrices proporcionadas por scikit-learn. Cubriremos técnicas como el Análisis de Componentes Principales (PCA, por sus siglas en inglés), el Análisis de Componentes Independientes (ICA, por sus siglas en inglés), la Factorización de Matriz No Negativa (NMF, por sus siglas en inglés), y más. Este laboratorio lo guiará a través del proceso de descomponer señales en sus componentes paso a paso.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos para que Jupyter Notebook termine de cargar. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje comentarios después de la sesión y lo resolveremos rápidamente para usted.

Análisis de Componentes Principales (PCA)

PCA exacto e interpretación probabilística

El Análisis de Componentes Principales (PCA, por sus siglas en inglés) se utiliza para descomponer un conjunto de datos multivariados en un conjunto de componentes ortogonales sucesivos que expliquen la mayor cantidad posible de varianza. El PCA se puede implementar utilizando la clase PCA de scikit-learn. El método fit se utiliza para aprender los componentes, y el método transform se puede utilizar para proyectar nuevos datos sobre estos componentes.

from sklearn.decomposition import PCA

## Crea un objeto PCA con n_components como el número de componentes deseados
pca = PCA(n_components=2)

## Ajusta el modelo PCA a los datos
pca.fit(data)

## Transforma los datos proyectándolos sobre los componentes aprendidos
transformed_data = pca.transform(data)

Análisis de Componentes Independientes (ICA)

ICA para la separación de fuentes ciegas

El Análisis de Componentes Independientes (ICA, por sus siglas en inglés) se utiliza para separar señales mezcladas en sus componentes de origen original. Asume que los componentes son estadísticamente independientes y se pueden extraer a través de un proceso de desmezcla lineal. El ICA se puede implementar utilizando la clase FastICA de scikit-learn.

from sklearn.decomposition import FastICA

## Crea un objeto ICA con n_components como el número de componentes deseados
ica = FastICA(n_components=2)

## Ajusta el modelo ICA a las señales mezcladas
ica.fit(mixed_signals)

## Separa las señales mezcladas en los componentes de origen original
source_components = ica.transform(mixed_signals)

Factorización de Matriz No Negativa (NMF)

NMF con la norma de Frobenius

La Factorización de Matriz No Negativa (NMF, por sus siglas en inglés) es un enfoque alternativo para la descomposición que asume datos y componentes no negativos. Encuentra una descomposición de los datos en dos matrices de elementos no negativos optimizando la distancia entre los datos y el producto matricial de las dos matrices. La NMF se puede implementar utilizando la clase NMF de scikit-learn.

from sklearn.decomposition import NMF

## Crea un objeto NMF con n_components como el número de componentes deseados
nmf = NMF(n_components=2)

## Ajusta el modelo NMF a los datos
nmf.fit(data)

## Descompone los datos en las dos matrices no negativas
matrix_W = nmf.transform(data)
matrix_H = nmf.components_

Asignación Latente de Dirichlet (LDA)

LDA para modelado de temas

La Asignación Latente de Dirichlet (LDA, por sus siglas en inglés) es un modelo probabilístico generativo utilizado para descubrir temas abstractos a partir de una colección de documentos. La LDA asume que los documentos son una mezcla de temas y que las palabras son generadas por estos temas. La LDA se puede implementar utilizando la clase LatentDirichletAllocation de scikit-learn.

from sklearn.decomposition import LatentDirichletAllocation

## Crea un objeto LDA con n_components como el número de temas deseados
lda = LatentDirichletAllocation(n_components=5)

## Ajusta el modelo LDA a la matriz documento-término
lda.fit(document_term_matrix)

## Obtiene la matriz tema-término y la matriz documento-tema
topic_term_matrix = lda.components_
document_topic_matrix = lda.transform(document_term_matrix)

Resumen

En este laboratorio, exploramos varias técnicas para descomponer señales en sus componentes. Aprendimos sobre el Análisis de Componentes Principales (PCA), el Análisis de Componentes Independientes (ICA), la Factorización de Matriz No Negativa (NMF) y la Asignación Latente de Dirichlet (LDA). Estas técnicas se utilizan ampliamente en diversas aplicaciones, como la reducción de dimensionalidad, la separación de fuentes ciegas, el modelado de temas y más. Al aplicar estas técnicas, podemos obtener información y extraer información significativa de señales y conjuntos de datos de alta dimensionalidad.