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
Cosa intendi per impostarlo uguale a 1/10 del peso minimo? –
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