kusto series_decompose_forecast () возвращает все нули

Я пытаюсь изучить функцию прогнозирования, предоставляемую kusto. Я попробовал образец, который, очевидно, генерировал тенденцию прогнозирования, показанную в документах. Однако затем я попробовал функцию прогнозирования с аналогичными параметрами на наших производственных данных. По какой-то причине все прогнозируемые значения равны нулю.

Наши исходные данные kusto выглядят следующим образом:

введите здесь описание изображения

Я хотел бы спрогнозировать значения a0. Вот мой запрос:

...
| distinct ['name']))
| summarize a0=avg(todouble(['temp'])) by d0=bin(['timestamp'], 1s), d1=['name']
| summarize timeAsList = make_list(d0), dataAsList0 = make_list(a0)
| extend forecast = series_decompose_forecast(dataAsList0, 60*60*24*3) // 3 day forecast
| render timechart 

Вот что отображает запрос:

введите здесь описание изображения

Эта строка - всего лишь наши производственные данные, а не прогноз. Как видите, фактический массив прогнозов - это просто массив нулей.

Что не так с запросом?


person Jeremy Fisher    schedule 27.02.2020    source источник


Ответы (1)


Второй параметр series_decompose_forecast определяет количество точек, которые следует исключить из обучения из исходного временного ряда. В вашем случае длина вашего исходного временного ряда составляет ~ 1: 39 часов (просто взглянув на снимок экрана), поэтому установка 3 дней для исключения не оставляет данных для обучения. Вам необходимо расширить временной ряд прогнозным периодом до вызова series_decompose_forecast. Также я рекомендую использовать make-series для создания временных рядов, заполняя пустые промежутки, вместо того, чтобы суммировать по корзинам и составлять список. Итак, окончательный запрос должен выглядеть так, как показано ниже. Я не могу проверить это, так как у меня нет доступа к данным. Если вам нужно, поделитесь образцом данных, и я могу составить вам полный рабочий запрос.

спасибо Ади

let start_time=datetime(...);
let end_time=datetime(...);
let dt=1s;
let forecat_points=60*60*24*3
tbl
| make-series a0=avg(todouble(temp)) on timestamp from start_time to (end_time+forecast_points*dt) step dt 
| extend forecast = series_decompose_forecast(a0, forecast_points) // 3 day forecast
| render timechart
person Adi E    schedule 01.03.2020