Spektralclustering in Python

Spektralclustering in Python
Das Clustering ist ein weit verbreitetes Problem mit maschinellem Lernen, bei dem ähnliche Datenpunkte zusammengeklustert werden, um einen Satz von Clustern zu bilden. Es wird häufig in Anwendungen wie Empfehlungssystemen, Anomalieerkennung und Kundensegmentierung verwendet. Wir werden eine moderne Clustering -Technik durchlaufen Spektrales Clustering und seine Implementierung in Python mit der Sklearn Bibliothek.

Was ist Clustering?

Das Clustering ist ein unbeaufsichtigtes Problem des maschinellen Lernens, bei dem man „M“ -Bobachtungen in „K“ -Cluster unterteilt, wobei Punkte in demselben Cluster extrem ähnlich sind und Punkte in verschiedenen Clustern sehr unterschiedlich sind. Probleme wie Kundensegmentierung, Empfehlungssysteme, Anomalieerkennung usw., werden vom Clustering gelöst. Möglicherweise sind Sie mit dem K-Means-Clustering-Algorithmus vertraut, in dem wir keine Etiketten haben und jeden Datenpunkt in seinen Cluster legen müssen. Die spektrale Clustering-Methode wird verwendet, um das gleiche Ziel wie die K-Means-Clustering-Methode zu erreichen, jedoch mit einem draphbasierten Ansatz. Das folgende Bild zeigt die drei voneinander getrennten Cluster und haben ähnliche Punkte zusammen.

Was ist K-Means Clustering?

K-Means Clustering beinhaltet die Identifizierung der K-Cluster des Datensatzes, die sich voneinander unterscheiden. Es werden nur unabhängige Variablen verwendet, um Cluster zu erstellen. K bedeutet, dass Clustering ein unbeaufsichtigter Lernalgorithmus ist. Die Datenpunkte im selben Cluster sind ziemlich ähnlich, während die Datenpunkte in verschiedenen Clustern sehr unterschiedlich sind. Sie beginnen mit K -zufälligen Zentren und weisen den ihnen die Elemente zu, die ihnen am nächsten stehen. Das Zentrum jeder Sammlung wird dann neu berechnet, was zu neuen K -Zentren führt. Sie tun dies weiter, bis die Anzahl der Iterationen einen vorgegebenen Schwellenwert erreicht, oder das Zentrum der Cluster bewegt sich kaum. Die Ellbogenmethode wird üblicherweise verwendet, um den Wert von k zu bestimmen.

Klassifizierung vs. Clustering

Die Klassifizierung ist das Ergebnis des überwachten Lernens, was bedeutet, dass das System ein bekanntes Etikett generiert. Wenn Sie beispielsweise einen Bildklassifizierer konstruiert haben, heißt es: „Dies ist ein Hund, dies ist eine Katze“, die auf Proben von Hunden und Katzen basiert, die Sie ihn gezeigt haben.

Clustering ist die Folge des unbeaufsichtigten Lernens, was impliziert, dass Sie viele Beispiele gesehen haben, aber keine Beschriftungen für sie erhalten haben. Zum Beispiel können wir Clustering verwenden, um die Kunden der gleichen Art von Kunden verschiedener Art zu segmentieren. Dies ist eine weit verbreitete Problemanweisung, die mit Clustering gelöst wird.

Was ist spektraler Clustering -Algorithmus?

Spektrales Clustering ist ein moderner Clustering -Algorithmus, der auf der Graphentheorie basiert. Es hat mehrere klassische Clustering -Ansätze übertroffen und entwickelt sich immer noch weiter. Dieser Algorithmus nimmt jeden Datenpunkt als Graphenknoten an und verwendet eine Diagrammpartitionierung, um das Clustering -Problem zu lösen.

Arbeiten des spektralen Clustering

Erstellen einer Diagrammdatenstruktur

Sie können jeden Datensatz als Punktwolke visualisieren, mit M Punkte in N Maße. Sie können eine Grafik aus diesen Punkten erstellen, wobei die Knoten die Punkte und die Kanten sind (dargestellt von durch w) Gewichtet werden, wie ähnlich die Punkte sind. Sobald wir unsere Daten in Form eines Diagramms haben, können wir eine Adjazenzmatrix erzeugen, indem wir in jeder Spalte der Matrix einfach das Gewicht der Kante zwischen den Knoten „I“ und „J“ eingeben. Das ist ein M X M Symmetrische Matrix. W ist der Name für die Adjazenzmatrix.

Projizieren der Daten

In diesem Schritt werden die Daten in einen niedrigerdimensionalen Raum projiziert, um die Punkte im unteren Dimensionsraum näher zueinander zu bringen. Die Formel gibt den Grad jedes Knotens an:

Die Gradmatrix wird dann unter Verwendung der Formel berechnet:

Der Laplace des Diagramms kann mit der Formel berechnet werden L = d-w. Wir können das Spektrum dieser Matrix oder ihre Eigenvektoren berechnen, die von den am wichtigsten bis am wenigsten angeordneten angeordnet sind, jetzt, da wir den Laplacian der Grafik haben. Wenn Sie die am wenigsten signifikanten Eigenevektoren mit „k“ übernehmen. Die kleinsten Eigenwerte sind mit den am wenigsten signifikanten Eigenvektoren verwandt. Dies ist eine Art von Dimensionalitätsreduzierung, die nicht linear ist.

Clustering der Daten

Dieser Schritt beinhaltet hauptsächlich das Clustering der reduzierten dimensionalen Daten unter Verwendung von K-Means-Clustering oder einer anderen klassischen Clustering-Technik. Die normalisierte Graph -Laplace -Matrix wird zuerst jedem Knoten zugeordnet. Die Daten werden dann unter Verwendung einer beliebigen Standardmethode geklustert.

In einem idealen Szenario würden Sie erwarten, dass Ihre Daten nicht vollständig verbunden sind, mit unterschiedlichen verbundenen Komponenten für jeden Cluster. In der Praxis ist dies jedoch selten der Fall: Es hängt von verschiedenen Dingen ab, einschließlich der Daten selbst und wie Sie Ihre Adjazenzgrafik entwerfen. In Bezug auf die Effizienz werden die besseren Cluster getrennt, desto mehr spektraleres Clustering verhält sich vorhersehbar: Der Diagramm hat mehr als eine verbunden K-Means im Raum, der durch die ersten K-Eigenvektoren des Graph-Laplace erstellt wurde, liefert ziemlich zufriedenstellende Ergebnisse. Je näher die Cluster sind, desto weiter sind die Eigenwerte aus 0 und desto näher sind die Punkte im Eigenschaft an unterschiedliche Cluster.

K-means vs. Spektrales Clustering

Betrachten Sie die unten angegebenen Daten.

Selbst wenn die tatsächliche Anzahl von Clustern K dem Algorithmus bekannt ist, wird K-Means die obigen Daten nicht erfolgreich abwickeln. Dies liegt daran, dass K-Means ein guter Datenclustering-Algorithmus für die Suche nach kugelförmigen Gruppen wie den folgenden ist:

wo alle Cluster -Mitglieder nahe beieinander liegen (im euklidischen Sinne). Graph-Clustering-Ansätze wie spektrales Clustering dagegen nicht direkt in ihren nativen Datenraum, sondern erstellen Sie stattdessen eine Ähnlichkeitsmatrix mit dem (i, j)th Zeile, die einen Ähnlichkeitsabstand zwischen dem i darstelltth und jth Datenpunkte in Ihrem Datensatz.

In gewisser Weise ist die spektrale Clusterbildung allgemeiner (und leistungsstarker) als K-Means, da die spektrale Clusterbildung immer dann anwendbar ist, wenn K-Means nicht sind (verwenden Sie einfach eine einfache euklidische Entfernung als Ähnlichkeitsmessung). Das Gegenteil ist jedoch nicht wahr. Bei der Auswahl einer dieser Strategien über die andere sind einige praktische Bedenken zu beachten. Die Eingangsdatenmatrix wird mit K-Mittelfaktor faktorisiert, während die Laplace-Matrix mit spektralem Clustering faktorisiert wird (eine von der Ähnlichkeitsmatrix abgeleitete Matrix).

Implementierung der spektralen Clusterbildung mit Python

Importieren der Bibliotheken

von Sklearn.Cluster -Import -Spektralklustering
Numph als NP importieren
Lesen der Daten
X = np.Array ([[1, 1], [2, 1], [1, 0],
[4, 7], [3, 5], [3, 6]])

Beachten Sie, dass wir in diesem Beispiel die Daten mit weniger Abmessungen genommen haben. Wenn Sie über größere dimensionale Daten verfügen, können Sie die Hauptkomponentenanalyse (PCA) anwenden, um die Datenabmessungen zu reduzieren.

Initialisierung unseres Modells

model = spectralclustering (n_clusters = 2,
ordnen_labels = 'diskretisieren',
random_state = 0).fit (x)

Holen Sie sich Etiketten jedes Datenpunkts

Druck (Modell.Labels_)

Ausgang

Array ([1, 1, 1, 0, 0, 0])

Vorteile des spektralen Clustering

  • Die spektrale Clusterbildung geht nicht über die Form der Daten aus. Es funktioniert gut bei allen Arten von Datenverteilungen von Daten. Andere klassische Algorithmen wie K-Means nehmen die Form der Daten als sphärisch an.
  • Es funktioniert ziemlich gut, wenn die Beziehungen grob transitiv sind (wie Ähnlichkeit).
  • Wir brauchen nicht den gesamten Datensatz für Cluster. Nur eine Ähnlichkeits-/Entfernungsmatrix oder vielleicht nur der Laplace, wird ausreichen.

Nachteile des spektralen Clustering

  • Berechnung von Eigenvektoren ist der Engpass; Daher ist es für wirklich große Datensätze teuer.
  • Funktioniert nicht gut mit lauten Datensätzen.
  • Die Anzahl der Cluster (k) muss im Voraus entschieden werden.

Anwendungsfälle von spektralem Clustering

  • Bildsegmentierung
  • Kundensegmentierung
  • Entitätslösung
  • Proteinsequenzen spektraler Clustering

Abschluss

Wir haben gesehen, wie wir spektrale Clustering verwenden können, um unsere Datenpunkte zu clustert. Wir projizieren zuerst die Datenpunkte in eine Graphendatenstruktur, reduzieren die Abmessungen der Daten und wenden dann die herkömmliche Clustering -Technik auf die reduzierten Daten an. Wir haben später gesehen, wie leicht dieser komplexe Algorithmus in Python mit einigen Codezeilen implementiert werden konnte.