Récupération de signal sparse avec la Recherche Orthogonale Itérative

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

La Recherche de poursuite orthogonale (OMP) est une méthode pour retrouver un signal sparse à partir d'une mesure bruyante encodée avec un dictionnaire. Dans ce laboratoire, nous utiliserons scikit-learn pour implémenter l'OMP afin de retrouver un signal sparse à partir d'une mesure bruyante.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49232{{"Récupération de signal sparse avec la Recherche Orthogonale Itérative"}} sklearn/datasets -.-> lab-49232{{"Récupération de signal sparse avec la Recherche Orthogonale Itérative"}} ml/sklearn -.-> lab-49232{{"Récupération de signal sparse avec la Recherche Orthogonale Itérative"}} end

Importation des bibliothèques

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import OrthogonalMatchingPursuit
from sklearn.linear_model import OrthogonalMatchingPursuitCV
from sklearn.datasets import make_sparse_coded_signal

Générer les données

n_components, n_features = 512, 100
n_nonzero_coefs = 17

## générer les données

## y = Xw
## |x|_0 = n_nonzero_coefs

y, X, w = make_sparse_coded_signal(
    n_samples=1,
    n_components=n_components,
    n_features=n_features,
    n_nonzero_coefs=n_nonzero_coefs,
    random_state=0,
)
X = X.T

(idx,) = w.nonzero()

## altérer le signal propre
y_noisy = y + 0.05 * np.random.randn(len(y))

Tracer le signal sparse

plt.figure(figsize=(7, 7))
plt.subplot(4, 1, 1)
plt.xlim(0, 512)
plt.title("Signal sparse")
plt.stem(idx, w[idx])

Tracer la reconstruction sans bruit

omp = OrthogonalMatchingPursuit(n_nonzero_coefs=n_nonzero_coefs)
omp.fit(X, y)
coef = omp.coef_
(idx_r,) = coef.nonzero()
plt.subplot(4, 1, 2)
plt.xlim(0, 512)
plt.title("Signal reconstitué à partir de mesures sans bruit")
plt.stem(idx_r, coef[idx_r])

Tracer la reconstruction bruyante

omp.fit(X, y_noisy)
coef = omp.coef_
(idx_r,) = coef.nonzero()
plt.subplot(4, 1, 3)
plt.xlim(0, 512)
plt.title("Signal reconstitué à partir de mesures bruyantes")
plt.stem(idx_r, coef[idx_r])

Tracer la reconstruction bruyante avec le nombre de non-nuls défini par la validation croisée (CV)

omp_cv = OrthogonalMatchingPursuitCV()
omp_cv.fit(X, y_noisy)
coef = omp_cv.coef_
(idx_r,) = coef.nonzero()
plt.subplot(4, 1, 4)
plt.xlim(0, 512)
plt.title("Signal reconstitué à partir de mesures bruyantes avec la validation croisée (CV)")
plt.stem(idx_r, coef[idx_r])

plt.subplots_adjust(0.06, 0.04, 0.94, 0.90, 0.20, 0.38)
plt.suptitle("Récupération de signal sparse avec la Recherche Orthogonale Itérative", fontsize=16)
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser la Recherche Orthogonale Itérative (OMP) pour récupérer un signal sparse à partir d'une mesure bruyante encodée avec un dictionnaire. Nous avons utilisé scikit-learn pour implémenter l'OMP et générer un signal codé sparse. Nous avons également tracé le signal sparse, la reconstruction sans bruit, la reconstruction bruyante et la reconstruction bruyante avec le nombre de non-zeros défini par la validation croisée (CV).