Sobes.tech
Middle — Senior

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.