Quali algoritmi richiedono la codifica one-hot?


12

Non sono mai sicuro quando utilizzare la codifica one-hot per variabili categoriali non ordinate e quando non farlo. Lo uso ogni volta che l'algoritmo utilizza una metrica di distanza per calcolare la somiglianza. Qualcuno può dare una regola empirica generale su quali tipi di algoritmi richiederebbero che le caratteristiche categoriche non ordinate siano codificate a caldo e quali no?


2
Stai chiedendo la necessità di codificare i dati categorici in un tipo di "variabili di contrasto" o in particolare in un tipo fittizio (uno caldo)?
ttnphns,

1
Questa domanda è piuttosto ampia, ma una semplice risposta che affronta la natura di OHE può chiarire la confusione del PO. L'esistenza di tali risposte implica che questa domanda è responsabile. Sto votando per lasciare aperto.
gung - Ripristina Monica

@ttnphns onestamente non so cosa intendi per variabile di contrasto. Conosco solo manichino.
cosmosa,

Cosmos, dummy (= indicatore = one-hot) è solo uno dei numerosi modi per codificare i dispositivi categoriali nelle analisi. Questi modi vengono comunemente chiamati "variabili di contrasto". Vedi stats.meta.stackexchange.com/q/4669/3277 e stats.stackexchange.com/a/221868/3277
ttnphns

1
Penso che l'elenco completo che chiederai sarà difficile da produrre.
mdewey,

Risposte:


6

La maggior parte degli algoritmi (regressione lineare, regressione logistica, rete neurale, macchina vettoriale di supporto, ecc.) Richiede una sorta di codifica su variabili categoriali. Questo perché la maggior parte degli algoritmi prende solo valori numerici come input.

Gli algoritmi che non richiedono una codifica sono algoritmi che possono gestire direttamente distribuzioni discrete congiunte come catena di Markov / Naive Bayes / Rete bayesiana, basata su alberi, ecc.

Commenti aggiuntivi:


Non è ancora chiaro se per la maggior parte degli algoritmi è necessaria una codifica a caldo. Dici solo che è richiesta la codifica. Ma è una codifica a caldo?
Prometeo

4

Qualcuno può fornire un elenco di quali algoritmi richiederebbero che le caratteristiche categoriche siano codificate a una sola opzione e quali no?

AFAIU, deve fare di più con i dati particolari , meno con il particolare algoritmo . In particolare, dipende dal fatto che ci sia o meno un ordine significativo nelle categorie.

Considera due casi. Nel primo hai le categorie cattivo, meh, buono , e nel secondo hai mela, arancia, pera . C'è un ordine naturale nel primo caso, perché probabilmente il meh è tra cattivo e buono , ma probabilmente non succede nulla di simile in mela, arancia, pera .

Se eviti la codifica one-hot per il primo caso, stai "perdendo" le informazioni sull'ordine. Se usi la codifica one-hot per il secondo caso, stai assegnando un ordine alle categorie che non è naturalmente vero.

Lo faccio ogni volta che l'algoritmo utilizza una metrica di distanza per calcolare la somiglianza.

Perché? Supponiamo che una delle funzioni sia categoricamente negativa, meh, good e hai tre istanze, 1, 2 e 3, dove sono identiche, tranne per il fatto che 1 è cattivo , 2 è meh e 3 è buono. Probabilmente vuoi esprimere all'algoritmo che 1 è più simile a 2 che a 3.


2
Questa è una buona risposta Avrei dovuto chiarire la domanda includendo anche variabili categoriche non ordinate. In tal caso, dovrebbe essere sempre un hot codificato?
cosmosa,

@ cosmos1990 IMHO, come regola empirica, per i dati categorici non ordinati, la codifica one-hot è la strada da percorrere (al contrario dell'assegnazione di valori numerici).
Ami Tavory,

2

Nessun algoritmo di apprendimento automatico richiede una codifica a caldo. È un metodo per gestire variabili categoriali. Le variabili fittizie sono un'altra. Tradizionalmente, le variabili fittizie erano la soluzione preferita. Ad esempio, la funzione R lm () crea automaticamente variabili fittizie per i dati categorici. Se stai usando Python e Scikt-Learn, credo che molti dei suoi algoritmi richiedano una codifica a caldo di variabili categoriali. Credo che tensorFlow richieda anche una codifica a caldo. Queste sono le scelte su come viene codificata la variabile. Non vi è alcun motivo per cui le variabili fittizie non possano essere utilizzate nel codice. Tutto questo ha a che fare con l'implementazione effettiva del codice dell'algoritmo.

Come sottolinea hxd1011, la questione della descrizione della "distanza" tra le variabili categoriali è una questione delicata. Oltre alle distanze menzionate c'è anche la distanza di Jaccard. Alcuni metodi ML, in particolare gli SVM, sono inappropriati per i dati categorici e l'aggiunta di variabili categoriche può / vorrà (entrambi, si decide) portare a modelli con un potere predittivo molto scarso. La maggior parte dei modelli di ensemble gestisce i dati categorici "così come sono" e non richiedono pre-elaborazione.

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.