Есть ли причина, по которой TimeSeriesSplit от sklearn поддерживает только одношаговый прогноз? - PullRequest
0 голосов
/ 01 ноября 2018

Sklearn's TimeSeriesSplit - это полезный способ реализации временного ряда, эквивалентного перекрестной проверке kfold. Похоже, однако, что он имеет поддержку только для одношагового горизонта и не имеет многошаговых горизонтов, например он из набора данных [1, 2, 3, 4] может использоваться для создания следующих наборов поездов и тестов соответственно

[1, 2],       [3]
[1, 2, 3],    [4]
[1, 2, 3, 4], [5].

То, что не могло быть произведено, - это что-то с горизонтом многоэтапного прогноза. Горизонт прогнозирования разделения многоступенчатых временных рядов будет выглядеть как

[1, 2,],      [3, 4]
[1, 2, 3],    [4, 5]
[1, 2, 3, 4], [5, 6],

например.

Я хотел бы знать, есть ли для этого веская причина? Я могу реализовать свою собственную версию TimeSeriesSplit, так что это не проблема, однако я новичок в области прогнозирования. Насколько я понимаю, использование такой процедуры является статистически лучшим способом измерения точности модели. Тогда мне кажется любопытным, что sklearn не предоставляет эту функциональность из коробки и хотел бы знать, есть ли причина, почему и если я упустил из виду какую-либо причину того, почему наличие многоэтапного горизонта прогноза, как показано выше, означает мой метод статистической точности оценки должны измениться?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я использовал один и тот же перекрестный валидатор с более чем 1 образцом в сгибе Но в их примере здесь у них всего 5 выборок и 5 сгибов, то есть по одному образцу на сгиб. Напротив, здесь они уже показывают, что существует несколько выборок на сгиб.

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

0 голосов
/ 01 ноября 2018

Есть причина, но это не «хорошая» причина. Большинство устоявшихся методов прогнозирования обучают модель ошибкам на один шаг вперед, поскольку для многоэтапного прогнозирования они будут выполнять рекурсивное прогнозирование вместо прямого прогнозирования каким-либо образом (т. Е. Для большинства методов прогнозирования нет смысла для разделения на несколько временных рядов). ).

Подозреваю, поэтому авторы sklearn не беспокоились.

Если вы хотите использовать R вместо Python, функция tsCV () выполняет разбиение временных рядов типа,

[1, 2,],      [4]
[1, 2, 3],    [5]
[1, 2, 3, 4], [6]

Однако tsCV не возвращает само разделение по временным рядам, вместо этого он принимает в качестве входных данных временной ряд + прогнозную модель и возвращает матрицу ошибок на основе CV.

Я не знаю, делает ли это именно так, как вы этого хотите или нет.

...