Zufallsprojektion zur Dimensionsreduzierung

Beginner

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

Einführung

In diesem Lab werden wir die Zufallsprojektion bei der Dimensionsreduzierung mithilfe der scikit-learn-Bibliothek untersuchen. Die Zufallsprojektion ist eine Technik, die verwendet werden kann, um die Dimension von Daten zu reduzieren, während die paarweisen Distanzen zwischen den Proben beibehalten werden. Dies kann hilfreich sein, um die Rechenleistung zu beschleunigen und den Arbeitsspeicherbedarf in Machine-Learning-Algorithmen zu reduzieren.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

Lassen Sie uns beginnen, indem wir die erforderlichen Bibliotheken für dieses Lab importieren.

import numpy as np
from sklearn import random_projection

Generieren von zufälligen Daten

Als nächstes generieren wir einige zufällige Daten, die wir für die Dimensionsreduzierung verwenden können.

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

Hier generieren wir ein 2D-Array X mit 100 Proben und 10.000 Merkmalen. Dies wird unsere ursprünglichen hochdimensionalen Daten sein.

Gaußsche Zufallsprojektion

Nun wenden wir die Gaußsche Zufallsprojektion an, um die Dimension unserer Daten zu reduzieren.

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

In diesem Schritt erstellen wir eine Instanz der Klasse GaussianRandomProjection und passen sie auf unsere Daten X an. Anschließend wenden wir die Transformation an, indem wir die Methode fit_transform aufrufen. Das Ergebnis wird in der Variable X_new gespeichert.

Sparse Zufallsprojektion

Als nächstes probieren wir eine andere Art von Zufallsprojektion, die als sparse Zufallsprojektion bezeichnet wird.

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

Hier erstellen wir eine Instanz der Klasse SparseRandomProjection und wenden sie auf unsere Daten X mit der Methode fit_transform an. Das Ergebnis wird in der Variable X_new gespeichert.

Inverse Transformation

Zufallsprojektionstransformatoren haben die Option, die Inverse der Projektionsmatrix zu berechnen. Lassen Sie uns diese Funktion erkunden, indem wir die inverse Transformation auf unsere projizierten Daten anwenden.

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)

In diesem Schritt erstellen wir eine Instanz der Klasse SparseRandomProjection mit dem Parameter compute_inverse_components auf True gesetzt. Anschließend passen wir den Transformator auf unsere Daten X an und wenden die Transformation an. Schließlich berechnen wir die inverse Transformation, indem wir die Methode inverse_transform auf den projizierten Daten X_new aufrufen.

Verifikation

Um die Korrektheit der inversen Transformation zu verifizieren, können wir die ursprünglichen Daten X mit dem Ergebnis der inversen Transformation vergleichen.

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

Hier wenden wir die Transformation auf die invers transformierten Daten X_new_inversed an und überprüfen, ob sie mit den ursprünglichen projizierten Daten X_new übereinstimmen, indem wir die Funktion np.allclose verwenden.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit der scikit-learn-Bibliothek Zufallsprojektion zur Dimensionsreduzierung durchführt. Wir haben sowohl die Gaußsche Zufallsprojektion als auch die sparse Zufallsprojektionstechniken untersucht. Wir haben auch gelernt, wie man die inverse Transformation der projizierten Daten berechnet, um die ursprünglichen Daten wiederherzustellen. Zufallsprojektion kann ein nützliches Werkzeug zur Dimensionsreduzierung von hochdimensionalen Daten in Machine-Learning-Tasks sein.