Winnow
| Winnow | |
|---|---|
| Classe | Algoritmo di ricerca |
| Struttura dati | vettore di pesi di dim. , numero di feature |
| Caso peggiore temporalmente | , con esempi di training |
| Caso ottimo temporalmente | , con feature attive |
| Caso peggiore spazialmente | |
Winnow [1] è una famiglia di metodi di apprendimento automatico utile a definire un classificatore lineare a partire da esempi etichettati. I metodi si basano su un algoritmo molto simile al percettrone, con la differenza che questo adotta uno schema di aggiornamento dei pesi additivo, mentre in Winnow si utilizza uno schema moltiplicativo che consente di funzionare molto meglio di altri con problemi con un gran numero di caratteristiche (feature) non rilevanti (da cui il nome, ="setaccio"). L'algoritmo di base è semplice e si adatta bene a dati ad alta dimensionalità. Durante l'addestramento, gli viene fornita una sequenza di esempi positivi e negativi. Da questa il metodo apprende un iperpiano di decisione che può poi essere utilizzato per etichettare nuovi esempi come positivi o negativi. Tali metodi possono essere utilizzato anche in contesti di apprendimento online, nei quali la fase di apprendimento e quella di classificazione non sono nettamente separate.
Algoritmo
[modifica | modifica wikitesto]L'algoritmo di base, Winnow1, funziona come segue. Lo spazio delle istanze è , ovvero ogni istanza viene descritta da un insieme di caratteristiche a valori booleani. L'algoritmo gestisce un vettore di pesi non negativi per , uno per ogni caratteristica, inizialmente impostati a 1. Quando viene fornito un esempio da classificare, si applica la tipica regola di predizione dei classificatori lineari:
- se , allora si predice 1
- altrimenti si predice 0
dove è un numero reale che fa da soglia. Insieme ai pesi, la soglia definisce un iperpiano separatore nello spazio delle istanze. Si ottengono buone limitazioni all'errore se (cfr. discussione in basso).
In fase di addestramento, per ogni esempio fornito, si applica la seguente regola di aggiornamento:
- Se l'esempio è classificato correttamente, non si deve fare nulla.
- Se l'esempio è classificato in modo errato e il risultato corretto è 0, per ogni caratteristica tale che , il peso corrispondente va impostato a 0 (passo di retrocessione).
- Se l'esempio è classificato in modo errato e il risultato corretto è 1, per ogni caratteristica , il peso corrispondente va moltiplicato per (passo di promozione).
Tipicamente si imposta .
Esistono molte varianti di questo approccio di base.
- Winnow2 [1] è simile, tranne per il fatto che nel declassamento i pesi vengono divisi per invece di essere impostati a 0.
- Balanced Winnow lavora con due insiemi di pesi e quindi due iperpiani. Questo può quindi essere generalizzato per classificazione multi-etichetta.
Limiti d'errore
[modifica | modifica wikitesto]In determinate condizioni, è possibile dimostrare che il numero di errori commessi da Winnow durante l'apprendimento ha un limite superiore che non dipende dal numero di esempi in ingresso. Se l'algoritmo Winnow1 utilizza e su una funzione-obiettivo che è una disgiunzione monotona di letterali data da , allora per qualsiasi sequenza di istanze il numero totale di errori è limitato da:[2]
.
Note
[modifica | modifica wikitesto]- 1 2 (EN) Nick Littlestone, Learning Quickly When Irrelevant Attributes Abound: A New Linear-Threshold Algorithm (PDF), in Machine Learning, vol. 2, n. 4, 1º aprile 1988, pp. 285–318, DOI:10.1023/A:1022869011914.
- ↑ (EN) Nick Littlestone, "Mistake bounds and logarithmic linear-threshold learning algorithms", in Technical report, University of California, Santa Cruz., 1989, UCSC-CRL-89-11.