Содержание поста "Пакет timeseries, два скрипта utils.py и baseline.py для работы с рядами"
baseline.py
baseline_pipeline()
Представляет собой функцию автоматического построения базовой модели. Принимает на вход набор эндогенных рядов. Если рядов несколько, набор должен быть в широком формате, когда каждый столбец представляет собой отдельный ряд. Функция позволяет использовать дополнительно набор экзогенных рядов, выполнять преобразования зависимой переменной с последующими обратными преобразованиями (логарифмирование и экспоненцирование, детрендинг с последующим восстановлением тренда), конструировать признаки (лаги, скользящие средние, групповые
скользящие средние, скользящие разности, члены ряда Фурье, тренд, признаки Prophet, календарные признаки, 2-факторные взаимодействия признаков, инструментальные признаки – результаты арифметических операций над двумя признаками), выбирать способы обработки категориальных признаков, обучать модели CatBoost, LightGBM, XGBoost, ElasticNet в мультисегментном режиме, вычислять прогнозы, оценивать качество прогнозов, визуализировать прогнозы, остатки и важности по SHAP
скользящие средние, скользящие разности, члены ряда Фурье, тренд, признаки Prophet, календарные признаки, 2-факторные взаимодействия признаков, инструментальные признаки – результаты арифметических операций над двумя признаками), выбирать способы обработки категориальных признаков, обучать модели CatBoost, LightGBM, XGBoost, ElasticNet в мультисегментном режиме, вычислять прогнозы, оценивать качество прогнозов, визуализировать прогнозы, остатки и важности по SHAP
utils.py
check_vars_order()
Проверяет порядок переменных в наборах (порядок генерации признаков может повлиять на результат CatBoost)
plus_horizon()
Удлиняет индекс датафрейма на длину горизонта
forecast_trend()
Прогнозирует тренд с помощью линейной регрессии для обучающего и тестового временных рядов
forecast_trend_multi()
Прогнозирует тренд с помощью линейной регрессии для обучающего и тестового временных рядов (когда несколько рядов)
create_calendar_vars()
Конструирует календарные признаки
create_calendar_vars_extended()
Конструирует календарные признаки
moving_stats()
Создает скользящие статистики
fast_moving_stats()
Создает скользящие статистики, используя функции пакета bottleneck, написанные на C
groupby_moving_stats()
Создает групповые
скользящие статистики
скользящие статистики
calculate_lags_and_stats()
Вычисляет лаги и
скользящие статистики
скользящие статистики
calculate_lags_and_stats_multi()
Вычисляет лаги и скользящие статистики (когда несколько рядов)
cv_with_lags_and_moving_stats()
Реализует перекрестную проверку расширяющимся/скользящим окном для временных рядов со сложной предварительной подготовкой данных в цикле. Она позволит:
• на каждой итерации создавать лаги, разности, обычные и групповые скользящие статистики, т.е. на каждой итерации лаги,
разности, обычные и групповые скользящие статистики будут использовать только информацию обучающих выборок (для вычисления скользящих статистик используется вспомогательная функция moving_stats() из модуля utils, для вычисления групповых скользящих статистик – вспомогательная функция groupby_moving_stats() из того же модуля utils);
разности, обычные и групповые скользящие статистики будут использовать только информацию обучающих выборок (для вычисления скользящих статистик используется вспомогательная функция moving_stats() из модуля utils, для вычисления групповых скользящих статистик – вспомогательная функция groupby_moving_stats() из того же модуля utils);
• логарифмировать зависимую переменную с последующим обратным преобразованием (экспоненцированием прогнозов);
• выполнять сглаживание зависимой переменной с помощью обычного скользящего среднего для обработки выбросов;
• прогнозировать тренд с помощью линейной регрессии, удалять его из зависимой переменной с последующим обратным преобразованием – добавлением тренда к прогнозам (используются вспомогательные функции trend_predict(), detrend() и back_detrend());
• добавлять тренд в качестве отдельного признака;
• добавлять в качестве признаков результаты модели тройного экспоненциального сглаживания;
• выполнять динамическую корректировку количества итераций градиентного бустинга (пока только для CatBoost);
• исключать определенные диапазоны дат из валидации (обычно применяют для перекрестной проверки расширяющимся окном);
• импутировать пропуски нулем, средним значением обучающей выборки, последним известным значением обучающей выборки;
• печатать схему перекрестной проверки на каждой итерации:
• печатать важность каждого признака (значение на каждой итерации и усредненное значение) как:
o разницу в значениях функции потерь для модели с этим признаком и модели без этого признака (для CatBoost);
o нормализованный информационный выигрыш признака
(для XGBoost);
(для XGBoost);
o нормализованный вес признака (для LightGBM);
o разницу в значениях метрики качества для модели с этим признаком и модели без этого признака (для гребневой регрессии, используется вспомогательная функция dropcol_importances());
• печатать добавленные признаки;
• печатать графики прогнозов;
• печатать RMSE (значение на каждой итерации и усредненное значение)
fourier()
Вычисляет члены Фурье
arima_cv()
Выполняет перекрестную проверку расширяющимся/скользящим окном для класса ARIMA
parallel_arima_models_gridsearch_cv()
Выполняет распараллеленный поиск наилучших комбинаций параметров p, d, q, P, D, Q ARIMA-моделей на основе перекрестной проверки расширяющимся/скользящим окном
пост_книга_"бустинг_для_временных_рядов"