Logisztikus regresszió: egyszerű, de nagyszerű 

Interjú Takáts Bálinttal, a Dataracing 2023 data science verseny 1. helyezettjével 

A Magyar Nemzeti Bank és a Budapesti Műszaki és Gazdaságtudományi Egyetem idén ősszel újra megszervezte a Dataracing data science versenyt, hogy a szakmai fejlődéshez és kapcsolódáshoz platformot teremtsen a magyar data science közösségnek. A Dataracing 2023 data science verseny során egy olyan modell létrehozása volt a cél, amely a lakossági hitelállomány adatait felhasználva becslést ad arra, hogy kik azok, akik nem tudják tovább fizetni a hiteleiket. A versenyre 2023. október 27-től 5 héten keresztül folyamatosan nevezhettek hazai adatelemzéssel foglalkozó szakértők és lelkes érdeklődők. A verseny folyamán 108 versenyző, összesen több mint 3200 megoldáson keresztül mérte össze szakmai tudását. A versenyen idén az első helyezést, valamint a legjobb diákmegoldásért járó különdíjat is Takáts Bálint vitte el. A versenyen elért eredményének hátteréről kérdeztük. 

Dmlab: Szia Bálint, gratulálunk az első helyezéshez. Elsőként mit szeretnél megosztani magadról? 

Bálint: Takáts Bálint vagyok a BME mesterszakos hallgatója. Adatelemzéssel még a gimnáziumban kezdtem el foglalkozni, tanítottam a neurális hálókat MNIST-en, azóta is tart a lelkesedésem a téma iránt. Ez volt az első létraverseny, amin komolyan részt vettem és nagyon örülök, hogy rászántam az időt. Jelenleg a Morgan Stanleynél vagyok gyakornok és az egyetemen mélytanulásra, valamint adatelemzésre specializálódom. 

Volt-e korábbi tapasztalatod vagy bármilyen a verseny témájához kapcsolódó iparági ismereted, amely segített, hogy sikeres legyél ezen a versenyen? 

Nem nagyon volt komolyabb ismeretem a témában, főleg nem ipari tapasztalatom. Az összes tudásom az egyetemen végzett tárgyakból származik, valamint az interneten elérhető anyagokból. Két tárgyat ki is szeretnék emelni, ami mindenképpen megalapozta ezt a sikert: Gépi tanulás, valamint a tárgy párja az esettanulmányok laboratórium. 

Csináltál-e feltáró adatelemzést az adatokon? Mi volt a legérdekesebb észrevétel/összefüggés, amit az adatokban találtál? 

Természetesen nagyon sok adatfeltáró elemzést végeztem és rendkívül sok érdekességet találtam az adatokban. Csak, hogy néhányat megemlítsek: 

  • Volt 1000 sor, amit hibásan vittek be az adatbázisba, ezeket eldobtam.  
  • Van olyan hitel, amihez 15 hitelfelvevő tartozik. 
  • Van olyan hitelfelvevő, akihez 9 hitel tartozik. 
  • A hitelezésben meglepően nagy a szezonalitás. 
  • Volt pár számomra kevésbé releváns változó, mint például a szerződés lejárati dátuma.  
  • Az adatok valószínűleg 2015-2018-as intervallumból származnak. 

Sokan próbálnak ezen a lépésen spórolni, de rájöttem, hogy nem kell félni az adatelemzéstől, meg is lehet szeretni. 

Végeztél-e bármilyen adatelőkészítést az adatokon? Automatikusat vagy a domaint megismerve szakértői adatelőkészítést csináltál? 

Számos adatelőkészítési lépést alkalmaztam a verseny során. Ezek sorrendben: 

  • Lognormális változók kiválogatása 
  • Új változók készítése (feature engineering) 
  • Nem szignifikáns változók kidobása, ha p < 0.05. Végül összesen 22 változót használtam fel csak. 
  • A tanító adat szűrése a 2016 előtti adatokra. 
  • A tanító adatok dúsítása bedőlt hitelekkel. 

Ezek a lépések mind szükségesek volt az első hely megszerzéséhez. A rövid felsorolás mellett alkalmazni kellett még rengeteg apró trükköt. 

Ha több részlet érdekel a kódom elérhető Githubon: https://github.com/hakatiki/Dataracing-MNB 

Milyen modellezési technikákat használtál fel a verseny során? Mi alapján választottad ki a legjobbat? 

 A legjobb modell a versenyen a logisztikus regresszió volt. Ezzel az egyszerű (de nagyszerű) modellel el lehetett jutni a top 10-be. Mindenkinek ajánlom, hogy ismerje meg ezt a modellt.  

Ami fontos volt még modellezési szempontból az a valószínűségek megfelelő kalibrációja. A végső megoldás végül egy ensemble modell lett, ami egy logisztikus regressziót és egy random forestet kombinált.  

Mind a kettő modellnek természetesen kalibráltam a valószínűségeit. Érdekes módon a GBM nem működött nekem. 

Hogyan védekeztél a túltanulás ellen a verseny során? 

Keresztvalidációt használtam, de ezen felül nem védekeztem kifejezetten ellene.  

Milyen eszközöket használtál a verseny során? 

A versenynek egy notebookban álltam neki, azonban a végére a futási idő nagyon hosszú lett. Volt egy olyan pont, ahol 70 óra lett volna lefuttatni a napi beadást. Ezen a ponton elindítottam pár tucat futást Kaggle-ön. 

A kódom Pythonban írtam és pár tipikus adatelemező könyvtárat használtam, mint sklearn, pandas és statsmodels. Természetesen használtam ChatGPT-t is, ami nagyon hasznosnak bizonyult. 

Milyen hardverkörnyezetben dolgoztad ki a megoldásod? 

Nagyrészt a laptopomon futott a kód. Nem egy gyors gép, de az elején a logisztikus regresszióhoz nem is kellett több. Ami a versenyt nehezítette az az adathalmaz mérete, egyszer-kétszer crashelt a VS Code mert elfogyott a memória 🙂 

Milyen tapasztalatokat viszel magaddal a versenyről? 

Minél korábban neki kell állni, minden nap be kell adni. Ezek nélkül még Kaggle Grandmasterek sem fognak tudni győzni. Hosszú távon a kemény munka fog győzni. 

Van-e valamilyen tanácsod azoknak, akik most vágnak bele első data science versenyükbe? 

A tanácsom, hogy vágjanak bele. Én vagyok a bizonyíték, hogy az első versenyeden is tudsz nyerni. Valamint, ha nekiállsz keress hasonló problémákat, kutass és mélyedj bele. Nagyon sok alfa van Kaggle-ön, X-en anime profilok mögé rejtve, valamint arXiv is rengeteg hasznos információt tartalmaz. 

Ha lehetne egy álom versenyed, akkor milyen problémán dolgoznál a legszívesebben? 

Számomra nagyon érdekes területnek tűnik a csillagászat és a mélytanulás kombinálása. Sajnos, hogy ezen a területen ki tudjam magam próbálni még pár évnyire van, de mindenképpen célom. 

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Enquire now

Give us a call or fill in the form below and we will contact you. We endeavor to answer all inquiries within 24 hours on business days.