Перейти к содержанию

IntervalStd

IntervalStd()

Выборочное стандартное отклонение интервалов.

Использование

transactions — обучающая таблица событий с бинарным target, одинаковым внутри каждого клиента.

from featminer import RelativeTime, one_to_many_pipeline
from featminer.formulas import IntervalStd

features = one_to_many_pipeline(
    df=transactions,
    aggregation_key="client_id",
    target_col="target",
    event_times=("age_days",),
    relative_time_columns=(
        RelativeTime("age_days", unit="day", ascending=False),
    ),
    formulas=(IntervalStd(),),
)

IntervalStd() задаёт способ расчёта; pipeline подбирает совместимые колонки и условия. features содержит признаки, прошедшие отбор по таргету. age_days — возраст события в днях; меньший возраст означает более позднее событие (ascending=False).

Пример результата

Таблица событий df: client_id — ключ объекта, age_days — возраст события в днях относительно момента прогноза (0 — этот момент). Расчёт без дополнительной фильтрации строк.

client_id age_days
0 1 30
1 1 20
2 1 5
3 1 0

Значение этого кандидата по клиентам:

IntervalStd
client_id
1 5
Эквивалентный расчёт на pandas

ordered — события от старых к новым; intervals — промежутки между соседними событиями в днях: 10, 15, 5. Для первого события интервал отсутствует. Используется выборочное отклонение (ddof=1); нужны минимум два интервала.

ordered = df.sort_values("age_days", ascending=False)
intervals = -ordered.groupby("client_id")["age_days"].diff()
result = intervals.groupby(ordered["client_id"]).std()

Каталог формул.