Защита от утечки из будущего
FeatMiner может исключить строки, которые ещё не были доступны на момент
построения прогноза. Для этого one_to_many_pipeline() использует три
параметра с разными ролями:
event_times— временные оси для time-aware формул;prediction_time— момент, на который строится прогноз;cutoff_by— временная ось, определяющая доступность строки.
При заданном prediction_time pipeline оставляет только строки, для которых
значение cutoff_by не позже момента прогноза:
Для RelativeTime с обратным направлением времени сравнение также
разворачивается.
Плановые даты из будущего
Проверка применяется только к cutoff_by, а не ко всем
event_times.
Будущая дата сама по себе не является утечкой, если она уже была известна на
момент прогноза. Например, плановая дата платежа или закрытия кредита может
находиться в будущем и при этом быть корректным входом модели.
from featminer import one_to_many_pipeline
features = one_to_many_pipeline(
df=credits,
aggregation_key="client_id",
target_col="target",
event_times=(
"payment_date",
"planned_payment_date",
"record_created_at",
),
prediction_time="application_date",
cutoff_by="record_created_at",
)
В этом примере строка проходит фильтрацию по правилу
record_created_at <= application_date. Значение planned_payment_date может
быть позже application_date: оно описывает известный план, а не момент
доступности строки.
Выбор cutoff_by
Если в event_times передана одна колонка, она автоматически используется как
cutoff_by. При нескольких временных осях cutoff_by нужно указать явно.
Выбирайте колонку, которая показывает, когда вся строка стала доступна системе: дату создания записи, получения отчёта или фиксации события. Если плановые значения позднее пересчитывались, для защиты от утечки нужна дата доступности конкретной версии записи.
Полная сигнатура параметров приведена в API one_to_many_pipeline.