Зачем маркетологу прогнозирование на sktime? Часть 2: Практическая на примере посетителей сайта
Первая часть тут. В первой части я рассмотрел возможности автоматизированного прогнозирования на данных из учебного датасета. Во второй части посмотрим насколько хорошо можно предсказывать трафик из Демонстрационного счетчика Метрики. Загрузим данные тут.
Для начала взглянем на данные:
Сначала заглушим все предупреждения, популярная практика в машинном обучении:
Необходимые импорты:
Загрузим данные:
Выберем все источники трафика:
Результат:
Пропишем частоту, методом .asfreq('D'). Вангую, что в данных еще полно пропусков, чтобы от них избавится воспользуемеся лайфхаком .resample('D') что дальше указывать, без разницы, т.к. сумма и среднее за 1 день одинаковые:
И дальше просто перебираем все значения из списка трафика по циклу. Игрек у нас целевая переменная, которую предсказываем:
Чтобы отфильтровать источники, где мало трафика, я использую условие:
Я просто скопирую весь код из первой части и получу прогнозы:
Как видите, модель на автоматических настройках неплохо справилась с предсказаниями, на что указывает низкая ошибка RMSE: 10.96 для "Переходов из поисковых систем". Но в в источнике "Не определено" тоже низкая ошибка RMSE: 0.7466906330369009. Но данных мало, поэтому прогноз получается не очень удачный, так низкая ошибка не всегда означает хороший прогноз.
Но в прямых заходах мы сразу видим сильный выброс:
Что бы улучшить результаты очистим от выбросов:
И таким образом финальный код примет вид:
В результате получатся прогнозы каждого канала отдельно:
Можно ли улучшить этот результат? Конечно можно! Из этой библиотеки sktime я еще и половины ее возможностей не выжал.
Как правило это достигается за счет:
0. Предобработки данных: удаление выбросов (реализовано) и фильтрации/преобразовании данных (не реализовано).
1. Декомпозици трафика и предсказания каждой компоненты отдельно (ETS модель уже делает это)
2. Подбора гиперпараметров модели (не реализовано).
3. Усреднения прогнозов моделей (не реализовано).
Выводы:
1. Машинное обучение - это не космическая наука, и при правильном подходе можно получить хороший результат за 50 строк кода.
2. На полностью автоматических настройках моделей с автоматическим определением сезонности можно получать хорошие прогнозы вообще не вникая в процессы "под капотом".
3. Данный подход можно использовать для автоматизации предиктивной аналитики, поиска выбросов, аномалий, точек перехода и много чего еще.
В следующих уроках я хочу рассмотреть:
- Разделение временного ряда на компоненты
- Автоматический выбор модели для прогноза
- Подбор гиперпараметров
- Кросс-валидацию
- Бектестинг
Всем спасибо, кто дочитал. Ставьте лайки, пишите комментарии, чтобы ускорить выход следующих частей.