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

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

Prekopcsák Zoltán

2010.08.22. • 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 a nyitó bejegyzésben található, az első részben a validáció előtti tanulás problémáját jártuk körbe.

A második tipikus hiba a jövőbeli információ használata. Egy adathalmazban gyakran értelmezhető az adatsorok időbeli sorrendezése. Időben rendezhető adat például egy ügyfél telefonhívásai vagy egy tőzsde napi záróárai. Az adatbányászati elemzések során hajlamosak vagyunk az adatsorokat független megfigyelésként kezelni, azonban sok esetben ez nem teljesül és az adatsorok között különböző ok-okozati kapcsolatok vagy korreláció figyelhető meg.

Egy tipikusan ilyen feladat az idősor-előrejelzés. Tegyük fel, hogy kapunk egy hosszú idősort és az a feladatunk, hogy építsünk modellt, amely a múltbeli értékek alapján prediktálja a következő értéket. Ilyenkor tipikus feltevés, hogy a jövőbeli érték csak a legutóbbi néhány (mondjuk L darab) értéktől függ, ezért a hosszú idősor átalakítható táblázatos formára, amiben az L múltbeli érték mellett a következő, megtanulandó érték található. Ezzel a módszerrel egy N hosszú idősor átalakítható egy N-L soros és L+1 oszlopos táblára, amelyen szokványos regressziós problémaként kezelhető.

Tegyük fel, hogy leave-one-out keresztvalidációt használunk a kiértékeléshez és az aktuális lépésben az idősor t-edik elemén kell tesztelnünk a többi adatsoron épített modellt. Ekkor azonban a modellépítéshez felhasználjuk a t+1-edik, …, t+L-edik elemet címkeként tartalmazó adatsort, melyben a változók között ott szerepel a t-edik elem pontos értéke. Vannak olyan szabályalapú illetve távolságtanuló eljárások, amelyek képesek explicit módon megtanulni ezt a szabályt és tökéletes pontosságú, nulla hibájú modellt hoznak létre. Más modellezőket kevésbé explicit módon befolyásolja ez a jelenség, de sosem lehetünk biztosak benne, hogy a jövőbeli információ ismerete mennyiben torzítja az eredményt. Természetesen ezt a torzítást valós környezetben nem lehet reprodukálni, mert a t-edik időpillanatban még nem áll rendelkezésre a t+1-edik adatsor.

Egy hasonló problémakör az, amikor duplikált adatsorok vannak az adathalmazunkban. Ilyen eset létrejöhet hibás SQL JOIN műveletek vagy más előfeldolgozó lépések során is. Amennyiben egy leave-one-out keresztvalidációban egy ilyen duplikált soron tesztelünk, akkor biztosan tökéletes predikciót kapunk, hiszen a valós válasz már megvan a tanító halmazban is.

Ezen hibák elkerülése érdekében érdemes duplikátum-ellenőrzést végezni az adattáblán, illetve végiggondolni, hogy az adatsoraink független megfigyelések-e, vagy tartalmaznak olyan összefüggést, ami miatt figyelembe kell vennünk a sorrendezettségüket.

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.