Learn AI with Python · Lektion

Link Prediction und Graphklassifikation

Aufgabe der Kantenvorhersage, negatives Sampling, Pooling auf Graph-Ebene, GINConv für Graphklassifikation.

Lektion 4 von 413 Schritte

Link Prediction und Graphklassifikation ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Zwei neue Graphaufgaben

Neben der Klassifikation von Knoten können GNNs auch Folgendes bearbeiten:

  • Link Prediction: Wird zwischen zwei Knoten eine Kante existieren? (Freundschaftsempfehlungen, Arzneimittelwechselwirkungen)
  • Graphklassifikation: Einem gesamten Graphen ein Label zuweisen (Ist dieses Molekül giftig?)

Aufbau der Link Prediction

Bei der Link Prediction berechnen wir zunächst mit einem GNN Knoten-Embeddings und bewerten anschließend mögliche Knotenpaare. Ein hoher Wert bedeutet, dass das Modell glaubt, die Knoten sollten durch eine Kante verbunden sein.

Eine Kante bewerten

Ein gängiger Kantenwert ist das Skalarprodukt der beiden Knoten-Embeddings: score = dot(h_u, h_v). Ähnliche Embeddings ergeben ein hohes Skalarprodukt und sagen damit einen wahrscheinlichen Link voraus.

h = gnn(data.x, data.edge_index)        # node embeddings
score = (h[u] * h[v]).sum(dim=-1)        # dot product per pair

Negatives Sampling

Der Graph listet nur vorhandene Kanten auf (positive Beispiele). Für das Training eines Klassifikators benötigen wir auch Nicht-Kanten. Beim negativen Sampling werden zufällig nicht verbundene Knotenpaare als negative Beispiele ausgewählt, um den Trainingsdatensatz auszugleichen.

from torch_geometric.utils import negative_sampling

neg_edge_index = negative_sampling(
    edge_index=data.edge_index,
    num_nodes=data.num_nodes,
    num_neg_samples=data.edge_index.size(1),
)

BCEWithLogitsLoss

Link Prediction ist binär (Kante oder keine Kante). Wir bewerten positive und negative Paare, versehen sie mit den Labels 1 und 0 und trainieren mit BCEWithLogitsLoss. Dieser Loss kombiniert eine Sigmoid-Funktion mit binärer Kreuzentropie auf numerisch stabile Weise.

import torch

pos = (h[pos_u] * h[pos_v]).sum(-1)
neg = (h[neg_u] * h[neg_v]).sum(-1)
scores = torch.cat([pos, neg])
labels = torch.cat([torch.ones_like(pos), torch.zeros_like(neg)])
loss = torch.nn.functional.binary_cross_entropy_with_logits(scores, labels)

Wechsel zur Graphklassifikation

Für die Graphklassifikation benötigen wir einen einzelnen Vektor pro Graph und nicht pro Knoten. Nachdem die GNN-Schichten Knoten-Embeddings erzeugt haben, poolen wir diese zu einer Repräsentation auf Graph-Ebene.

global_mean_pool

global_mean_pool mittelt alle Knoten-Embeddings eines Graphen und erzeugt so unabhängig von der Graphgröße einen Vektor fester Größe. Ein batch-Index gibt an, zu welchem Graphen die einzelnen Knoten gehören, wenn mehrere Graphen gemeinsam verarbeitet werden.

from torch_geometric.nn import global_mean_pool

h = gnn(x, edge_index)               # [num_nodes, dim]
hg = global_mean_pool(h, batch)       # [num_graphs, dim]
logits = classifier(hg)

Warum Pooling wichtig ist

Pooling macht das Modell invariant gegenüber der Reihenfolge der Knoten und der Graphgröße: Zwei isomorphe Graphen ergeben denselben gepoolten Vektor. Mean Pooling ist einfach; Sum Pooling und Max Pooling sind Alternativen mit unterschiedlichen Empfindlichkeiten.

GINConv

GINConv (Graph Isomorphism Network) ist eine ausdrucksstärkere Faltung. Sie verwendet ein MLP und eine Summenaggregation, die speziell darauf ausgelegt sind, die Unterscheidungskraft der Nachrichtenweitergabe für Aufgaben auf Graphenebene zu maximieren.

from torch_geometric.nn import GINConv
import torch

mlp = torch.nn.Sequential(
    torch.nn.Linear(in_dim, hid),
    torch.nn.ReLU(),
    torch.nn.Linear(hid, hid),
)
conv = GINConv(mlp)

Die Verbindung zum Weisfeiler-Leman-Test

GIN ist so konzipiert, dass es genauso leistungsfähig wie der Weisfeiler-Leman-Test (WL-Test) ist, ein klassischer Algorithmus zur Unterscheidung nicht isomorpher Graphen. Viele einfachere GNNs können bestimmte Graphen nicht auseinanderhalten; GIN kann das innerhalb der Grenzen des WL-Tests und eignet sich dadurch besonders gut für die Graphklassifikation.

Das richtige Werkzeug auswählen

Passen Sie die Architektur an die Aufgabe an:

  • Link Prediction: GNN-Einbettungen + Skalarprodukt-Bewertung + Negative Sampling + BCE-Loss
  • Graphklassifikation: ausdrucksstarke Faltungen wie GINConv + globales Pooling + Klassifikator

Kurztest

Testen Sie Ihr Wissen.

Zusammenfassung

Sie haben Link Prediction und Graphklassifikation kennengelernt:

  • Edge-Score = dot(h_u, h_v), trainiert mit Negative Sampling und BCEWithLogitsLoss
  • global_mean_pool wandelt Knoteneinbettungen in einen Vektor auf Graphenebene um
  • GINConv ist äußerst ausdrucksstark und entspricht dem Weisfeiler-Leman-Test
Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
53
Lektionen
225

Häufig gestellte Fragen

Ist die Lektion „Link Prediction und Graphklassifikation“ kostenlos?

Ja — der vollständige Text von „Link Prediction und Graphklassifikation“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Link Prediction und Graphklassifikation“?

Aufgabe der Kantenvorhersage, negatives Sampling, Pooling auf Graph-Ebene, GINConv für Graphklassifikation. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Link Prediction und Graphklassifikation“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Graphentheorie für Machine Learning
  2. Graph Convolutional Networks (GCN)
  3. Knotenklassifikation mit GNN
  4. Link Prediction und Graphklassifikation
← Zurück zu Learn AI with Python