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

Slope

Slope(*, last_k: int)

Наклон линейной регрессии по времени: скорость изменения значения.

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

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

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

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=(Slope(last_k=10),),
)

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

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

Таблица df содержит события одного клиента: age_days — возраст в днях относительно момента прогноза, amount — значение. В примере нет пропусков.

client_id age_days amount
0 1 20 10
1 1 10 20
2 1 0 35

Значение этого кандидата для клиента 1:

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

recent — последние last_k событий одного клиента; t — время в днях, растущее к моменту прогноза; x — значения. slope — наклон в единицах суммы за день, intercept — свободный член. При last_k=0 используется вся история без .head(). Нужны минимум два события с различным временем; иначе результат NaN.

import numpy as np

last_k = 10
recent = df.sort_values("age_days").head(last_k)
t = -recent["age_days"]
x = recent["amount"]
slope, intercept = np.polyfit(t, x, deg=1)
result = slope

Параметры

Параметр Описание
last_k Число последних событий. 0 — вся история. Обязательное неотрицательное целое.
Стандартные значения 0, 10, 100.

Обязательные параметры не имеют значения по умолчанию; стандартные значения используются в готовых наборах.

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