Echipa lui Andrew Ng a făcut odată o mare greșeală într-o lucrare de cercetare. Și s-a întâmplat din cauza divizării aleatorii a datelor. Iată exact ce s-a întâmplat (cu soluție):
Este obișnuit să se genereze seturi de tren și validare folosind divizarea aleatorie. Totuși, în multe situații, poate fi fatal pentru construcția de modele. Ia în considerare construirea unui model care generează subtitrări pentru imagini. Datorită naturii inerente a limbajului, fiecare imagine poate avea multe subtitrări diferite. - Imaginea-1 → Legenda-1, Legenda-2, Legenda-3, etc. - Imaginea-2 → Legenda-1, Legenda-2, Legenda-3, etc. Uită-te la asta 👇
Dacă folosim împărțirea aleatorie, același punct de date (imagine) va fi disponibil în seturile de tren și validare. Ca urmare, ajungem să evaluăm modelul pe instanțele pe care a fost instruit. Acesta este un exemplu de scurgere de date (numită și scurgere de grup), care duce la supraajustare!
Același lucru s-a întâmplat și în lucrarea lui Andrew Ng, unde au pregătit un set de date medicale pentru detectarea pneumoniei. - Total imagini = 112k - Total pacienți = 30k Din cauza divizării aleatorii, aceleași imagini ale pacientului erau disponibile atât în seturile de antrenament, cât și în cele de validare. Acest lucru a dus la scurgeri de date, iar scorurile de validare au arătat mult mai bune decât ar fi trebuit. Aceasta este lucrarea👇 lor inițială
Împărțirea grupurilor a rezolvat problema. Există doi pași: 1) Grupează toate instanțele de antrenament corespunzătoare unei singure imagini. 2) După grupare, ÎNTREGUL GRUP (toate exemplele unei imagini) trebuie atribuit aleatoriu trenului sau setului de validare. Acest lucru va preveni scurgerile de grup.
Dacă folosești Sklearn, GroupShuffleSplit implementează această idee. Ca exemplu, să considerăm că avem următorul set de date: - x1 și x2 sunt caracteristicile. - y este variabila țintă. - grup denotă criteriile de grupare. Uită-te la asta 👇
Mai întâi, importăm GroupShuffleSplit din sklearn și instanțiem obiectul. Apoi, metoda split() a acestui obiect ne permite să efectuăm divizarea grupurilor. Returnează un generator și îl putem despacheta pentru a obține următorul rezultat: - Punctele de date din grupurile "A" și "C" sunt împreună în setul de antrenament. - Punctele de date din grupul "B" sunt împreună în setul de validare/test. Uită-te la asta 👇
Câteva zile mai târziu, echipa lui Andrew Ng a actualizat lucrarea după ce a folosit aceeași strategie de împărțire a grupurilor pentru a se asigura că aceiași pacienți nu ajung atât în seturile de instruire, cât și în cele de validare. 👉 Pe partea ta: Te-ai mai confruntat cu această problemă înainte?
18,52K