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

Ускорение работы pipeline

Время работы pipeline зависит от размера входных данных и количества кандидатов признаков. Чтобы ускорить расчёт, уменьшайте пространство поиска постепенно и сравнивайте качество результата после каждого изменения.

Уменьшите глубину масок

В one_to_many_pipeline() число колонок в одном условии задаётся через DerivedColumnsConfig.max_condition_columns. Чем больше значение, тем больше комбинаций проверяет pipeline. Чтобы полностью отключить условные признаки, передайте conditions=False; обычные агрегаты без фильтрации сохранятся.

from featminer import DerivedColumnsConfig

derived_columns = DerivedColumnsConfig(
    conditions=True,
    max_condition_columns=1,
)

В one_to_all_pipeline() для той же цели пока используется отдельный параметр max_filter_conditions.

Описание параметра:

Ограничьте конкатенацию категориальных колонок

В one_to_all_pipeline() параметр max_categorical_concat_columns задаёт максимальное число категориальных колонок в одной комбинации. Снижение значения уменьшает количество проверяемых сочетаний и ускоряет генерацию.

Описание max_categorical_concat_columns.

Выбор конкретных формул

Параметр formulas принимает готовый набор "basic", "advanced" или "all". Если нужно запустить только конкретные формулы, передайте последовательность классов.

from featminer.formulas.one_to_many import Count, Mean
from featminer import one_to_many_pipeline

features = one_to_many_pipeline(
    df=transactions,
    aggregation_key="client_id",
    target_col="is_bad",
    cat_features=["product_code"],
    formulas=[Count, Mean],
)

Проверяйте результат

Ускорение достигается за счёт сокращения пространства поиска. После изменения настроек сравните число отобранных признаков, их AUC, PSI и NullsRate, а также качество итоговой модели на отложенной выборке.