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.