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.
Параметры
| Параметр | Описание |
|---|---|
last_k |
Число последних событий. 0 — вся история. Обязательное неотрицательное целое. |
| Стандартные значения | 0, 10, 100. |
Обязательные параметры не имеют значения по умолчанию; стандартные значения используются в готовых наборах.