2014-02-18 3 views
1

Я работаю с программным обеспечением R (Lib e1071), и я пытаюсь получить прогнозы с использованием поддержки векторной регрессии. То, как я делаю это выглядит следующим образом:Финансовое прогнозирование временных рядов/SV Регрессия

Я windowizing цены на сырье закрытия с помощью N = 3 выходов:

s[t-3] s[t-2]  s[t-1] -> s[t] 
1.2350 1.2358  1.2354  1.2360 
.   .   .    . 
.   .   .    . 

etc... 

значение я хочу предсказать это у = s [т]. Тип SVM - «eps-регрессия», а ядро ​​«радиальное». Кроме того, я выполняю 10-кратное перекрестное подтверждение, чтобы получить лучшие параметры, гамма и стоимость.



Но у меня есть проблема:



Предсказание всегда очень близкое значение последнего значения с [K-1], для пример:

Last Vector: 

s[t-3] s[t-2]  s[t-1] -> s[t] 

1.2350 1.2358  1.2354  1.2355 

Предсказанные значения будут очень близкими значениями последнего значения s [t-1]. Я попытался увеличить количество изученных векторов (10K) и увеличить N урожаев (до 7), но результаты те же.

Может кто-нибудь сказать мне, почему это происходит и как я могу получить реальные прогнозы?



**

Добавление

**

Что касается любезного ответа от user__42, у меня есть некоторые проблемы с пониманием ваше объяснение:

1) позволяет сказать, У меня есть 3 обучаемых векторных набора

10 s[t-3]   12 s[t-2]  15 s[t-1] ->  11 s[t] 
5 s[t-4]   8 s[t-3]  9 s[t-2] ->  10 s[t-1] 
6 s[t-5]   12 s[t-4]  10 s[t-3] ->  15 s[t-2] 

Попытка прогнозирования предложил это у»:

y'[t] = y[t] - y[-t] 

Принимая выше пример

y'[t] = 11 - 15 -> y'[t] = y[t] - y[-1] 

Но предсказания в реальном времени, я не знаю у [т] для расчета y ':

y'[t] = x - 15 

2) С учетом приведенного выше примера, не могли бы вы объяснить, что вы имеете в виду следующими выражениями:

y'[nt] 


y'[-nt] 


y[nt] 
+0

Это может быть лучше для http://stats.stackexchange.com/. У них может быть больше понимания. –

+0

Что вы хотите сделать? Финансовые данные - слишком широкий термин. – Pedrom

+0

Надеюсь, теперь это станет более ясным. Благодарю. –

ответ

0

Если вы используете реальные данные финансовых временных рядов это поведение является частью проблемы - так финансовые временные ряды очень шумный.

Вы можете попробовать:

  1. Запишите ваши ядра-параметров и попробовать ню-SVR с тем же ядром-параметров и выберите Nu = 0,1. Таким образом, вы увеличите модель сложности сходящийся против «зубрежки» (в переводе с Google! «Auswendiglernen» на немецком языке)

1.a.edit Вы можете попробовать функцию потерь, которая не является классическим е-нечувствительной LF , как гауссовская функция потери (нет xp)

1.b.edit Я однажды использовал FaLK-SVR. Там вы можете разделить данные в суб-данных-окрестностях: Я думаю, что это поможет вам получить меньше «усредненных» результатов. FaLKM Пба является готовым к использованию реализации базирования на libSVM: http://disi.unitn.it/~segata/FaLKM-lib/

  1. включает S [T-13] и с [T-27] (а не значения только между (т-1, т! -2, t-3, t-13 и t-27), чтобы дать машине понять общий тренд.

  2. вы, конечно, нужно больше возможностей, если вы серьезно попытаться предсказать ряд, как это говорят, погода ;-), micro-blogging или вычисляемые функции (через скрытой марковской)

  3. Google для более легких игрушечных данных или посмотреть here

+0

Благодарим вас за ответ. Я пробовал ваши предложения (1. и 2.), и, к сожалению, у меня такое же поведение. Прогнозы всегда очень близки к последней цене. Может быть, может помочь увеличение интервала временных рядов? (t-2, t-5, t-9, t-13 и t-27) –

+0

Обновление: я увеличил расстояние следующим образом: [t-1], [t-13], [t-27] включая предложения 1. и 2. Результат: тот же исходный результат. –

+0

Хорошо, позвольте мне очистить no3: Ваши значения ввода - это простые значения y [-t] - поэтому машины не ошибаются, принимая y [-1] как самое близкое предположение относительно y. Попробуйте предсказать y '[t] = y [t] -y [-t] использовать y' [- nt] как Input. Таким образом, ваше расстояние ядра от x1 = [1,2,3,4] до x2 = [3,4,5,6] будет равно нулю. Если вам нужно y [t], то в качестве вывода просто добавьте (известный) y [-t] в y '[t]. Также попробуйте смешать значения y '[- nt] и y [-nt], чтобы различать поведение по низким и высоким значениям. Постарайтесь представить как можно больше информации о ядре. Играйте с (y [-nt] -y [-nt-2]) и так далее ... –

Смежные вопросы