Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

王林
王林nach vorne
2023-04-12 19:28:041078Durchsuche

Der Label-Propagation-Algorithmus ist ein halbüberwachter Algorithmus für maschinelles Lernen, der zuvor unbeschrifteten Datenpunkten Labels zuweist. Um diesen Algorithmus beim maschinellen Lernen zu verwenden, verfügt nur ein kleiner Teil der Beispiele über Beschriftungen oder Klassifizierungen. Diese Beschriftungen werden während der Modellierungs-, Anpassungs- und Vorhersageprozesse des Algorithmus an unbeschriftete Datenpunkte weitergegeben.

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading


LabelPropagation

LabelPropagation ist ein schneller Algorithmus zum Auffinden von Communities in Diagrammen. Es verwendet lediglich die Netzwerkstruktur als Leitfaden zur Erkennung dieser Verbindungen und erfordert keine vordefinierte Zielfunktion oder A-priori-Informationen über die Bevölkerung. Die Tag-Weitergabe erfolgt durch die Weitergabe von Tags im Netzwerk und den Aufbau von Verbindungen auf der Grundlage des Tag-Weitergabeprozesses.

Schließende Tags erhalten normalerweise das gleiche Tag. Ein einzelnes Label kann in dicht verbundenen Knotengruppen dominieren, hat jedoch in dünn verbundenen Regionen Probleme. Beschriftungen werden auf eine eng verbundene Gruppe von Knoten beschränkt, und wenn der Algorithmus abgeschlossen ist, können die Knoten, die am Ende dieselbe Beschriftung haben, als Teil derselben Verbindung betrachtet werden. Der Algorithmus nutzt die Graphentheorie wie folgt:-

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Der LabelPropagation-Algorithmus funktioniert folgendermaßen:-

  • Jeder Knoten wird mit einer eindeutigen Bezeichnung initialisiert.
  • Diese Tags verbreiten sich im Internet.
  • In jeder Ausbreitungsiteration aktualisiert jeder Knoten seine Bezeichnung auf die Bezeichnung, zu der die maximale Anzahl an Nachbarn gehört.
  • Der Label-Propagation-Algorithmus erreicht Konvergenz, wenn jeder Knoten die Mehrheit der Labels seiner Nachbarn hat.
  • Der Etikettenweitergabealgorithmus stoppt, wenn die Konvergenz erreicht ist oder eine benutzerdefinierte maximale Anzahl von Iterationen erreicht ist.

Um zu demonstrieren, wie der LabelPropagation-Algorithmus funktioniert, verwenden wir den Pima Indians-Datensatz. Beim Erstellen des Programms habe ich die zum Ausführen erforderlichen Bibliotheken importiert.

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Kopieren Sie eine Kopie der Daten und verwenden Sie die Beschriftungsspalte als Trainingsziel

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Visualisierung mit Matplotlib:

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Randomisieren Sie 70 % der Beschriftungen im Datensatz mithilfe eines Zufallszahlengenerators. Anschließend werden zufällige Beschriftungen zugewiesen -1:-

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Nach der Vorverarbeitung der Daten definieren Sie die abhängigen und unabhängigen Variablen, nämlich y bzw. X. Die y-Variable ist die letzte Spalte und die

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Werfen wir einen Blick auf einen anderen Algorithmus, LabelSpreading.

LabelSpreadingZwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

LabelSpreading ist auch eine beliebte halbüberwachte Lernmethode. Erstellen Sie ein Diagramm, das die Beispiele im Trainingsdatensatz verbindet, und übertragen Sie bekannte Beschriftungen über die Kanten des Diagramms, um unbeschriftete Beispiele zu kennzeichnen.

LabelSpreading wurde 2003 von Dengyong Zhou et al. in ihrer Arbeit mit dem Titel „Learning with Local and Global Consistency“ vorgeschlagen. Der Schlüssel zum halbüberwachten Lernen ist die apriorische Annahme der Konsistenz, was bedeutet, dass benachbarte Punkte wahrscheinlich dieselbe Bezeichnung haben und Punkte auf derselben Struktur (oft als Cluster-Mannigfaltigkeit bezeichnet) sehr wahrscheinlich dieselbe Bezeichnung haben.

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreadingLabelSpreading kann als die regulierte Form von LabelPropagation betrachtet werden. In der Graphentheorie ist die Laplace-Matrix die Matrixdarstellung des Graphen. Die Formel der Laplace-Matrix lautet:

L ist die Laplace-Matrix, D ist die Gradmatrix und A ist die Adjazenzmatrix.

Das Folgende ist ein einfaches Beispiel für die Beschriftung eines ungerichteten Diagramms und das Ergebnis seiner Laplace-Matrix

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

In diesem Artikel wird der Sonardatensatz verwendet, um zu demonstrieren, wie die LabelSpreading-Funktion von sklearn verwendet wird.

Hier gibt es mehr Bibliotheken als oben, also erklären Sie kurz:

  • Numpy führt numerische Berechnungen durch und erstellt Numpy-Arrays
  • Pandas verarbeitet Daten
  • Sklearn führt maschinelle Lernoperationen durch
  • Matplotlib und Seaborn zur Visualisierung von Daten, zur Visualisierung von Daten Statistische Informationen
  • Warnung, wird verwendet, um Warnungen zu ignorieren, die während der Programmausführung erscheinen

Nachdem der Import abgeschlossen ist, verwenden Sie Pandas, um in den Datensatz einzulesen:

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Ich habe die Heatmap mit Seaborn erstellt:-

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Führen Sie zunächst eine einfache Vorverarbeitung durch und löschen Sie stark korrelierte Spalten und reduzieren Sie so die Anzahl der Spalten von 61 auf 58:

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Dann mischen und ordnen Sie die Daten neu, sodass Vorhersagen im verschlüsselten Datensatz normalerweise besser sind, um genau zu sein eine Kopie des Datensatzes und definieren Sie y_orig als Trainingsziel:

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Verwenden Sie matplotlib, um ein 2D-Streudiagramm der Datenpunkte zu zeichnen:-

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Verwenden Sie einen Zufallszahlengenerator, um 60 % des Datensatzes zu randomisieren . Anschließend werden zufällige Beschriftungen zugewiesen -1:-

Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Nach der Vorverarbeitung der Daten definieren Sie die abhängigen und unabhängigen Variablen, nämlich y bzw. X. Die y-Variable ist die letzte Spalte und die

Mit dieser Methode können wir eine Genauigkeit von 87,98 % erreichen: - Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

Einfacher Vergleich: 1. Labelspreading enthält Alpha = 0,2, Alpha wird als Klemmkoeffizient bezeichnet und bezieht sich auf die Verwendung der Informationen seiner Nachbarn. Es handelt sich nicht um die relative Menge der ursprünglichen Beschriftung. Wenn es 0 ist, bedeutet dies, dass die anfänglichen Beschriftungsinformationen beibehalten werden. Wenn es 1 ist, bedeutet dies, dass bei der Einstellung von Alpha=0,2 immer 80 % der ursprünglichen Beschriftung beibehalten werden Informationen;

2. Verwenden Sie Labelpropagation. Die aus den Daten erstellte Original-Label-Spreading minimiert eine Verlustfunktion mit Regularisierungseigenschaften, die eine modifizierte Version des Originaldiagramms iteriert und diese durch Berechnung normalisiert normalisierte Laplace-Matrix Kantengewicht. Zwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading

3. Gleichzeitig belegt LabelSpreading viel CPU und die Auslastung des physischen Speichers ist nicht schlecht. Die CPU-Auslastung von LabelPropagation ist nicht schlecht, aber es belegt viel physischen Speicher und es kann zu Problemen kommen Daten aus hohen Breitengraden.

Das obige ist der detaillierte Inhalt vonZwei halbüberwachte Etikettenweitergabealgorithmen in sklearn: LabelPropagation und LabelSpreading. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen