ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 150
Abonament PDF

Seturi de Date Sever Dezechilibrate

Mihai Boldeanu
Data Scientist @ ING Hubs România



PROGRAMARE

Oricât de rău și ghinionist te-ai simți când ești victima unei fraude, trebuie să ții minte un lucru: ai fost doar martorul unui eveniment foarte rar. Deși știrile te-ar face să crezi că un escroc se ascunde la fiecare colț al internetului, așteptând să-ți fure datele sau, mai direct, banii câștigați cu greu, adevărul este că frauda este un eveniment excepțional de rar în comparație cu numărul imens de tranzacții zilnice în online sau cu cardul.

În acest material voi discuta despre fraudă din perspectiva unui data scientist. Împreună, vom explora prevalența fraudei în lumea reală, vom aborda seturi de date sever dezechilibrate și vom vedea atât opinia statisticienilor, cât și a data scientistului, orientat spre rezultate, nu doar teorie. În final, ne vom încerca norocul în a detecta frauda într-un set de date disponibil public.

De ce există seturi de date dezechilibrate

Seturile de date dezechilibrate sunt agregări de date în care o clasă este mult mai prezentă decât cealaltă; de obicei le numim clasa Majoritară (M) și clasa minoritară (m) și descriem raportul dintre ele ca fiind dezechilibrul setului de date.

Există două tipuri de seturi de date dezechilibrate: cele care captează corect distribuția unui fenomen și cele care sunt pur și simplu prost construite.

Un exemplu de set de date prost construit poate fi în situația în care încercăm să facem clasificare de imagini, pentru a identifica câini și pisici. Dacă în această situație am avea un dezechilibru între cele două clase, cel mai bine ar fi să petrecem o oră pe internet colectând mai multe imagini pentru a rezolva dezechilibrul și nu să aplicăm metode specifice pentru rezolvarea dezechilibrului de date.

Pe de altă parte, seturile de date care sunt dezechilibrate, deoarece distribuția evenimentelor din lumea reală este în mod natural dezechilibrată, prezintă o problemă mai dificil de rezolvat. Aceste tipuri de surse de date sunt de obicei legate de evenimente care apar rar și care au un impact negativ semnificativ.

De la mai puțin la mai mult dezechilibru, putem avea:

  1. Datele ușor dezechilibrate, cum ar fi în cazul predicției churn-ului sau al predicției momentului în care un client este probabil să anuleze un abonament (telecomunicații, SaaS, Netflix etc.), pot avea un dezechilibru de la 70:30 la 89:11, în funcție de industrie.

  2. În predicția neplății unui împrumut, rata de neplată așteptată poate fi de aproximativ 15%, cu un dezechilibru de 85:15 în unele seturi de date publice, dar, în practică, dezechilibrul este și [mai mare](https://www.fitchratings.com/research/corporate-finance/us-leveraged-loan-default-rate-for-2024-revised-up-amid-deterioration-24-07-2024 ).

  3. În securitatea cibernetică, în sistemele de detectare a intruziunilor pentru rețele, numărul de atacuri sau intruziuni malițioase este mult depășit de traficul normal. Traficul normal constituie de obicei peste 90% din date, în timp ce traficul de atac este mai mic de 10%, cu un dezechilibru de 90:10, în funcție de tipul exact de atac.

  4. Un caz mai sever de dezechilibru poate proveni din sectorul medical, unde seturile de date medicale pentru boli rare, cum ar fi detectarea cancerului sau condițiile genetice rare, sunt în mod natural dezechilibrate, deoarece aceste boli afectează o mică parte a populației. În seturile de date pentru detectarea cancerului de sân, clasa pozitivă poate constitui doar 2-5% din date, cu un dezechilibru de 95:5 până la 92:2.

  5. Un dezechilibru și mai mare apare în cazul fraudei în asigurări, unde companiile de asigurări se confruntă cu fraude în procesarea cererilor (asigurări de sănătate, auto sau locuință). O parte foarte mică din cereri este frauduloasă, dar acestea pot fi costisitoare. Adesea, mai puțin de 1% din cereri sunt frauduloase, ducând la un raport de dezechilibru de până la 99:1.

  6. Unele dintre cele mai dezechilibrate seturi de date disponibile sunt cele cu fraudă pe carduri de credit, care au de obicei un dezechilibru extrem, unde tranzacțiile frauduloase pot constitui doar 0,1% până la 1% din întregul set de date, cu un raport de dezechilibru de 99:1 până la 999:1. Și mai grav este cazul tranzacțiilor/banking-ului online, unde prevalența poate fi de doar 0,01%, din cauza numărului mare de evenimente care au loc, cu un raport de dezechilibru echivalent de 9999:1.

Deși faptul că tranzacțiile sunt rareori frauduloase este un lucru bun pentru utilizatorii obișnuiți, acest lucru ne face viața mult mai dificilă atunci când încercăm să învățăm modelele de machine learning să detecteze frauda. În continuare, vom analiza ce au de spus experții despre gestionarea problemei seturilor de date dezechilibrate.

Cum văd problema un statistician și un data scientist

Opiniile statisticienilor pot fi sumarizate de un răspuns excelent de pe un forum specializat: "Dezechilibrul claselor aproape sigur nu este o problemă și nu este nevoie să folosim subeșantionare, supraeșantionare sau echilibrare artificială pentru a rezolva o non-problemă. Ar fi util dacă ai spune de ce consideri dezechilibrul problematic. Statisticienii nu văd o astfel de problemă" de Dave, circa 2021 [https://stats.stackexchange.com/questions/555584/classification-with-imbalanced-data\#comment1021699_555584]. 

Ceea ce statisticianul vrea să spună este că încercarea de a aplica metode de clasificare pe un set de date sever dezechilibrat și critica generată atunci când acest lucru nu funcționează așa cum era de așteptat este de obicei abordarea greșită. Ei propun utilizarea metodelor statistice corecte pentru problemă (estimarea unei log-verosimilități sau alte astfel de estimări de tendință). În statistică, clasificarea este văzută ca o alegere forțată în care, pe baza unui prag (de exemplu, 0,5), decidem dacă ceva este fraudă sau non-fraudă. Acest tip de abordare este văzut ca fiind inferior modelării probabilităților și furnizării unui scor de risc pentru fiecare eveniment. Având un scor de risc, utilizatorul final poate selecta propriul prag în funcție de apetitul său pentru risc și de bugetul pentru verificarea alertelor.

Un data scientist, pe de altă parte, își prețuiește mai mult slujba și va ști când să cedeze părții întunecate și să construiască clasificatori, dacă asta cere business-ul. Dar asta nu înseamnă că vom ignora cunoștințele unui statistician.

Deși gândirea probabilistică este crucială pentru captarea incertitudinii, există scenarii practice în care supraeșantionarea și subeșantionarea pot prevala, în special în sarcinile de clasificare, cum ar fi detectarea fraudei în seturile de date dezechilibrate.

Aceste metode de re-eșantionare abordează părtinirea inerentă în seturile de date dezechilibrate, unde clasificatorii tradiționali tind să favorizeze clasa majoritară. Echilibrarea distribuției claselor prin supraeșantionare sau subeșantionare permite modelului să se concentreze pe clasa minoritară, evitând predicțiile triviale ale clasei majoritare. Deși abordările probabilistice pot oferi decizii nuanțate în unele cazuri, metodele de re-eșantionare ajută modelele să gestioneze dezechilibrul sever, asigurându-se că instanțele clasei minoritare sunt corect luate în considerare. Acest lucru este crucial în detectarea fraudei, unde lipsa tranzacțiilor frauduloase are costuri semnificative.

Un alt aspect important de luat în considerare este că majoritatea modelelor gata de producție sau de pe raft au o complexitate mare de timp și de memorie, ambele legate de dimensiunea setului de antrenament. Acest lucru ne forțează uneori să selectăm anumite tipuri de modele nu pe baza meritului sau a performanței, ci mai degrabă pe baza faptului că pot fi antrenate pe dimensiunile seturilor de date care ne interesează. Prin subeșantionare, putem reduce dimensiunea setului de antrenament și putem avea mai multă flexibilitate în tipurile de modele pe care le putem folosi pentru clasificare. De exemplu, procesele Gaussiene au o complexitate de timp O(n\^3) și o complexitate de memorie O(n\^2). Acest lucru face ca antrenarea pe mai mult de câteva mii de mostre să fie nefezabilă în majoritatea cazurilor.

Exercițiu pe un set de date public

Dar destul cu poveștile și să ne uităm pe niște date. În această secțiune vom investiga problema în discuție, folosind un set de date legat de fraudă de pe Kaggle:

Folosind acest set de date, vom analiza mai întâi datele și ne vom face o idee despre semnalele disponibile și cum se comportă acestea pentru evenimentele de fraudă și non-fraudă.

Analiza sumară a datelor

Setul de date a fost creat din tranzacții reale, ceea ce înseamnă că a trebuit să fie anonimizat înainte de publicare. Acest lucru s-a realizat prin aplicarea PCA (Analiza Componentelor Principale) asupra caracteristicilor și salvarea lor ca un set redus de 28 de coloane (etichetate V1-V28). Asta înseamnă că putem sărim peste pasul de selecție a caracteristicilor sau verificarea corelației puternice între caracteristici.

O altă coloană în setul de date este Timpul, și deși ar fi un câmp important de utilizat dacă am avea date pe luni sau ani, în cazul nostru îl vom ignora și elimina. Ultimele două coloane sunt Suma și Clasa, unde vedem valoarea unei tranzacții și eticheta care indică dacă a fost fraudă sau nu.

Pentru a putea evalua orice model de clasificare, va trebui să împărțim datele: mai întâi luăm 10% și le punem deoparte (set de testare), iar restul le vom împărți în așa fel încât să putem face validare în 3 folduri. Împărțirea datelor s-a făcut folosind eșantionare stratificată pentru a garanta același dezechilibru al datelor între antrenament și testare. Asta înseamnă că mostrele rămase vor fi împărțite în 3 folduri egale, iar fiecare va avea rolul de fold de validare o dată.

Soluții

Să trecem la partea distractivă a călătoriei în știința datelor, încercând să găsim cele mai bune Metrice, Metode și Modele (Triple M) pentru a rezolva problema noastră. Așa cum am spus la începutul articolului, problema este simplă: vrem să creăm un model capabil să identifice tranzacțiile frauduloase cu cardul de credit, dar care să nu genereze prea multe alerte false.

Metrici

Cel mai bun mod de a alege o metrică este să gândești ca o bancă pentru un moment. Să ne dăm seama care este costul fraudei. Există un cost evident al tranzacțiilor frauduloase, banii luați din contul clientului, dar există și un cost ascuns: cel al evaluării fiecărei tranzacții alertate și al contactării clientului de către un agent pentru a verifica dacă alerta a fost fraudă.

Aceste două costuri pot fi mapate la metrici bine cunoscute: Recall, sau cantitatea de fraudă pe care modelul o identifică din toată frauda care se întâmplă, și Precizie, care este procentul de fraudă reală din toate evenimentele pe care modelul le va marca drept "suspecte". Recall va servi mai mult pe clientul băncii, iar de Precizie va beneficia agentul bancar care trebuie să investigheze alertele. Având în vedere aceste două metrici și amintindu-ne ce a spus prietenul nostru statistician, vom folosi curba Precizie-Recall și aria de sub această curbă ca o modalitate de a evalua performanța modelului la toate nivelurile de prag simultan. Precizia Medie (AP) rezumă o curbă de precizie-recall ca media ponderată a preciziei obținute la fiecare prag, cu creșterea recall-ului de la pragul anterior.

Supraeșantionarea clasei minoritare

Supraeșantionarea este o metodă care încearcă să echilibreze clasa minoritară prin adăugarea mai multor eșantioane cu acea etichetă. Cum obținem eșantioane "noi" este partea complexă, dar pentru acest articol ne vom limita la RandomOversampling. Această metodă va duplica pur și simplu eșantioanele cu eticheta de fraudă.

Principala grijă legată de corectarea dezechilibrului, folosind supraeșantionarea, ține de momentul aplicării metodei. Dacă aplicăm această metodă înainte de a separa setul de testare de setul de antrenament, am putea cauza o scurgere de informații care va umfla artificial performanța modelului. Acest lucru s-ar întâmpla, deoarece mostrele pozitive din setul de testare ar putea fi duplicate și ajunge în setul de antrenament. Un alt motiv important pentru care ar trebui să evităm supraeșantionarea părții de testare a datelor ar fi că am schimba distribuția fraudei pe care o așteptăm în datele reale. Pentru a evita acest lucru, vom aplica metoda doar după ce datele sunt împărțite.

Când supraeșantionarea este făcută pe date ușor dezechilibrate, clasa minoritară este de obicei augmentată până când raportul M:m (Majoritate la minoritate) ajunge la 50%, dar în cazul nostru ar fi o idee foarte proastă, deoarece începem cu atât de puține mostre de fraudă.

Ce putem face în cazul nostru este să creștem numărul de etichete pozitive în setul de date printr-un multiplicator și să vedem efectul pe care îl are asupra modelelor antrenate. Vom stabili 2 niveluri arbitrare, astfel încât, dacă începem cu un raport inițial M:m al mostrelor, să putem avea o versiune M:2**m și M:10**m. Acest lucru ne va permite să vedem dacă această metodă îmbunătățește performanța modelului comparativ cu antrenamentul normal.

Subeșantionarea clasei majoritare

Subeșantionarea este o altă metodă preferată în astfel de situații de dezechilibru și uneori este folosită din motive practice, cum ar fi:

Ceea ce face subeșantionarea este să elimine eșantioane din clasa majoritară până când dezechilibrul devine mai puțin sever. Din nou, nu vom putea atinge un raport de 50% între clase, așa că vom alege ținte arbitrare pentru subeșantionare. Dacă raportul inițial este M:m, vom ținti pentru M/2:m și M/10:m.

După cele două operațiuni, putem avea următoarele combinații de dezechilibru: M/10:m, M/2:m, M:m, M:2m, M:10m.

Alegerea celui mai bun model pentru datele noastre

Ultimul pas în rezolvarea problemei este găsirea ultimului M, adică modelele. Deoarece nu suntem siguri care modele sunt cele mai bune pentru problema noastră specifică, vom folosi o abordare de tip "shotgun" în care încercăm multe modele și îl selectăm pe cel mai performant. Pentru a ne oferi cea mai bună șansă de a găsi o soluție excelentă, vom face ajustarea hiperparametrilor cu un buget fix de 20 de încercări pentru fiecare tip de model.

Modelele pe care le vom încerca sunt regresia logistică, RandomForest, Gradient boosting și o rețea neurală. Vom exclude modelele de tip SVM, procesele Gaussiene și modelele Naïve Bayes, deoarece sunt dificil de antrenat când avem mai mult de câteva mii de mostre.

Rezultate

Căutarea hiperparametrilor a fost realizată pentru toate modelele pe cele 3 folduri și folosim valoarea media pe folduri pentru a agrega rezultatele și a selecta cea mai performantă variantă a fiecărui tip de model. Această căutare a fost repetată pentru toate cele 5 variante de dezechilibru pentru a captura și efectul diferitelor dezechilibre și dimensiuni ale setului de date asupra performanței.

În Figura 1, putem vedea că efectul dezechilibrului este diferit pentru fiecare tip de model. Regresia logistică pare să nu fie deloc afectată de diferitele rapoarte de dezechilibru și dimensiuni ale seturilor de date. Gradient boosting pare să fie mai afectat de dimensiunea setului de date decât de raportul de dezechilibru, setul de date care a avut dezechilibrul redus prin supraeșantionarea clasei minoritare de 10 ori fiind cel mai performant, iar cel în care clasa majoritară a fost subeșantionată de 10 ori fiind cel mai slab performant. Random forest pare să aibă un mic beneficiu din corectarea dezechilibrului, dar efectul este mic. Pentru perceptronul multi-strat, efectul pare să scadă ușor performanța modelelor atunci când schimbăm dezechilibrul.

Figura 1 Rezultatul căutării cu hiperparametri pe variante multiple ale setului de date, rezultat agregat pentru toate combinațiile de hiperparametri pentru fiecare tip de model.

Un total de 5 nivele de dezechilibru * 4 tipuri de modele * 3 folduri * 20 de combinații de hiperparametri = 1200 de experimente au fost realizate pentru a găsi cele mai performante modele. Modelele finale selectate vor fi evaluate pe setul de testare pentru a vedea dacă selecția noastră de hiperparametri și dezechilibrul setului de date sunt optime.

Când analizăm cele mai performante variante de modele pe toate dimensiunile setului de date și dezechilibre, avem Figura 2. Acest grafic confirmă constatările noastre din figura anterioară. Gradient boosting preferă o dimensiune mai mare a setului de date. Random forest funcționează cel mai bine atunci când supraeșantionăm clasa minoritară de 10 ori sau subeșantionăm clasa majoritară de 10 ori. Regresia logistică este stabilă pe toate variantele setului de date, iar MLP funcționează cel mai bine fie pe setul de date complet, fie atunci când subeșantionăm cu un factor de 2, iar performanța scade atunci când supraeșantionăm sau subeșantionăm prea agresiv.

Figura 2 Hiperparametrii cu cea mai bună performanță pentru fiecare din cele 4 tipuri de modele în funcție de diferite nivele de dezechilibru

Luând cele mai performante modele și rapoarte de dezechilibru, replicăm configurația pe împărțirea inițială între antrenament și testare. Setul de antrenament este subeșantionat și supraeșantionat până când avem cele 5 variante cu dezechilibrul original: clasa minoritară *2, clasa minoritară *10, clasa majoritară /2, clasa majoritară /10.

Apoi antrenăm fiecare model pe dimensiunea preferată a setului de date și evaluăm pe setul de testare. Pentru a-i mulțumi pe statisticieni, evaluăm Curba Precizie-Recall pentru a verifica comportamentul modelului la toate valorile posibile ale pragului și folosim Precizia Medie ca scor final pentru fiecare model.

Această comparație poate fi văzută în Figura 3. Curba PR este o vizualizare a compromisului între Precizie și Recall care apare atunci când schimbăm pragul folosit ca limită de clasificare.

Modelele performează comparabil cu ceea ce am observat pe folduri, singura surpriză fiind modelul de regresie logistică, care performează semnificativ mai bine pe setul de testare. Pentru acest set de date de jucărie, cel mai bun model pe care îl avem este MLP Classifier (Rețeaua Neurală), dar aceasta a fost o căutare foarte limitată de resurse și există încă multe alte opțiuni de explorat pentru a obține un model mai bun.

Figura 3 Curbe PR pentru cele mai performante modele. Un model perfect sau ideal va avea Precizie de 1.0 când Recall este 1.0, iar AP va fi 100% și figura va arăta ca un pătrat complet.

Concluzii

În acest articol am explorat diverse scenarii de seturi de date dezechilibrate și strategii pentru a le aborda, sporindu-ne șansele de succes în sarcinile de clasificare. Am examinat atât tehnicile de supraeșantionare, cât și cele de subeșantionare, împreună cu ajustarea hiperparametrilor și a dezechilibrului.

În domeniul detectării fraudei, "a iubi frauda" înseamnă a valoriza acele câteva mostre prețioase de fraudă dintr-o mare de tranzacții normale. Aceste instanțe rare ne ghidează în antrenarea și rafinarea modelelor noastre pentru a descoperi tipare ascunse. Este asemănător cu vânătoarea de comori - folosind acele mostre rare de fraudă pentru a preveni incidentele viitoare și a ne proteja împotriva necunoscutului. Îmbrățișând această provocare, învățăm să apreciem fiecare caz rar de fraudă ca pe o cheie pentru o prevenire mai eficientă.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects