Am observat că atunci când o codificare One Hot este utilizată pe un anumit set de date (o matrice) și utilizată ca date de antrenament pentru algoritmi de învățare, aceasta oferă rezultate semnificativ mai bune în ceea ce privește acuratețea predicției, comparativ cu utilizarea matricei originale ca date de antrenament. Cum se întâmplă această creștere a performanței?

datelor

3 Răspunsuri 3

Mulți algoritmi de învățare fie învață o singură greutate pe caracteristică, fie folosesc distanțe între probe. Primul este cazul modelelor liniare, cum ar fi regresia logistică, care sunt ușor de explicat.

Să presupunem că aveți un set de date care are o singură caracteristică categorică „naționalitate”, cu valori „UK”, „French” și „US”. Să presupunem, fără pierderea generalității, că acestea sunt codificate ca 0, 1 și 2. Apoi aveți o pondere w pentru această caracteristică într-un clasificator liniar, care va lua un fel de decizie pe baza constrângerii w × x + b> 0, sau echivalent w × x

În ceea ce privește creșterea caracteristicilor printr-o codare la cald, se poate utiliza funcția hash. Când faceți hashing, puteți specifica numărul de găleți pentru a fi mult mai mic decât numărul de funcții nou introduse.

Când doriți să preziceți categorii, doriți să preziceți elementele unui set. Neutilizarea codării one-hot este asemănătoare cu a permite categoriilor să aibă categorii învecinate (de exemplu: dacă ați făcut o regresie cu numerele întregi în schimb) organizate într-un anumit mod și într-o anumită ordine.

Acum, ce se întâmplă dacă atribuiți categoriile 0 la 0, categoria 1 la 1 și categoria 2 la 2 fără o codificare la cald și că predicția algoritmului dvs. nu este sigură dacă ar trebui să aleagă 0 sau 2: ar trebui să prezică 1 în ciuda el crede că este fie 0, fie 2?

Vezi unde merge. Același lucru este valabil pentru intrările dvs. de date: dacă nu ar trebui să fie vecini, atunci nu le arătați algoritmului dvs. ca vecini.