Modellkiértékelési hibák - 1. rész - Dmlab

Modellkiértékelési hibák – 1. rész

Prekopcsák Zoltán

2010.08.19. • olvasási idő:

Ebben a posztsorozatban olyan modellkiértékelési hibákat mutatunk be, amelyek jelentősen torzíthatják egy modell pontosságbecslését.

A téma bevezetése és a keresztvalidáció bemutatása az előző bejegyzésben található.

Az első és talán legkönnyebben kivédhető hiba a globális információ használata a kiértékelés előtt. Gyakori eset, hogy az előfeldolgozási lépéseket a validáció előtt valósítjuk meg, amikor a tanító és a teszthalmaz még nem került szétválasztásra. Ezzel nincs is probléma amennyiben ez az előfeldolgozás csupán változók szűréséből, új származtatott változók létrehozásából vagy adatsorok szűréséből áll, azonban van az előfeldolgozó műveleteknek egy olyan osztálya, amely felügyelt módszer, azaz a működéséhez felhasználja a célváltozó értékeit. Az egyik legismertebb ilyen módszercsalád a feature selection.

Ilyen eljárásokat leginkább akkor használunk, amikor sok változónk van az adattáblában és attól tartunk, hogy a modellező eljárás nem fog időben lefutni, vagy a sok változó miatt nem fog megfelelő eredményt adni (például a k-NN osztályozó pontossága jelentősen romlik sok változó esetén a dimenziók átka miatt). Egy lehetséges megvalósítás az egyes változók korrelációját méri a célváltozóhoz, és csak a 20 leginkább korrelált változót tartja meg az adathalmazból.

A problémát az jelenti, hogy a validáció előtt kiszelektált változók már magukban hordoznak rengeteg információt a teljes adathalmazról, ezáltal a teszt halmazról is. A legtöbb ember ezt a hatást nem gondolja túl lényegesnek, de az alábbiakban mutatunk néhány konkrét példát is amikor jelentősen torzít az eredményen.

Vettünk egy adathalmazt 100 sorral, 500 változóval és véletlenszerű bináris (0 vagy 1) célváltozóval. Első lépésben egy feature selection módszert futtattunk rajta, amely kiválasztotta a 10 legfontosabb változót, majd keresztvalidációval egy k-NN osztályozót értékeltünk ki rajta. Ez a k-NN osztályozó képes volt 63%-ban helyesen megtippelni a véletlen célváltozót. A kísérletet megismételtük 1000 sorra is, és az eredmény ekkor is messze meghaladta a véletlent, kicsit több mint 54%-ban találta el a célváltozót.

Ez az eredmény azt jelzi, hogy ha a validáció előtt az előfeldolgozás során már felhasználjuk a célváltozó értékeit, akkor a modellkiértékelésnél fals eredményeket kaphatunk. Érdemes azt az alapelvet követni, hogy az előfeldolgozási lépéseknél vagy végiggondoljuk, hogy működne-e célváltozó nélkül is, vagy akár ideiglenesen el is távolítjuk a célváltozót az adathalmazból, hogy biztosan ne kövessünk el ilyen hibát.

Azt gondoljuk, hogy ezek a hibák nagyon tanulságosak, úgyhogy minden olvasót kérünk, hogy osszon meg velünk érdekes adatbányászati hibákat akár a modellkiértékelés, akár más adatbányászati folyamatok kapcsán. A történeteket itt a cikkek alatt megjegyzésként vagy emailben várjuk a prekopcsak(kukac)tmit.bme.hu címre.