2013-02-22 11 views

risposta

1

Mi sono imbattuto in questo problema alcune volte e in genere quello che faccio è controllare se l'errore è uguale a 0 e se lo è, impostarlo su 1/10 del peso minimo. È un hack, ma di solito finisce per funzionare piuttosto bene.

+0

Cosa intendi per impostarlo uguale a 1/10 del peso minimo? –

+0

Come parte di Adaboost, hai pesi per gli esempi che stai utilizzando per il tuo allenamento. Questi esempi sono tipicamente impostati su 1/norma all'inizio e aggiornati ad ogni iterazione di Adaboost. Il tuo errore è semplicemente la somma dei pesi per gli esempi che il classificatore debole diventa errato. Se il tuo errore è zero, basta impostarlo su 1/10 del minimo di quei pesi, dicendo quindi che il classificatore è così buono (ma non perfetto) che ha sbagliato solo 1/10 dell'esempio meno importante. – nikola

3

Se stai aumentando di peso, ripassando e trasferendo allo studente debole tutti i dati di allenamento, direi che hai trovato un classificatore debole che di fatto è forte, dopotutto ha classificato in modo impeccabile i tuoi dati.

In questo caso, dovrebbe verificarsi nella prima iterazione di Adaboost. Aggiungi quel classificatore debole al tuo forte classificatore con un alpha impostato su 1 e interrompi l'allenamento.

Ora, se ciò accade mentre si sta aumentando il ricampionamento e il campione è solo un sottoinsieme dei dati di allenamento, credo che si dovrebbe scartare questo sottoinsieme e riprovare con un altro campione.

Credo che abbia raggiunto tale risultato perché stai giocando con un esempio molto semplice, o il set di dati di formazione è molto piccolo o non è rappresentativo. È anche possibile che il tuo classificatore debole sia troppo debole e che si stia avvicinando a una congettura casuale troppo rapidamente.

4

Nominalmente, l'alfa per il classificatore debole con errore zero dovrebbe essere grande perché classifica correttamente tutte le istanze di addestramento. Suppongo che tu stia utilizzando tutti i dati di allenamento per stimare l'alfa. È possibile che tu stia stimando l'alpha solo con il campione di allenamento per quel round di boosting - nel qual caso il tuo alfa dovrebbe essere leggermente più piccolo in base alla dimensione del campione - ma la stessa idea.

In teoria, questo alfa dovrebbe essere vicino all'infinito se gli altri alfa vengono denormalizzati. In pratica, il suggerimento per verificare se il tuo errore è zero e dare un valore molto elevato a questi alpha è ragionevole, ma i tassi di errore pari a zero o vicino allo zero indicano tipicamente il tuo sovradattamento (o hai solo troppi dati di allenamento per stimare alphas affidabili) .

Questo è descritto nella sezione 4.2 della versione Schapire & Singer's Confidence Rated Predictions di Adaboost. Essi suggeriscono l'aggiunta di una piccola Epsilon al numeratore e denominatore per la stabilità:

alpha = (0.5) * Math.log(((1 - errorRate + epsilon)/(errorRate + epsilon))) 

In ogni caso, questa alpha non deve essere impostato su un valore basso (dovrebbe essere di grandi dimensioni). E impostarlo su 1 ha senso solo se tutti gli altri Alpha per tutti gli altri round di boosting sono normalizzati quindi la somma di tutti gli Alpha è quasi 1, ad esempio

0

In realtà è meglio se non si utilizza un classificatore di questo tipo nel proprio previsione di Adaboost in quanto non migliorerebbe molto in quanto non è un classificatore debole e tenderà a mangiare tutto il peso.

Problemi correlati