Bemind
NeuralProphet
NeuralProphet
  • NeuralProphet 1.0.0rc8 документация
  • Инструкция по началу работы
  • Новые уроки
    • Урок 1: Основы
    • Урок 2: Тренды
    • Урок 3: Сезонность
    • Урок 4: Авторегрессия
    • Урок 5: Регрессоры с запаздыванием
    • Урок 6: Будущие регрессоры
    • Урок 7: События и праздники
    • Урок 8: Неопределенность
    • Урок 9: Глобальная модель
    • Урок 10: Валидация и воспроизводимость
    • Следующие шаги
  • Руководства по функциям
    • Коллекция предсказаний
    • Тестирование и кросс-валидация
    • Визуализация прогнозов NeuralProphet
    • Глобальное локальное моделирование
    • Количественная оценка неопределенности
    • Условная сезонность
    • Мультипликативная Сезонность
    • Разреженная авторегрессия
    • Субдневные данные
    • Выбор гиперпараметров
    • Интеграция MLflow
    • Прямая визуализация во время обучения
    • Визуализация архитектуры сети
    • Прогнозирование потребности в энергии: Прогноз нагрузки для больницы в Сан-Франциско
    • Возобновляемая Энергия: Прогнозирование Солнечной Энергии
    • Прогнозирование нагрузки на энергосистему с визуализацией
  • Code Documentation
    • NeuralProphet Class
Powered by GitBook
On this page
  1. Новые уроки

Урок 8: Неопределенность

Last updated 1 year ago

NeuralProphet поддерживает несколько способов включения неопределенности в прогноз. В этом учебнике мы рассмотрим возможность неопределенности с помощью квантильной регрессии. Подробнее о квантильной регрессии можно прочитать на

Мы начинаем с базовой модели NeuralProphet из предыдущих учебных пособий и рассматриваем, как добавить моделирование неопределенности к прогнозу.

import pandas as pd
from neuralprophet import NeuralProphet, set_log_level

# Отключение сообщений журнала, кроме случаев ошибок
set_log_level("ERROR")

# Загрузка набора данных из CSV-файла с помощью pandas
df = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial01.csv")

# Модель и прогнозирование
m = NeuralProphet()
m.set_plotting_backend("plotly-static")
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)

В отличие от точечного прогнозирования, моделирование неопределенности предсказывает интервал возможных значений для прогноза. Предполагая, что мы хотим, чтобы истинное значение находилось в пределах оценочного интервала с вероятностью 90%, мы устанавливаем уровень доверия равным 0.9. Мы определяем два квантиля, 0.05 и 0.95, которые соответствуют 5-му и 95-му процентилям распределения прогноза. Таким образом, 90% доверительный интервал представляет собой разницу между 5-м и 95-м процентилями.

confidence_level = 0.9

boundaries = round((1 - confidence_level) / 2, 2)
# NeuralProphet принимает только значения квантилей от 0 до 1
quantiles = [boundaries, confidence_level + boundaries]

Настройте модель с неопределенностью, используя 10-й и 90-й процентили.

# Создание модели NeuralProphet с списком квантилей
m = NeuralProphet(quantiles=quantiles)
m.set_plotting_backend("plotly-static")

metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)
# оценка неопределенности на калибровочном наборе данных
train_df, cal_df = m.split_df(df, valid_p=0.1)
method = "naive"  # или "cqr" для более сложного метода, см. учебное пособие по неопределенности
conformal_forecast = m.conformal_predict(train_df, cal_df, alpha=0.1, method=method)
m.highlight_nth_step_ahead_of_each_forecast(1).plot(conformal_forecast)

Для более подробного изучения темы вы можете ознакомиться с нашим учебником по количественной оценке неопределенностей.

В описанном выше методе мы использовали модель квантильной регрессии, которая использует для оценки качества подгонки. Хотя для обучающего набора данных гарантировано соответствие определенному покрытию, для неизвестных данных такая гарантия отсутствует. Для обеспечения по отношению к неизвестным данным могут быть использованы более сложные методы, такие как конформное предсказание.

функцию потерь пинбол
предельного покрытия
Википедии