Ինչ է նպատակային կոդավորումը ժամանակի համար կատեգորիական նշանների համար և ինչպես խուսափել leakage-ից?
sobes.tech AI
Պատասխան AI-ից
Նպատակային կոդավորումը ժամանակային շարքերում կատեգորական հատկանիշների համար՝ դա մեթոդ է, որը փոխարինում է կատեգորական արժեքները թվային արժեքներով՝ հիմնված նպատակային փոփոխականի վիճակագրության վրա (օրինակ՝ յուրաքանչյուր կատեգորիայի համար նպատակային փոփոխականի միջին արժեքը): Ժամանակային տվյալների համատեքստում կարևոր է խուսափել տեղեկատվության արտահոսքից (leakage), երբ կոդավորելու ժամանակ օգտագործվում են ապագայի տվյալներ՝ համեմատած ընթացիկ ժամանակային կետին:
Որպեսզի խուսափել leakage-ից, յուրաքանչյուր ժամանակային կետի համար նպատակային կոդավորումը հաշվարկվում է միայն այն տեղեկատվության հիման վրա, որը հասանելի է այդ կետից առաջ: Օրինակ՝ յուրաքանչյուր կատեգորիայի համար հաշվարկվում է նախորդ բոլոր դիտարկումների նպատակային միջին արժեքը՝ բաց թողնելով ընթացիկ և ապագա դիտարկումները: Սա կարելի է իրականացնել կուտակային միջինների կամ հետաձգված մանրէների միջոցով:
Python (pandas) օրինակ՝
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')
# Կուտակային միջին նպատակային արժեքը կատեգորիայի համար, տեղափոխված՝ չօգտագործելու համար ընթացիկ նպատակային արժեքը
df['target_enc'] = df.groupby('category')['target'].apply(lambda x: x.shift().expanding().mean())
print(df)
Այսպիսով, նպատակային կոդավորումը արտացոլում է պատմական վիճակագրություն՝ առանց ապագայի տվյալների արտահոսքի։