Când ar trebui să echilibrez clasele într-un set de date de antrenament?

Am avut un curs online, unde am învățat, că clasele dezechilibrate din datele de instruire ar putea duce la probleme, deoarece algoritmii de clasificare merg pe regula majorității, ca dă rezultate bune dacă dezechilibrul este prea mare. Într-o misiune, trebuia să se echilibreze datele prin eșantionarea clasei majoritare.

Cu toate acestea, în acest blog, cineva susține că datele echilibrate sunt chiar mai rele:

https://matloff.wordpress.com/2015/09/29/unbalanced-data-is-a-problem-no-balanced-data-is-worse/

Deci care este? Ar trebui să echilibrez sau nu datele? Depinde de algoritmul folosit, deoarece unii ar putea fi capabili să se adapteze la proporțiile dezechilibrate ale claselor? Dacă da, care dintre ele sunt fiabile pentru datele dezechilibrate?

Răspuns

Raționamentul intuitiv a fost explicat în blogpost:

Dacă obiectivul nostru este Predicția, acest lucru va provoca o părtinire definită. Și mai rău, va fi o prejudecată permanentă, în sensul că nu vom avea estimări consistente pe măsură ce dimensiunea eșantionului crește.

Deci, probabil, problema datelor echilibrate (artificial) este mai gravă decât cazul neechilibrat .

Datele echilibrate sunt bune pentru clasificare, dar evident pierdeți informații despre frecvențele de apariție, care vor afecta ele însele metricele de precizie, precum și performanța producției .

Să „spunem că” recunoașteți literele scrise de mână din alfabetul englez (26 de litere). Supraechilibrarea apariției fiecărei litere va oferi fiecărei litere o probabilitate de a fi clasificate (corect sau nu) aproximativ 1/26, astfel încât clasificatorul va uita de distribuirea efectivă a literelor în eșantionul original. Și este ok când clasificatorul este capabil să generalizeze și să recunoască fiecare literă cu o precizie ridicată .

Dar dacă acuratețea și cel mai important generalizare nu este „t” atât de mare „(nu pot” să vă dau o definiție – vă puteți gândi la asta doar ca la „cel mai rău caz”) – punctele clasificate greșit vor fi cel mai mult -probabil distribuie în mod egal între toate literele, ceva de genul:

"A" was misclassified 10 times "B" was misclassified 10 times "C" was misclassified 11 times "D" was misclassified 10 times ...and so on 

Spre deosebire de fără echilibrare (presupunând că „A” și „C” au probabilități mult mai mari de apariția în text)

"A" was misclassified 3 times "B" was misclassified 14 times "C" was misclassified 3 times "D" was misclassified 14 times ...and so on 

Deci, cazurile frecvente vor primi mai puține clasificări greșite. Dacă este bun sau nu depinde de sarcina dvs. Pentru recunoașterea textului natural, s-ar putea argumenta că literele cu frecvențe mai mari sunt mai viabile, deoarece ar păstra semantica textului original, aducând sarcina de recunoaștere mai aproape de predicție (unde semantica reprezintă tendințe ). Dar dacă încercați să recunoașteți ceva de genul capturii de ecran a ECDSA-key (mai multă entropie -> mai puțină predicție) – păstrarea datelor dezechilibrate nu vă va ajuta. Deci, din nou, depinde.

Cea mai importantă distincție constă în faptul că estimarea preciziei este, ea însăși, tendințată (după cum puteți vedea în exemplul de alfabet echilibrat), deci nu știți cum este afectat comportamentul modelului de cele mai rare sau cele mai frecvente puncte.

PS Puteți urmări oricând performanțele clasificării dezechilibrate cu valori Precision / Recall mai întâi și puteți decide dacă trebuie să adăugați sau nu echilibrarea.


EDIT : Există o confuzie suplimentară care se află în teoria estimării exact în diferența dintre media eșantionului și media populației. De exemplu, este posibil să știți (probabil) distribuția reală a literelor englezești în alfabet $ p (x_i | \ theta) $ , dar eșantionul (setul de antrenament) nu este suficient de mare pentru a-l estima corect (cu $ p (x_i | \ hat \ theta) $ ). Deci, pentru a compensa un $ \ hat \ theta_i – \ theta_i $ , uneori se recomandă reechilibrarea claselor în funcție de populație sau de parametrii cunoscuți din un eșantion mai mare (deci un estimator mai bun). Cu toate acestea, în practică nu există nicio garanție că „eșantionul mai mare” este distribuit identic din cauza riscului de a obține date părtinitoare la fiecare pas (să spunem scrisori în limba engleză colectate din literatura tehnică vs ficțiune față de întreaga bibliotecă), astfel încât echilibrarea ar putea fi în continuare dăunătoare. .

Acest răspuns ar trebui, de asemenea, să clarifice criteriile de aplicabilitate pentru echilibrare:

Problema dezechilibrului clasei este cauzată de faptul că nu există suficiente tipare aparținând clasei minoritare, nu de raportul dintre tiparele pozitive și negative în sine.În general, dacă aveți suficiente date, „problema dezechilibrului de clasă” nu apare

Ca o concluzie, echilibrarea artificială este rareori utilă dacă setul de antrenament este suficient de mare. Absența datelor statistice dintr-un distribuit identic , de asemenea, eșantionul nu sugerează necesitatea unei echilibrări artificiale (în special pentru predicție), altfel calitatea estimatorului este la fel de bună ca „probabilitatea de a întâlni un dinozaur”:

Care este probabilitatea de a întâlni un dinozaur pe stradă?

1/2 fie întâlnești un dinozaur, fie nu întâlnești un dinozaur

Comentarii

  • Cred că, pe lângă explicația problemei, importanța luării acestui răspuns este aceea că încercați mai întâi să dezechilibrați și verificați rezultatele și numai dacă este necesar, faceți echilibrarea și verificați rezultatul. +1
  • Deci, cu alte cuvinte, cu clase distribuite uniform către subsetul de instruire, modelul își va pierde acuratețea în datele nevăzute, nu? Dar, în cazul opus, în cazul în care încercați să extrageți aleatoriu intrări ale unui set de date pentru subseturile dvs. de antrenament / testare, clasificatorul dvs. va funcționa mai bine?
  • @ChristosK. După cum au afirmat mulți, atunci când vedeți problema ca o clasificare, este greu să vă gândiți la predicție. În orice caz, dacă eliminați părtinirea (eșantion „la întâmplare”) – aveți nevoie de un eșantion mai mare pentru a îmbunătăți performanța. Eșantionul „de obicei” este suficient de mare pentru a păstra semantica, așa că supraechilibrarea ar face rău și ar acționa ca un ciocan de regularizare care „aplatizează” totul fără a fi luat în considerare. De asemenea, așa cum sugerează metafora dinozaurilor, „echilibrat” nu înseamnă „chiar” – faceți echilibrarea corectă numai atunci când știți că unele probabilități sunt denaturate într-un eșantion „aleatoriu”.
  • @ChristosK. Mulțumesc pentru câteva precizări. Nu este același lucru la care mă refeream, dar abordarea este foarte asemănătoare. Recomandarea obișnuită pentru aplicabilitatea k-fold este să o faceți atunci când eșantionul inițial este „cam mic”. Nu sunt sigur, dar plierea nu ar trebui să doară oricum – este nevoie doar de mai multe alergări și, cu cât îți pasă mai puțin de predicție, cu atât îți pasă mai puțin de generalizare / performanță pe cât de tautologică pare :). Dar, în general – k-fold înseamnă, în esență, mai puțină părtinire.
  • @ChristosK. Oh, și ca avertisment, raportul spam / nu spam ar putea fi o variabilă aleatorie nestacionară pe cont propriu. Cu toate acele „știri false”, „troli ruși” și alte lucruri, aș fi atent la astfel de presupuneri – raportul ar putea fi și părtinitor. S-ar putea să doriți să estimați mai întâi PrecisionRecall pe clasificatorii dvs., dacă ceva nu este eșantionat – aș prefera să colectez / să generez (?) Mai multe date.

Răspuns

În concordanță cu comentariul lui @ kjetil-b-halvorsen, adoptarea rapidă a învățării automate a încurcat cercetătorii cu privire la predicție vs. clasificare. După cum am descris mai detaliat aici , clasificarea este adecvată doar într-o minoritate de cazuri. Când rezultatul este rar (sau prea frecvent), probabilitățile sunt totul deoarece în acest caz se poate vorbim în mod rezonabil doar despre tendințe , nu despre prezicerea aparițiilor individuale.

În statistici, am aflat cu ceva timp în urmă că orice metodă care necesită excluderea unora dintre date este foarte suspectă. Deci obiectivul de echilibrare a rezultatelor este deplasat. Predicția tendințelor (probabilitățile) nu o impune. Și odată ce estimați o probabilitate, puteți lua o decizie optimă prin aplicarea Funcția de utilitate / cost / pierdere la riscul prezis.

Răspuns

Depinde de ceea ce doriți să obțineți din clasificare?

Spuneți că este cancer v / s care nu este cancer, apoi detectarea cancerului este vitală. Cu toate acestea, deoarece non-cancerul va forma majoritatea datelor dvs., clasificatorul poate trimite în esență toate cazurile la clasa non-cancer și poate obține o precizie foarte mare. Dar nu ne putem permite asta, așa că, în esență, eșantionăm cazuri non-canceroase, mutând în esență limita deciziei departe de regiunea cancerului în regiunea non-canceroasă. obiectiv, echilibrarea poate fi esențială dacă se așteaptă ca timpul de testare să fie diferit de timpul trenului.

De exemplu, spuneți că doriți să clasificați mango și portocale, aveți un set de date de antrenament cu 900 de mango și 30 de portocale, dar vă așteptați să-l implementați într-o piață cu mango și portocale egale, atunci în mod ideal ar trebui să testați în raportul de eșantionare așteptat pentru a maximiza acuratețea.

Comentarii

  • Asta am înțeles din prelegerile pe care le-am susținut. Cu toate acestea, nu ‘ nu înțeleg când echilibrarea poate fi rea, așa cum sugerează această postare de pe blog. De ce ar fi vreodată rău să echilibru, dacă rămân suficiente puncte de date pentru fiecare clasă?
  • Ne pare rău, dar, în analogia dvs., ce legătură are distribuția fructelor pe piață cu modelul ac vicariat?Fie ai învățat să separi mango de portocale, fie nu. Cu alte cuvinte, ar trebui să puteți implementa același model pe o piață numai portocalie sau numai cu mango.
  • Dar problema cu exemplul de cancer este să considerați-l ca o clasificare , ar trebui tratat ca estimarea riscului . Apoi problema aparentă cu clasele dezechilibrate dispare, consultați stats.stackexchange.com/questions/127042/…

Răspuns

Când datele dvs. sunt echilibrate, puteți prefera să verificați acuratețea metricei. Dar când o astfel de situație datele dvs. sunt dezechilibrate, precizia dvs. nu este consecventă pentru diferite iterații. Trebuie să concentrați mai multe valori precum Precision (PPR), Recall (sensibilitate). Aceste două valori ar trebui să fie echilibrate atunci când se compară. De asemenea, ar trebui să verificați F1-Score, care este media armonică de precizie și rechemare. Acest lucru este aplicabil pentru toți algoritmii de învățare automată

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *