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.