One-Hot-Coding, Multicolinearitate și capcană variabilă falsă de Krishna Kumar Mahto Către date

Acest articol discută despre Dummy Variable Trap care rezultă din problema multicoliniarității

Krishna Kumar Mahto

8 iul.2019 · 11 min de citire

Până acum, fiecare subiect nou din învățarea automată pe care l-am preluat avea ceva ce nu mai văzusem până acum. Dar nu doar subiectele nevăzute, ci subiectele prin care trecusem odinioară aveau ceva care îmi alunecase din cap. Dummy Variable Trap este unul dintre astfel de detalii pe care uitasem complet că există până când m-am întors la realizarea unui clasificator cu 3-4 luni înainte.

capcană

Înainte de a începe cu conținutul exact al Dummy Variable Trap, iată câțiva termeni cu care trebuie să fim familiarizați. Definițiile formale pot fi googulate, așa că voi prezenta o descriere informală care ar trebui să fie suficientă pentru contextul acestui articol.

Variabile categorice

Variabilele categorice sunt cele care pot lua valori dintr-un set finit. Pentru astfel de variabile, valorile pe care le iau pot avea o ordonare intrinsecă (de exemplu, viteza:). Astfel de variabile sunt numite variabile categorice ordinale. Pe de altă parte, este posibil ca unele variabile categorice să nu aibă nicio ordonare intrinsecă (de exemplu, gen:). Astfel de variabile categorice sunt numite variabile categorice nominale.

Dacă sunteți conștient de practica obișnuită de codificare a variabilelor categorice în numere, știți că adesea este sugerat să le obțineți codificate One-hot-coded. Există două motive pentru aceasta:

  1. Majoritatea algoritmilor de învățare automată nu pot funcționa direct cu variabile categorice, trebuie să fie convertiți în numere.
  2. Chiar dacă găsim o modalitate de a lucra direct cu variabile categorice fără a le converti în numere, modelul nostru va fi părtinitor față de limbajul pe care îl folosim. De exemplu, într-o sarcină de clasificare a animalelor, dacă etichetele sunt, atunci folosirea unei astfel de metode de etichetare ar antrena modelul nostru să prezică etichetele numai în limba engleză, ceea ce ar pune o restricție lingvistică asupra posibilelor aplicații ale modelului.

Pentru a le ocoli, putem codifica valorile variabilei categorice la numere după cum urmează:

Cazul 1:

Variabila categorică ordinală Viteză (așa cum este citat mai sus) poate fi codificată ca:

Cazul 2:

Pentru sarcina de clasificare a animalelor (citată mai sus), variabila etichetă, care este o variabilă categorică nominală, poate fi codificată ca:

Există o problemă majoră cu acest lucru - etichetele din problema clasificării animalelor nu ar trebui codificate în numere întregi (așa cum am făcut mai sus), deoarece aceasta ar impune o ordonare naturală aparent incorectă a: „șobolanul” înțelege intuitiv acest lucru. Dacă introducem aceste numere direct într-un model, este probabil ca funcția cost/pierdere să fie afectată de aceste valori. Trebuie să modelăm matematic această înțelegere a noastră. One-hot-coding este modul în care o facem.

Viteza este o variabilă ordinală. Putem argumenta că relația: „scăzut” scăzut ”,„ mediu ”și„ înalt ”au. Nu este nimic special în utilizarea 1, 2 și 3. Cu alte cuvinte, nu știm cât de mare este o viteză de „medie” decât viteza de „mică” și cât de mică este comparată cu o viteză „mare”. Diferența dintre aceste etichete poate afecta potențial modelul pe care îl antrenăm. Așadar, s-ar putea să dorim să codificăm singura variabila „viteză”.

În acest moment, sper să înțelegem despre ce variabile categorice sunt vorba și de ce am dori să le codificăm cu o singură dată.

Multicoliniaritate

Multicoliniaritatea apare atunci când două sau mai multe variabile independente (alias caracteristici) din setul de date sunt corelate între ele. Există mai multe metode prin care putem măsura gradul și direcția de corelație pentru cazurile bivariate (mai multe informații despre măsurile de corelație), în timp ce multicolinearitatea este în general măsurată folosind factorul de inflație a variației (mai multe informații despre măsurile de multicoliniaritate). Pe scurt, se spune că multicoliniaritatea există într-un set de date atunci când variabilele independente sunt (aproape) legate liniar între ele.

Cazuri precum cele prezentate în Fig. 1. se numesc Multicoliniaritate perfectă. La fel, avem și cazuri de multicoliniaritate imperfectă, în care una sau mai multe relații foarte liniare pot fi preocuparea noastră. Acestea au un impact direct asupra analizei de regresie liniară (consultați aceste note de curs pentru mai multe informații despre aceasta). Cu toate acestea, vom discuta impactul acestora din punctul de vedere al oricărui algoritm general de învățare automată.

În acest moment, sper să înțelegem ce este multicoliniaritatea.

OneHotEncoding în Python

Înainte de a trece la ultima parte a acestui articol, să aruncăm o privire asupra modului în care putem codifica variabile categorice.

One-hot-encoder returnează un vector pentru fiecare valoare unică a coloanei categorice. Fiecare astfel de vector conține doar un „1”, în timp ce toate celelalte valori din vector sunt „0” (găsiți fig. 4 de mai jos), deci numele one-hot-encoder.

Probabil, ar trebui să existe și pachete în limba aleasă de dvs., dar din moment ce am folosit Python pentru toate lucrurile legate de învățarea automată și știința datelor, includ doar fragmente din consola Python. În următoarea discuție, voi cita biblioteca pandelor Python după porecla populară, „pd” și numpy ca „np”.