Можно ли использовать сплайны для прогнозирования?

20

Я не могу точно сказать о характере данных, поскольку они являются собственностью, но предположим, что у нас есть такие данные: каждый месяц некоторые люди подписываются на услугу. Затем в каждом последующем месяце эти люди могут обновить услугу, прекратить обслуживание или получить отказ в обслуживании (например, из-за неуплаты). Для самой ранней когорты в наших данных у нас есть данные за 2 года (24 месяца).

Число людей, присоединяющихся каждый месяц, велико (в диапазоне 100 000), а число людей, выполняющих любую из трех вещей, исчисляется тысячами. Однако мы используем не данные отдельного уровня (которые будут состоять из миллионов строк), а данные, агрегированные по месяцам и группам (какая доля каждой группы выполняет каждую вещь каждый месяц).

Мы моделировали существующие данные с использованием многомерных адаптивных сплайнов регрессии (MARS) и нашли некоторые интересные результаты. Тем не менее, я беспокоюсь об их использовании для экстраполяции или прогнозирования в будущем. Мои опасения связаны с тем, что прогнозы на будущее обязательно находятся за пределами выборочного пространства (с точки зрения времени), и сплайны могут стать нестабильными для экстраполяции.

Это законный метод? Какие проблемы существуют и могут ли они быть решены?

Питер Флом - Восстановить Монику
источник
2
Конечно, их можно использовать для прогнозирования, но вам нужно обратить внимание на то, как правильно настроить гиперпараметры модели. Выбор сплайн-функции (константа, линейная, кубическая) также важны. IIRC, линейные сплайн-функции в MARS обычно используются, и сплайны более высокого порядка избегают из-за необходимости экстраполяции / переобучения.
Sycorax говорит восстановить Monica
1
Есть ли что-то, что вас особенно беспокоит, что может заставить вас усомниться в методе, который вы использовали? Ваша точность оказалась неожиданно низкой или что-то в этом роде? Вы пробовали другие методы? Как они сравниваются?
one_observation
1
@ Софолог Главным образом, что они в конечном итоге будут очень недоступны для новых значений, так как все узлы и линии основаны на значениях, которые были в прошлом. Так, скажем, линейный сплайн, который говорит, что «увеличение на XXX для каждого года после 2014 года» будет основываться только на данных за 2015 год, но применительно к 2016 году будет продолжаться в том же направлении.
Питер Флом - Восстановить Монику
3
@PeterFlom: На самом деле я был очень смущен вашим вопросом (сплайны очень распространены для предсказания), пока я не прочитал ваш ответ Софологу. Я отредактировал ваш вопрос, чтобы подчеркнуть, что именно вас беспокоит. Пожалуйста, просмотрите.
Клифф AB
2
@PeterFlom: при условии, что мои правки верны, вы моделируете эффект времени сплайном? Если это так, я был бы весьма обеспокоен. Однако, если вы моделируете эффект времени с эффектом запаздывания и другие ковариаты со сплайнами, я бы не увидел проблемы?
Клифф А.Б.

Ответы:

15

Исходя из моей интерпретации вопроса, основной вопрос, который вы задаете, заключается в том, можете ли вы смоделировать время как сплайн.

е^(Икс)знак равноΣязнак равно1NαяВя(Икс[я])
αяВяИкс[я]
мaИкс(0,Икс[я]+ся)

р

е^(Икс)знак равно5+мaИкс(0,Икс-5)+2мaИкс(0,Икс-10)

10
е^(Икс)знак равно10+2(Икс-10)знак равно2Икс-10
5

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

Есть пара вещей, которые я бы порекомендовал вам попробовать. Первым будут рекуррентные сети. Если ваши временные ряды не такие длинные (и не имеют долгосрочных зависимостей), вы сможете использовать обычную ванильную рекуррентную сеть. Если вы хотите быть в состоянии понять, что происходит, вы можете использовать выпрямленную линейную единицу с уклонами в качестве функции активации, и это будет эквивалентно выполнению моделирования MARS на подмножестве временных рядов и «памяти», которую представляет рекуррентная нейронная сеть. держит. Было бы трудно интерпретировать, как сеть управляет памятью, но вы должны получить некоторое представление о том, как обрабатывается подпространство относительно сгенерированной кусочно-линейной функции. Также, если у вас есть статические функции, которые не относятся к временным рядам, их относительно легко использовать в сети.

Если у вас есть очень длинные временные ряды и могут иметь долгосрочные зависимости, я рекомендую использовать одну из закрытых рекуррентных сетей, например, GRU или LSTM.

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

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

Надеюсь это поможет.

Армен Агаджанян
источник