Perché una codifica a caldo migliora le prestazioni di apprendimento automatico?


127

Ho notato che quando la codifica One Hot viene utilizzata su un particolare set di dati (una matrice) e utilizzata come dati di allenamento per algoritmi di apprendimento, si ottengono risultati significativamente migliori rispetto all'accuratezza della previsione, rispetto all'utilizzo della matrice originale stessa come dati di allenamento. Come avviene questo aumento delle prestazioni?

Risposte:


260

Molti algoritmi di apprendimento imparano un singolo peso per funzione o usano le distanze tra i campioni. Il primo è il caso di modelli lineari come la regressione logistica, che sono facili da spiegare.

Supponiamo di avere un set di dati con un'unica caratteristica categorica "nazionalità", con i valori "Regno Unito", "Francese" e "Stati Uniti". Supponiamo, senza perdita di generalità, che questi siano codificati come 0, 1 e 2. Avrai quindi un peso w per questa funzione in un classificatore lineare, che prenderà una sorta di decisione basata sul vincolo w × x + b> 0 o equivalentemente w × x <b.

Il problema ora è che il peso w non può codificare una scelta a tre vie. I tre valori possibili di w × x sono 0, w e 2 × w. O tutti e tre portano alla stessa decisione (sono tutti <b oppure ≥b) o "UK" e "French" portano alla stessa decisione, oppure "French" e "US" danno la stessa decisione. Non c'è alcuna possibilità per il modello di apprendere che "UK" e "US" dovrebbero avere la stessa etichetta, con "French" quello strano fuori.

Con una codifica a caldo, si espande efficacemente lo spazio delle funzioni su tre funzioni, ognuna delle quali avrà i propri pesi, quindi la funzione decisionale è ora w [UK] x [UK] + w [FR] x [FR] + w [US] x [US] <b, dove tutte le x sono booleane. In questo spazio, una tale funzione lineare può esprimere qualsiasi somma / disgiunzione delle possibilità (es. "UK o US", che potrebbe essere un predittore per qualcuno che parla inglese).

Allo stesso modo, qualsiasi studente basato su metriche di distanza standard (come k-vicini più vicini) tra i campioni verrà confuso senza una codifica a caldo. Con la codifica ingenua e la distanza euclidea, la distanza tra francese e USA è 1. La distanza tra Stati Uniti e Regno Unito è 2. Ma con la codifica one-hot, le distanze a coppie tra [1, 0, 0], [0, 1 , 0] e [0, 0, 1] sono tutti uguali a √2.

Questo non è vero per tutti gli algoritmi di apprendimento; alberi decisionali e modelli derivati ​​come foreste casuali, se abbastanza profondi, possono gestire variabili categoriche senza codifica a caldo.


4
Grazie per questo Lars, ma quando eseguiamo OneHotEncoding che aumenta effettivamente il numero di funzionalità, non è necessario aumentare anche i campioni, per assicurarsi che non si adattino troppo.
Manoj,

@Manoj Rispetto all'ovvia rappresentazione alternativa di variabili categoriali, codificando ogni livello come un intero distinto, non credo che contenga: in entrambi i casi è necessario disporre di statistiche sufficienti.
Fred Foo,

7
C'è qualche letteratura che potresti indicare in modo che io possa leggere ulteriormente in questo? Grazie.
Dr.Knowitall,

1
C'è un vantaggio nell'utilizzare una matrice inferiore al valore massimo (cosa che non si farebbe quando si costruisce un modello statistico regolare) quando si utilizzano tecniche di apprendimento automatico come il potenziamento?
Steve S,

2
Questo mi sembra proprio quello che uno statistico chiamerebbe "variabili fittizie". Ma forse c'è un certo risparmio di spazio di archiviazione.
Soldalma,

3

Per quanto riguarda l'aumento delle funzionalità mediante una codifica a caldo, è possibile utilizzare l'hash delle funzionalità. Quando si esegue l'hashing, è possibile specificare che il numero di bucket sia molto inferiore al numero delle funzionalità appena introdotte.


0

Quando si desidera prevedere le categorie, si desidera prevedere gli elementi di un set. Non usare la codifica one-hot è come far sì che le categorie abbiano categorie vicine (es: se invece hai fatto una regressione con gli interi delle categorie) organizzate in un certo modo e in un certo ordine.

Ora, cosa succede se si assegnano la categoria da 0 a 0, le categorie da 1 a 1 e le categorie da 2 a 2 senza una codifica a caldo e che la previsione dell'algoritmo non è sicura se dovrebbe scegliere 0 o 2: dovrebbe prevedere 1 nonostante pensa che sia 0 o 2?

Vedi dove va. Lo stesso vale per i tuoi input di dati: se non dovrebbero essere vicini, non mostrarli al tuo algoritmo come vicini.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.