Mi az a target encoding időalapú kategóriás jellemzők esetén, és hogyan kerülhetjük el a leakage-t?
sobes.tech MI
Válasz az MI-től
A célkódolás időszaki adatoknál kategóriás jellemzőkhöz egy olyan módszer, amely a kategóriás értékeket számmá alakítja, a célváltozó statisztikájára alapozva (például az adott kategória célértékének átlagára). Idősorok esetében fontos elkerülni az információszivárgást (leakage), amikor a kódolás során a jövőbeli adatok is felhasználásra kerülnek a jelenlegi időponttól függően.
A leakage elkerülése érdekében a célkódolás számításakor minden időpontnál csak a korábban rendelkezésre álló információkat használjuk. Például minden kategóriára az összes korábbi megfigyelés célértékének átlagát számoljuk, anélkül, hogy a jelenlegi vagy jövőbeli megfigyeléseket figyelembe vennénk. Ezt kumulált átlagok vagy késleltetett mozgóablakok segítségével lehet megvalósítani.
Python (pandas) példával:
import pandas as pd
df = pd.DataFrame({
'category': ['A', 'B', 'A', 'B', 'A'],
'target': [1, 0, 1, 1, 0],
'time': pd.date_range('2023-01-01', periods=5)
})
df = df.sort_values('time')
# Kumulatív átlag a célértékről kategóriánként, eltolva, hogy ne használja a jelenlegi célértéket
df['target_enc'] = df.groupby('category')['target'].apply(lambda x: x.shift().expanding().mean())
print(df)
Ez a módszer a történelmi statisztikákat tükrözi anélkül, hogy jövőbeli információkat szivárogtatna ki.