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

EwmaTrend

EwmaTrend(*, half_life_days: int)

Оценка значения на момент прогноза по взвешенной линейной регрессии.

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

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

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

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=(EwmaTrend(half_life_days=30),),
)

EwmaTrend(half_life_days=30) задаёт способ расчёта; 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:

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

history — события не позднее момента прогноза; a — их возраст в днях, x — значения. Линия имеет вид x ≈ intercept + slope * a. Возвращается intercept: оценка при a=0, а не наклон. w — веса с периодом полураспада half_life_days; np.polyfit принимает их квадратные корни, поскольку взвешивает остатки до возведения в квадрат. Если все времена совпадают, FeatMiner возвращает взвешенное среднее вместо подгонки линии.

import numpy as np

history = df.loc[df["age_days"].ge(0)]
a = history["age_days"]
x = history["amount"]
half_life_days = 30
w = 0.5 ** (a / half_life_days)
slope, intercept = np.polyfit(a, x, deg=1, w=np.sqrt(w))
result = intercept

Параметры

Параметр Описание
half_life_days Период полураспада, положительное целое число дней. Обязательный.
Стандартные значения 1, 7, 30, 90, 365 дней.

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

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