Регрессия опорных векторов для многомерного прогнозирования временных рядов

22

Кто-нибудь пытался прогнозировать временные ряды, используя регрессию опорных векторов?

Я понимаю машины опорных векторов и частично понимаю регрессию опорных векторов, но не понимаю, как их можно использовать для моделирования временных рядов, особенно многомерных временных рядов.

Я пытался прочитать несколько статей, но они слишком высокого уровня. Может ли кто-нибудь объяснить в простом выражении, как они будут работать, особенно в отношении многомерных временных рядов?

РЕДАКТИРОВАТЬ: Чтобы уточнить немного, позвольте мне попытаться объяснить с примером цены акций.

Скажем, у нас есть цены на акции в течение N дней. Затем для каждого дня можно построить вектор признаков, который в простом случае может быть ценой предыдущего дня и ценой текущего дня. Ответом для каждого векторного признака будет цена следующего дня. Таким образом, учитывая вчерашнюю цену и сегодняшнюю цену, цель будет заключаться в прогнозировании цены на следующие дни. Что я не понимаю, скажем, у нас есть данные за шесть месяцев обучения, как бы вы сделали больший акцент на более поздние векторы функций?

хороший рассказчик
источник
Можете ли вы опубликовать документы, на которые вы ссылаетесь?
Рам Ахлувалия
1
Прогнозирование временных рядов с помощью локальной векторной регрессионной машины поддержки, Родриго Фернандес, svms.org/regression/Fern.pdf Поддержка векторной регрессии для прогнозирования финансовых временных рядов, Вэй Хао и Сонгнян Ю, springerlink.com/index/946802600u4552m8.pdf
raconteur

Ответы:

18

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

По существу, регрессионный опорный вектор представляет собой метод дискриминационной регрессии, очень похожий на любой другой метод дискриминационной регрессии. Вы даете ему набор входных векторов и связанных ответов, и он соответствует модели, чтобы попытаться предсказать ответ на основе нового входного вектора. Ядро SVR, с другой стороны, применяет одно из многих преобразований к вашему набору данных до этапа обучения. Это позволяет ему улавливать нелинейные тренды в наборе данных, в отличие, например, от линейной регрессии. Хорошим ядром, с которого можно начать, вероятно, будет Gaussian RBF - у него будет гиперпараметр, который вы можете настроить, поэтому попробуйте пару значений. И затем, когда вы почувствуете, что происходит, вы можете попробовать другие ядра.

ИксИксяYяИксTYT(скажем) доходность этой акции на следующей неделе. Таким образом, ваш SVR узнает, как прогнозировать доходность на следующей неделе на основе текущего спреда MA и 20-дневного тома. (Эта стратегия не сработает, поэтому не стоит слишком волноваться;)).

Если документы, которые вы читали, были слишком сложными, вы, вероятно, не хотите пытаться внедрить SVM самостоятельно, поскольку это может быть сложно. Во IIRC есть пакет "kernlab" для R, в котором реализована SVM-реализация Kernel с несколькими ядрами, что обеспечит быстрый способ запуска и запуска.

Уильям
источник
@ Джейсон, спасибо за ответ. Меня смущает вопрос о том, как сделать более старые данные менее важными во время обучения, то есть, как дать важные последние, скажем, 100 примеров, а не последние 10 000 примеров. Кроме того, у меня есть некоторый опыт работы с SVM в Python, поэтому я хочу его использовать.
raconteur
Вы не можете действительно использовать все прошлые данные в качестве векторного признака; Вы должны преобразовать это так или иначе в значимую особенность. Например, рассмотрим усреднение последних 20 значений временного ряда или текущего значения ряда, разделенного на скользящее среднее. Это функции, которые указывают в одном простом числе характеристику импорта набора данных. Придумайте, скажем, 10 или около того функций, которые, по вашему мнению, будут максимально предсказуемыми. Таким образом, чтобы сделать более старые данные менее важными, вы бы сделали их менее важными при определении своих функций (т. Е. Используйте более короткие скользящие средние).
Уильям
@ Джейсон, позвольте мне объяснить это на примере цены акций. Скажем, у нас есть цены на акции в течение N дней. Затем для каждого дня можно построить вектор признаков, который в простом случае может быть ценой предыдущего дня и ценой текущего дня. Ответом для каждого векторного признака будет цена следующего дня. Таким образом, учитывая вчерашнюю цену и сегодняшнюю цену, цель будет заключаться в прогнозировании цены на следующие дни. Что я не понимаю, скажем, у нас есть данные за шесть месяцев обучения, как бы вы сделали больший акцент на более поздние векторы функций?
raconteur
2
О, я понимаю, что ты имеешь в виду сейчас. Короткий ответ: вы не можете, по крайней мере, без реинжиниринга SVM, чтобы понять понятие свежести. SVM определяется в терминах пар xy, а не упорядоченных пар xy, и поэтому целевая функция, которую он минимизирует, является функцией указанных пар. OTOH, вы можете запустить несколько отдельных SVM, один с прошлым месяцем, один с прошлым годом и один с прошлыми двумя годами, а затем сделать средневзвешенное значение ответов, которые вы получите, основываясь на вашем личном предпочтении недавних и . старые данные (например, 0,7 * за прошлый месяц + 0,2 * за прошлый год + 0,1 * за последние 2 года).
Уильям
@William .. есть ли у вас какие-либо рекомендации относительно того, какие алгоритмы машинного обучения лучше всего подходят для прогнозирования временных рядов (та же проблема, которую задавал raconteur), кроме SVM? будет ли ответ отличаться при применении в другом домене? например, цена акций против прогноза цепочки поставок (прогноз спроса на продукты, которые мы продаем) ..
Lam
1

Мой личный ответ на заданный вопрос - «да». Вы можете рассматривать это как «за» или «против», что существует бесконечное множество возможностей для описания прошлого. Попробуйте выбрать функции, которые соответствуют тому, как вы можете кратко описать кому-то, что рынок только что сделал [например, «цена». на 1.4 "ничего вам не говорит, если это не связано с каким-то другим числом]. Что касается цели SVM, то самыми простыми являются разница в ценах и соотношение цен в течение двух дней подряд. Поскольку они напрямую связаны с судьбой гипотетической торговли, они кажутся хорошим выбором.

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

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

Удачи!

Elroch
источник
Добро пожаловать на наш сайт!
kjetil b halvorsen
0

На Quantum Financier приведен пример использования SVM для прогнозирования финансовых рядов. Его можно легко преобразовать из системы классификации (Long / Short) в систему регрессии.

Zach
источник
1
ДОРОГОЙ БОГ, ПОЖАЛУЙСТА, никто не использует эту стратегию! Вот как Уолл-стрит курит новичков :( Самым старым трюком в книге является модернизация статистической модели с использованием некоторой базовой технической аналитики, такой как RSI, так что новички думают, что они заработали золото.
Уильям
1
@ Джейсон из оригинального поста «Я также хочу прояснить, что я не думаю, что это хорошая система». Тем не менее, это хороший пример того, как приспособить машину опорных векторов к временному ряду.
Зак