Deep Learning Academy · Lezione

Pesi delle classi per dati sbilanciati

Impedisca alla classe maggioritaria di dominare

Lezione 4 di 413 passaggi

Pesi delle classi per dati sbilanciati è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Deep Learning Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Deep Learning Academy include 4 lezioni in totale.

Quando una classe domina

Se il 95 percento dei campioni appartiene a una sola classe, il modello può ottenere un punteggio elevato indovinando sempre quella. Questa è la trappola dello squilibrio tra classi. ⚖️

Perché l'accuratezza inganna in questo caso

Anche un modello pigro che ignora la classe rara può sembrare accurato al 95 percento. L'accuratezza nasconde quindi il fallimento totale sulla classe minoritaria che Le interessa davvero.

La loss segue la maggioranza

Ogni campione contribuisce allo stesso modo alla loss, quindi la classe più numerosa esercita la maggiore influenza sul gradiente. Il modello impara soprattutto dalla classe maggioritaria.

Ripesi la loss

La soluzione consiste nel dare più peso alle classi rare. I pesi delle classi moltiplicano la loss di ogni campione, così gli errori della minoranza contano di più.

Un peso maggiore per la classe più rara

Una strategia comune assegna a ogni peso un valore inversamente proporzionale alla frequenza della classe. Più una classe è rara, maggiore sarà il suo peso.

Passi i pesi a CrossEntropy

Per i problemi multiclass, fornisca alla loss un tensore weight di lunghezza C. Ogni elemento ridimensiona la penalità per gli errori di quella classe.

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

pos_weight per i problemi binari

Per i problemi a due classi, BCEWithLogitsLoss accetta pos_weight, un singolo numero che aumenta il peso della classe positiva per compensarne la rarità.

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

Campioni, non si limiti a pesare

Il weighting non è l'unico strumento. Può anche fare oversampling della classe rara o undersampling di quella comune per bilanciare ogni batch.

Bilanci i batch con un sampler

Un WeightedRandomSampler estrae più spesso campioni della minoranza, così ogni batch fornito dal DataLoader risulta approssimativamente bilanciato per progettazione.

from torch.utils.data import WeightedRandomSampler

Focal loss per i casi difficili

In caso di squilibrio estremo, la focal loss riduce il peso degli esempi facili e classificati correttamente, così il modello si concentra su quelli difficili e rari.

Valuti con la metrica giusta

Dopo il riequilibrio, abbandoni l'accuratezza e monitori F1 oppure precision e recall. Queste metriche mostrano se il modello sta finalmente imparando la classe rara.

Verifica rapida

Il Suo dataset è composto per il 95 percento da esempi negativi. Come può impedire al modello di ignorare i positivi?

Riepilogo: dia voce alla classe rara

Lo squilibrio permette alla maggioranza di prendere il controllo del training, quindi può contrastarlo con i pesi delle classi, il campionamento bilanciato o la focal loss, valutando i risultati con F1. 💪

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Pesi delle classi per dati sbilanciati» è gratuita?

Sì — il testo completo di «Pesi delle classi per dati sbilanciati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Deep Learning Academy, passa a CoddyKit PRO. Il corso Deep Learning Academy include 4 lezioni in totale.

Cosa imparerò in «Pesi delle classi per dati sbilanciati»?

Impedisca alla classe maggioritaria di dominare Eserciti Deep Learning Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Deep Learning Academy?

Non è richiesta alcuna esperienza precedente. Deep Learning Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Pesi delle classi per dati sbilanciati»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Deep Learning Academy?

Sì. Ogni lezione Deep Learning Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. MSE e MAE per la regressione
  2. Binary cross-entropy con logits
  3. Cross-entropy per più classi
  4. Pesi delle classi per dati sbilanciati
← Torna a Deep Learning Academy