В этом учебнике мы научимся использовать компонент Trend для моделирования трендов временного ряда.
Мы начинаем с того же начального набора, что и в предыдущем уроке, в плане импорта необходимых библиотек и загрузки данных.
import pandas as pdfrom neuralprophet import NeuralProphet, set_log_level# Отключение сообщений журнала, кроме случаев ошибокset_log_level("ERROR")# Загрузка набора данных из CSV-файла с помощью pandasdf = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial01.csv")
В NeuralProphet по умолчанию включены компоненты Тренд и Сезонность. В этом втором уроке мы подробнее рассмотрим компонент Тренд и начнем с его самой базовой конфигурации. Поэтому мы сейчас отключим компонент Сезонность и установим количество точек изменения Тренда на 0 (ноль).
# Модель и прогнозированиеm =NeuralProphet(# Отключение изменения точек изменения трендаn_changepoints=0,# Отключение сезонных компонентовyearly_seasonality=False,weekly_seasonality=False,daily_seasonality=False,)m.set_plotting_backend("plotly-static")metrics = m.fit(df)forecast = m.predict(df)m.plot(forecast)
В графике уже присутствует линейная линия тренда, которая хорошо соответствует данным.
Давайте исследуем, какие тренды могут быть обнаружены в наших данных и как наша модель автоматически адаптировалась к этим тенденциям. Затем мы рассмотрим, как настроить параметры тренда модели.
NeuralProphet использует классический подход для моделирования тренда, комбинируя начальное значение m и скорость роста k. Влияние тренда в момент времени t1 определяется умножением скорости роста k на разницу времени t1 - t0 с начальной точки t0 плюс начальное значение m.
После изучения теории тренда, мы используем модель для прогнозирования тренда в будущем и смотрим, как наша трендовая линия будет продолжаться.
Линейный тренд продолжается в будущем. В целом, наблюдается небольшой восходящий тренд в данных.
После изучения основ тенденций в NeuralProphet, давайте рассмотрим точки изменения тренда, которые мы ранее отключили. Точки изменения тренда — это моменты времени, когда тренд меняется. NeuralProphet автоматически обнаруживает эти точки изменения и подстраивает новую линию тренда к данным до и после точки изменения. Давайте посмотрим, сколько точек изменения тренда обнаружил NeuralProphet.
Теперь трендовая линия значительно лучше соответствует данным. Мы видим, что NeuralProphet использовал значение параметра по умолчанию в 10 точек изменений и адаптировал их под наши данные.
# Модель и прогнозирование
m = NeuralProphet(
# Использование количества точек изменения тренда по умолчанию (10)
# n_changepoints=0,
# Отключение сезонных компонентов
yearly_seasonality=False,
weekly_seasonality=False,
daily_seasonality=False,
)
m.set_plotting_backend("matplotlib") # Использование matplotlib из-за #1235
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)