2013-07-04 9 views
106

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, fornisce risultati significativamente migliori rispetto alla precisione di previsione, rispetto all'utilizzo della matrice originale stessa come allenamento dati. Come si verifica questo aumento delle prestazioni?Perché una codifica a caldo migliora le prestazioni di apprendimento automatico?

risposta

225

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

Supponiamo di disporre di un set di dati con una sola caratteristica categoriale "nazionalità", con valori "UK", "French" e "US". Si assuma, senza perdita di generalità, che questi siano codificati come 0, 1 e 2. Si ha quindi un peso w per questa caratteristica in un classificatore lineare, che effettuerà un qualche tipo 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 possibili valori di w × x sono 0, w e 2 × w. Entrambi questi tre portano tutti alla stessa decisione (sono tutti < b o ≥b) o "Regno Unito" e "Francese" portano alla stessa decisione, o "Francese" e "USA" danno la stessa decisione. Non c'è alcuna possibilità che il modello apprenda che "UK" e "US" dovrebbero avere la stessa etichetta, con "French" quello strano.

Tramite una codifica ad alta temperatura, si fa esplodere efficacemente lo spazio delle funzioni su tre funzioni, ognuna delle quali ottiene il proprio peso, quindi la funzione decisionale è ora w [Regno Unito] x [Regno Unito] + 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à (ad esempio "Regno Unito o USA", che potrebbe essere un predittore per qualcuno che parla inglese).

Analogamente, qualsiasi studente basato su metriche di distanza standard (come ad esempio k-neighbor neighbours) tra i campioni verrà confuso senza una codifica a caldo. Con la codifica ingenua e la distanza euclidea, la distanza tra il francese e gli Stati Uniti è 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 sufficientemente profondi, possono gestire variabili categoriali senza codifica unica.

+3

questa risposta è veramente buona. Grazie. – goh

+4

Grazie per questo Lars, ma quando eseguiamo un OneHotEncoding che aumenta effettivamente il numero di funzioni, non è necessario aumentare anche i campioni, per assicurarci che non sia più adatto. – Manoj

+0

@Manoj Rispetto all'ovvia rappresentazione alternativa di variabili categoriali, codificando ogni livello come un numero intero distinto, non penso che importi: hai bisogno di statistiche sufficienti in entrambi i casi. –

2

Per quanto riguarda l'aumento delle funzionalità eseguendo una codifica a caldo, è possibile utilizzare l'hashing delle funzionalità. Quando esegui l'hashing, puoi specificare che il numero di bucket è molto inferiore al numero delle funzionalità introdotte di recente.

Problemi correlati