12

Sto tentando di implementare un'applicazione che utilizza l'algoritmo AdaBoost. So che AdaBoost utilizza set di classificatori deboli, ma non so cosa siano questi classificatori deboli. Puoi spiegarmelo con un esempio e dirmi se devo creare i miei propri classificatori deboli o sono supposto per usare un qualche tipo di algoritmo?Classificatore debole

risposta

9

Quando ho utilizzato AdaBoost, i miei classificatori deboli erano sostanzialmente soglie per ciascun attributo di dati. Queste soglie devono avere una performance superiore al 50%, altrimenti non sarebbe del tutto casuale.

Ecco una buona presentazione su AdaBoost e come calcolare i classificatori deboli: http://www.cse.cuhk.edu.hk/~lyu/seminar/07spring/Hongbo.ppt

+0

il collegamento è rotto – Dzhao

+0

Trovato il collegamento qui: http://user.ceng.metu.edu.tr/~tcan/ceng734_f1112/Schedule/adaboost.pdf – rayryeng

19

Weak classifiers (o deboli discenti) sono classificatori che svolgono solo leggermente meglio di un classificatore casuale. Questi sono quindi classificatori che hanno qualche indizio su come prevedere le etichette giuste, ma non tanto quanto i classificatori forti hanno, ad esempio, Naive Bayes, Neurel Networks o SVM.

Uno dei più semplici classificatori deboli è lo Decision Stump, che è un albero decisionale a un livello. Seleziona una soglia per una funzione e divide i dati su quella soglia. AdaBoost addestrerà quindi un esercito di questi ceppi decisionali che si concentrano ciascuno su una parte delle caratteristiche dei dati.

+0

Ho deciso di utilizzare i ceppi decisionali. La mia idea per l'applicazione è: Riconoscimento qual è il tipo di elefante. La classe My Elephant ha campi: int size, peso int, double sampleWeight, tipo ElephantType (che può essere asiatico o africano). Mi piacerebbe sapere se sono in grado di creare solo 2 ceppi decisionali (1 per taglia e 1 per peso) o dovrei fare più ceppi decisionali (pochi per taglia e pochi per peso)? – AjMeen

+0

@AjMeen Poiché un blocco decisionale è per definizione solo a livello singolo, non è possibile utilizzare due ceppi decisionali uno dopo l'altro. Il modo migliore per risolvere il tuo problema IMO sarebbe quello di creare un ceppo di decisione 2d basato su queste due caratteristiche distinte. In questo modo prenderai in considerazione entrambe le caratteristiche nel (singolo) ceppo decisionale: diciamo 'x = dimensione',' y = peso', quindi il tuo moncone sarebbe (per esempio) una soglia della sua lunghezza 2d euclidea : 'se sqrt (x^2 + y^2)> 6 restituisce +1 else restituisce -1'. Ho scelto la condizione '> 6' a caso, solo per mostrare il punto. –

+0

@AjMeen Quando ho detto che non puoi usare più di un ceppo decisionale, intendevo "... in una singola iterazione". Dovresti addestrare un singolo ceppo decisionale su ogni iterazione in adaboost. –