Réduction de la dimensionalité par projection aléatoire

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

Dans ce laboratoire, nous explorerons la projection aléatoire dans la réduction de la dimensionalité à l'aide de la bibliothèque scikit-learn. La projection aléatoire est une technique qui peut être utilisée pour réduire la dimensionalité des données tout en conservant les distances binaires entre les échantillons. Cela peut être utile pour accélérer les calculs et réduire la consommation de mémoire dans les algorithmes d'apprentissage automatique.

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 la pratique.

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 des commentaires après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques requises

Commencez par importer les bibliothèques requises pour ce laboratoire.

import numpy as np
from sklearn import random_projection

Générez des données aléatoires

Ensuite, générons quelques données aléatoires que nous pouvons utiliser pour la réduction de la dimensionalité.

X = np.random.rand(100, 10000)

Ici, nous générons un tableau 2D X avec 100 échantillons et 10 000 caractéristiques. Ceci sera nos données originales à haute dimension.

Projection aléatoire gaussienne

Maintenant, appliquons la projection aléatoire gaussienne pour réduire la dimensionalité de nos données.

transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X)

Dans cette étape, nous créons une instance de la classe GaussianRandomProjection et l'ajustons à nos données X. Ensuite, nous appliquons la transformation en appelant la méthode fit_transform. Le résultat est stocké dans la variable X_new.

Projection aléatoire sparse

Ensuite, essayons un autre type de projection aléatoire appelé projection aléatoire sparse.

transformer = random_projection.SparseRandomProjection()
X_new = transformer.fit_transform(X)

Ici, nous créons une instance de la classe SparseRandomProjection et l'appliquons à nos données X en utilisant la méthode fit_transform. Le résultat est stocké dans la variable X_new.

Transformée inverse

Les transformateurs de projection aléatoire ont une option pour calculer l'inverse de la matrice de projection. Explorons cette fonctionnalité en appliquant la transformée inverse à nos données projetées.

transformer = random_projection.SparseRandomProjection(compute_inverse_components=True)
X_new = transformer.fit_transform(X)

## Compute the inverse transform
X_new_inversed = transformer.inverse_transform(X_new)

Dans cette étape, nous créons une instance de la classe SparseRandomProjection avec le paramètre compute_inverse_components défini sur True. Ensuite, nous ajustons le transformateur à nos données X et appliquons la transformation. Enfin, nous calculons la transformée inverse en appelant la méthode inverse_transform sur les données projetées X_new.

Vérification

Pour vérifier la correction de la transformée inverse, nous pouvons comparer les données originales X avec le résultat de la transformée inverse.

X_new_again = transformer.transform(X_new_inversed)
np.allclose(X_new, X_new_again)

Ici, nous appliquons la transformation aux données transformées inversement X_new_inversed et vérifions si elle est égale aux données projetées originales X_new en utilisant la fonction np.allclose.

Sommaire

Dans ce laboratoire, nous avons appris à effectuer une projection aléatoire pour la réduction de la dimensionalité à l'aide de la bibliothèque scikit - learn. Nous avons exploré les techniques de projection aléatoire gaussienne et de projection aléatoire sparse. Nous avons également appris à calculer la transformée inverse des données projetées pour récupérer les données originales. La projection aléatoire peut être un outil utile pour réduire la dimensionalité des données à haute dimension dans les tâches d'apprentissage automatique.