Deep Learning Academy · Lektion

Klassvikter för obalanserade data

Förhindra att majoritetsklassen dominerar

Lektion 4 av 413 steg

Klassvikter för obalanserade data är en gratis lektion i Deep Learning Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Deep Learning Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Deep Learning Academy innehåller totalt 4 lektioner.

När en klass dominerar

Om 95 procent av dina exempel tillhör en klass kan modellen få hög poäng genom att alltid gissa den. Det är fällan med klassobalans. ⚖️

Varför noggrannheten ljuger här

En lat modell som ignorerar den sällsynta klassen kan ändå se ut att ha 95 procents noggrannhet. Därför döljer accuracy ett totalt misslyckande för den minoritet du faktiskt bryr dig om.

Förlusten följer majoriteten

Varje exempel bidrar lika mycket till förlusten, så den talrika klassen påverkar gradienten mest. Modellen lär sig främst från majoritetsklassen.

Vikta om förlusten

Lösningen är att ge sällsynta klasser större inflytande. Klassvikter multiplicerar varje exempels förlust, så att misstag på minoriteten räknas mer.

Större vikt för en sällsyntare klass

En vanlig metod är att sätta varje vikt omvänt proportionell mot dess klassfrekvens. Ju sällsyntare klassen är, desto större blir dess vikt.

Skicka vikter till CrossEntropy

Vid multiklassproblem skickar du en weight-tensor med längden C till förlusten. Varje element skalar straffet för fel i den klassen.

import torch.nn as nn
w = torch.tensor([1.0, 9.0])
loss_fn = nn.CrossEntropyLoss(weight=w)

pos_weight för binära problem

För problem med två klasser tar BCEWithLogitsLoss emot pos_weight, ett enda tal som förstärker den positiva klassen för att kompensera för dess sällsynthet.

loss_fn = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([9.0]))

Sampla, vikta inte bara

Viktning är inte det enda verktyget. Du kan också översampla den sällsynta klassen eller undersampla den vanliga för att balansera varje batch.

Balansera batcher med en sampler

En WeightedRandomSampler väljer exempel från minoriteten oftare, så varje batch som DataLoader levererar blir ungefär balanserad från början.

from torch.utils.data import WeightedRandomSampler

Focal loss för svåra fall

Vid extrem obalans minskar focal loss vikten för enkla, korrekt klassificerade exempel, så att modellen fokuserar på de svåra och sällsynta.

Bedöm med rätt mätvärde

Efter ombalanseringen bör du släppa accuracy och följa F1 eller precision och recall. De visar om modellen till slut lär sig minoritetsklassen.

Snabb kontroll

Dina data består till 95 procent av negativa exempel. Hur hindrar du modellen från att ignorera de positiva?

Sammanfattning: ge den sällsynta klassen en röst

Obalans låter majoriteten kapa träningen, så du bemöter den med klassvikter, balanserad sampling eller focal loss och bedömer resultaten med F1. 💪

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
30
Lektioner
120

Vanliga frågor

Är lektionen ”Klassvikter för obalanserade data” gratis?

Ja – hela texten till ”Klassvikter för obalanserade data” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Deep Learning Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Deep Learning Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Klassvikter för obalanserade data”?

Förhindra att majoritetsklassen dominerar Ni övar på Deep Learning Academy 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 Deep Learning Academy?

Du behöver inga förkunskaper. Utbildningen i Deep Learning Academy 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 4 av 4.

Hur lång tid tar lektionen ”Klassvikter för obalanserade data”?

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 Deep Learning Academy-lektionen?

Ja. Varje Deep Learning Academy-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. MSE och MAE för regression
  2. Binär cross-entropy med logits
  3. Cross-entropy för flerk lassklassificering
  4. Klassvikter för obalanserade data
← Tillbaka till Deep Learning Academy