Interjú Balogh Eszterrel, a Dataracing data science verseny 3. helyezettjével
A Magyar Nemzeti Bank és a Budapesti Műszaki és Gazdaságtudományi Egyetem egy közösen szervezett data science versenyt hirdetett idén tavasszal, hogy a szakmai fejlődéshez és kapcsolódáshoz platformot teremtsen a magyar data science közösségnek. A Dataracing data science verseny során egy olyan modell létrehozása volt a cél, amely megbecsüli a hazai vállalatok exportbevételeinek alakulását az elmúlt évek mérleg adatai segítségével. A verseny szakmai hátterét a Dmlab szakértői adták.
A versenyre 2022. április 11-től 10 héten keresztül folyamatosan nevezhettek hazai adatelemzéssel foglalkozó szakértők és lelkes érdeklődők. A verseny folyamán 185 versenyző, összesen több mint 6000 megoldáson keresztül mérte össze szakmai tudását2. A dobogó harmadik helyére Balogh Eszter álhatott fel. Esztert a versenyen elért eredményének hátteréről kérdeztünk.
Dmlab: Szia Eszter, gratulálunk a helyezésedhez. Elsőként mit szeretnél megosztani magadról?
Eszter: Eredetileg közgazdász végzettségű vagyok, korábban a jegybankban dolgoztam különböző alkalmazott kutatási projekten. A CEU Business Analytics MSc képzésének elvégzésével párhuzamosan fordultam a data science irányába, jelenleg a Raiffeisen Bankban dolgozom data scientistként.
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?
Azt hiszem, sokat segített a közgazdasági hátterem, illetve a banki tapasztalatom. Közgazdászként nem voltak idegenek számomra a versenyben rendelkezésünkre bocsátott változók, ezt a feature engineering-nél ki is használtam. Emellett több éve a bankszakmában dolgozom, gyakran előfordul, hogy mérlegadatok szolgáltatják az inputot egy-egy projektemhez.
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?
Igen, minden projektemet azzal kezdem, hogy átnézem a változókat – milyen típusú változóból mennyi van, van-e és mennyi hiányzó adat – illetve ábrázolom az eloszlásokat és a kétváltozós összefüggéseket (pl. scatter plottal).
Ebben a feladatban is hasznosnak bizonyult ezzel foglalkozni, mert így hamar kiderült, hogy az előző évi export kiemelkedően jól magyarázza a célváltozót (annyira, hogy már egy egyváltozós lineáris regresszió is egész jó eredményt adott). De a scatter plotot vizsgálva egy másik fontos jellemzőt is észrevettem: viszonylag sok cégre volt igaz, hogy 2016-ban még nem exportált, de 2017-ben igen (vagy fordítva), akikre nem működött jól az előző logika. Ez alapján döntöttem úgy, hogy beteszek egy klasszifikációs lépést is, amelyben azt prédikáltam, hogy a cég fog-e exportálni 2017-ben.
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?
Igen, a közgazdasági végzettségemből adódóan van némi domain ismeretem, ezt ki tudtam használni a feature engineering-nél és készítettem néhány pénzügyben gyakran használt mutatót a mérlegváltozókból, amik hasznosnak bizonyultak mind a klasszifikációnál, mind a regressziónál.
Milyen modellezési technikákat használtál fel a verseny során? Mi alapján választottad ki a legjobbat?
Többféle algoritmust is kipróbáltam, az egyszerűektől a bonyolultakig. Az egyszerű lineáris regresszió mellett illesztettem kvantilis regressziót, próbálkoztam regularizációs megoldással (lasso), de fixed effects modellel is – és persze a gradient boosting sem maradt ki, ami végül a klasszifikációt adta.
A modellek teljesítményének összehasonlításához a regressziós feladatnál a versenyben is megadott metrikát (MAE) használtam, míg a klasszifikációnál a ROC görbe alatti területet figyeltem.
Hogyan védekeztél a túltanulás ellen a verseny során?
Nagy hangsúlyt fektettem a keresztvalidációra – a modellezés egyik első lépése volt, hogy a megadott tanuló adatból leválasztottam egy validációs adatot, és minden regressziós és klasszifikációs modell teljesítményét visszamértem azon.
Milyen eszközöket használtál a verseny során?
Python-ban írtam minden kódot a verseny során. Ennek egyébként az az oka, hogy eddig főleg R-t használtam, és egy ideje tudatosan keresem a lehetőségeket mind a munkahelyemen, mind a szabadidőmben, hogy Pythonban is fejlesszem magam.
Milyen hardverkörnyezetben dolgoztad ki a megoldásod?
Egy egyszerű asztali gépről dolgoztam (Ryzen 2600, 64 GB RAM, RTX 2060S), nem használtam felhőszolgáltatót. Habár a gép viszonylag erős – például sokkal gyorsabban futott rajta hyperparameter tuning, mint a laptopomon – valószínűleg így sem használtam ki a teljes kapacitását. Azt gondolom, hogy nem ezen múlt az eredmény, de az időfaktort tekintve mindenképp hasznos volt.
Milyen tapasztalatokat viszel magaddal a versenyről?
Azt a tapasztalatot viszem magammal, amit másoknak is ajánlok: mindig végezz EDA-t (feltáró adatelemzést), mielőtt nekiesel a modellezésnek és figyelj arra, hogy ne lőj ágyúval verébre – néha a legegyszerűbb modellek működnek a legjobban.
Ha lehetne egy álom versenyed, akkor milyen problémán dolgoznál a legszívesebben?
Szívesen kipróbálnám magam egy olyan versenyen, amelyen nagyfrekvenciájú, kellően hosszú távon rendelkezésre álló adatok az inputok, így azok idősoros jellegét is figyelembe kell venni a modellezésnél. Emellett a szövegbányászatot a data science egyik legizgalmasabb területének tartom, valószínűleg egy olyan témájú verseny is felkeltené az érdeklődésem 😊