Újra a dobogón 

Interjú Nagy Gáborral, a Dataracing 2023 data science verseny 2. 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 második helyezést ért el a tavalyi Dataracing verseny nyertese, Nagy Gábor. Őt idén is a versenyen elért eredményének hátteréről kérdeztük. 

Dmlab: Szia Gábor, gratulálunk az újbóli dobogós helyezéshez. Elsőként mit szeretnél megosztani magadról, ha valaki nem olvasta a tavalyi interjút veled? 

Gábor: Idén leszek 41 éves. Van egy BME-s és Közgázos MSc diplomám. Az adatbányászattal, data science-szel nagyjából 16 éve ismerkedtem meg a Dmlab által. Doktoranduszként sokáig tagja is voltam ennek az egyetemi csapatnak, majd a cégnek is. Jelenleg szabadúszó vagyok: adatelemzéssel, szoftverfejlesztéssel foglalkozom nagy részben. Változás tavalyhoz képest, hogy már két kislánnyal játszóterezek. Valamint a PhD-t is újra elkezdetem a Pázmányon. 

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? 

Szereztem már hasonló versenyen többször is top 3 helyezést régebben, bár az hagyományos credit scoring volt, nem ilyen különleges feladat. 

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? 

Az átlagokat nézegettem meg a kategorikus változókra, abból indultam ki. Látszott az adatokban a heti ciklikusság, így visszafejtettem a dátumokat (az adatok a 2015-2017 időszakból származtak). Ezt az információt csak korlátozottan, inkább a keresztvalidációban használtam fel. 

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? 

A kategorikus változókat binárissá transzformáltam, log transzformáltam a numerikus változókat, hogy kisebb értéktartományba essenek. Ez utóbbit ugyanis a neurális háló alapú modellek jobban szeretik. Volt kategorikus változó, amit count encode-oltam (bank_id, county). A szakértői változók nem adtak hozzá az eredményhez, illetve a szokványosan erős feature-ök általában rontották a modell hatékonyságát. 

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

A szokásos gradient boosting implementációk mellett (lightgbm, catboost, xgboost) ezen a versenyen a végső ensemble-be beraktam egy neurális hálót is (elég kis súllyal ugyan). A lightgbm adta a legjobb modellt önmagában. Az együttes modellt (ensemble) a leaderboard score alapú súllyal készítettem.  

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

Minden modellnél early stoppingot alkalmaztam, hogy ne tanuljanak rá túlságosan a tanuló adathalmazomra. 

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

A megszokott Jupyter Notebook-os környezetben dolgoztam az alábbi Python könyvtárakkal: pandas, seaborn, sklearn, a megfelelő GBM implementációk (lightgbm, catboost, xgboost), tensorflow, keras. 

Milyen hardverkörnyezetben dolgoztad ki a megoldásod? 

A laptopomon. TabNet-et akartam futtatni, amihez a Kaggle-ön és a Paperspace-en is készítettem egy-egy notebookot, de nem lett sokkal gyorsabb a tanítás így ezt hagytam. Plusz maga a modell se vált be, így szinte kizárólag a gépemen dolgoztam csak (16GB RAM, i7 processzor).  

Milyen tapasztalatokat viszel magaddal a versenyről? 

Nagyon fontos volt, hogy milyen változókat pakoltam be a modellbe, nyilván. Nekem nem nagyon sikerült értelmes keresztvalidációs stratégiát találnom, ezért inkább azt néztem, hogy aránylag jobb eloszlása legyen az 1-eknek a beküldött megoldásban (2015-től 2017-ig a számosság növekedjen minden évben, közeledjen a beküldött megoldás címkeátlaga az előre közölthöz), így most jobban hagyatkoztam a leaderboardra, mint az más versenyeknél megszokott. Az a tapasztalatom, hogy ha a hiba logloss, és aránylag nagy a beadandó adatok számossága, nem lesz nagy shake-up a leaderboardon, vagyis, ami a public leaderboardon van, az lesz a végső eredmény a private leaderboardon is.  

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

Ahogy 2022-ben is: kezdd el hamar. Adj be minden nap. Találj egy egyszerű baseline-t, amihez a bonyolult modelleket hasonlíthatod. Iterálj az ötleteken gyorsan. Bízz a saját keresztvalidációdban. Ne foglalkozz annyit a leaderboarddal. Bár ebben az esetben én sokat foglalkoztam a leaderboarddal és nem nagyon volt értékelhető keresztvalidációs eljárásom se. 🙂 

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

Bármilyen tabuláris probléma jöhet, regresszió, osztályozás mindegy. Az elmúlt 1-2 évben belenéztem a deep learningbe is főleg a képosztályozásba, így abban is szívesen kipróbálnám magam. 

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.