Lär Er AI med Python · Lektion

Grafteori för maskininlärning

Noder, kanter, grannskapsmatris, graftyper, grafegenskaper, representationer av sociala nätverk.

Lektion 1 av 413 steg

Grafteori för maskininlärning är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Vad är en graf

En graf modellerar entiteter och relationerna mellan dem. Formellt är en graf G = (V, E), där V är mängden noder och E är mängden kanter som förbinder par av noder. Många verkliga system är naturligt grafer.

Noder och kanter

Varje nod representerar en entitet (en användare, en atom, en webbsida). Varje kant representerar en relation (en vänskap, en kemisk bindning, en hyperlänk). Maskininlärning på grafer lär sig från denna anslutningsstruktur, inte bara från isolerade datapunkter.

Grannmatrisen

Grannmatrisen A kodar vilka noder som är anslutna. För n noder är A en n gånger n-matris; A[i][j] = 1 om en kant förbinder nod i och nod j, annars 0.

import numpy as np

# Triangle: 0-1, 1-2, 0-2
A = np.array([
    [0, 1, 1],
    [1, 0, 1],
    [1, 1, 0],
])

Nodegenskaper X

Utöver strukturen har varje nod vanligtvis en egenskapsvektor. När de staplas tillsammans bildar de egenskapsmatrisen X med formen (num_nodes, num_features). I en social graf kan en rad innehålla en användares ålder, antal inlägg och kontots ålder.

X = np.array([
    [25, 120, 3.0],   # node 0
    [31,  45, 5.5],   # node 1
    [22, 300, 1.2],   # node 2
])

Gradmatrisen

En nods grad är antalet kanter som ansluter till den. Gradmatrisen D är diagonal, där varje diagonalelement är lika med nodens grad. Den är en grundläggande byggsten i grafens Laplacian.

D = np.diag(A.sum(axis=1))
# Each diagonal entry = number of neighbors

Grafens Laplacian

Grafens Laplacian definieras som L = D - A. Den fångar hur värden skiljer sig mellan anslutna noder och är grundläggande inom spektral grafteori och i många GNN-formuleringar.

L = D - A
print(L)

Varför Laplacianen är viktig

Laplacianens egenvärden och egenvektorer visar den globala strukturen: konnektivitet, kluster och utjämning. Grafkonvolutioner härleds ofta från Laplacianen, så förståelse av L = D - A är viktig för att förstå GNN:er.

Riktade och oriktade grafer

I en oriktad graf har en kant ingen riktning (vänskap), så A är symmetrisk. I en riktad graf pekar kanterna åt ett håll (en följare, en citering), så A kan vara asymmetrisk: A[i][j] kan skilja sig från A[j][i].

# Directed: 0 -> 1 but not 1 -> 0
A_dir = np.array([
    [0, 1, 0],
    [0, 0, 1],
    [0, 0, 0],
])

Viktade grafer

Kanter kan ha vikter som representerar styrka eller avstånd. Då är elementen i grannmatrisen reella tal, inte bara 0 eller 1. I ett vägnät kan kanterna viktas efter restid och i en likhetsgraf efter cosinuslikhet.

Effektiv representation av kanter

För stora glesa grafer slösar grannmatrisen minne, eftersom de flesta elementen är noll. ML-ramverk lagrar i stället kanterna som en kantlista (COO-format): två arrayer som anger källa och mål för varje kant. PyTorch Geometric kallar detta edge_index.

# Triangle edges as edge_index [2, num_edges]
edge_index = [
    [0, 0, 1],   # sources
    [1, 2, 2],   # targets
]

Tillämpningar av grafbaserad ML

Grafer förekommer överallt:

  • Sociala grafer: vänrekommendationer, gemenskapsdetektering
  • Molekylära grafer: förutsäga molekylers egenskaper (atomer = noder, bindningar = kanter)
  • Kunskapsgrafer: länkprediktion över entiteter och relationer
  • Webb-/citeringsgrafer: rankning och klassificering

Snabbtest

Testa era kunskaper i grafteori.

Sammanfattning

Ni har lärt er grunderna i grafteori för ML:

  • En graf är G = (V, E) med noder och kanter
  • Grannmatrisen A kodar konnektivitet; X innehåller nodernas egenskaper
  • Grafens Laplacian är L = D - A
  • Grafer kan vara riktade eller oriktade, viktade eller oviktade
  • Tillämpningarna omfattar sociala grafer, molekylära grafer och kunskapsgrafer
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
53
Lektioner
225

Vanliga frågor

Är lektionen ”Grafteori för maskininlärning” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Grafteori för maskininlärning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Vad lär jag mig i ”Grafteori för maskininlärning”?

Noder, kanter, grannskapsmatris, graftyper, grafegenskaper, representationer av sociala nätverk. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?

Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Grafteori för maskininlärning”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?

Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grafteori för maskininlärning
  2. Grafkonvolutionsnätverk (GCN)
  3. Nodklassificering med GNN
  4. Länkprediktion och grafklassificering
← Tillbaka till Lär Er AI med Python