რა არის target encoding დროის კატეგორიული ნიშნებისთვის და როგორ ავიცილოთ leakage?
sobes.tech AI
პასუხი AI-სგან
ტარგეტ-კოდირება კატეგორიული ნიშნებისთვის დროის სერიებში არის მეთოდი, რომელიც კატეგორიული მნიშვნელობების ციფრულ მნიშვნელობებად შეცვლას ეფუძნება მიზნობრივი ცვლადის სტატისტიკას (მაგალითად, თითოეული კატეგორიისთვის მიზნის საშუალო მნიშვნელობას). დროის მონაცემების კონტექსტში მნიშვნელოვანია თავიდან აიცილოთ ინფორმაცია ნაკადის (leakage), როდესაც კოდირების დროს იყენებენ მომავალ მონაცემებს მიმდინარე დროის წერტილთან შედარებით.
leakage-ის თავიდან ასაცილებლად, თითოეული დროის წერტილისთვის target encoding-ის გამოთვლისას გამოიყენება მხოლოდ იმ დროის წერტილამდე ხელმისაწვდომი ინფორმაცია. მაგალითად, თითოეული კატეგორიისთვის გამოითვლება მიზნის საშუალო მნიშვნელობა ყველა წინამორბედ დაკვირვებაზე, გამორიცხული იყოს მიმდინარე და მომავალი. ამას შეიძლება განახორციელოს კუმულატიური საშუალო ან გადახრილი მოძრავი ფანჯრები.
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')
# კატეგორიის მიხედვით კუმულატიური საშუალო, გადატანილი 1-ით, რათა არ გამოიყენოს მიმდინარე მიზანი
df['target_enc'] = df.groupby('category')['target'].apply(lambda x: x.shift().expanding().mean())
print(df)
ამ გზით, target encoding ასახავს ისტორიულ სტატისტიკას, რომელიც არ იძლევა მომავალ ინფორმაციას.