23 votos

Regresión de vectores soporte para la predicción de series temporales multivariantes

¿Alguien ha intentado predecir series temporales utilizando la regresión de vectores soporte?

Entiendo las máquinas de vectores soporte y entiendo parcialmente la regresión de vectores soporte, pero no entiendo cómo se pueden utilizar para modelar series temporales, especialmente series temporales multivariantes.

He intentado leer algunos artículos, pero son de un nivel demasiado alto. ¿Puede alguien explicarme en términos sencillos cómo funcionan, especialmente en relación con las series temporales multivariantes?

EDIT:Para explicarlo mejor, voy a poner un ejemplo de la comilla de las acciones.

Supongamos que tenemos las comillas bursátiles de N días. Entonces, para cada día podríamos construir un vector de características, que, en un caso sencillo, podría ser el precio del día anterior y el precio del día actual. La respuesta para cada vector de características sería el precio del día siguiente. Así, dados el precio de ayer y el precio de hoy, el objetivo sería predecir el precio del día siguiente. Lo que no entiendo es, digamos que tenemos seis meses de datos de entrenamiento, ¿cómo dar mayor énfasis a los vectores de características más recientes?

20voto

sztanpet Puntos 179

En el contexto de la regresión por vectores de soporte, el hecho de que los datos sean series temporales es relevante sobre todo desde un punto de vista metodológico: por ejemplo, no se puede hacer una validación cruzada k-fold y hay que tomar precauciones al realizar pruebas retrospectivas/simulaciones.

Básicamente, la regresión por vectores de soporte es una técnica de regresión discriminativa como cualquier otra técnica de regresión discriminativa. Se le da un conjunto de vectores de entrada y las respuestas asociadas, y se ajusta un modelo para tratar de predecir la respuesta dado un nuevo vector de entrada. Por otro lado, Kernel SVR aplica una de las muchas transformaciones al conjunto de datos antes del paso de aprendizaje. Esto le permite captar tendencias no lineales en el conjunto de datos, a diferencia, por ejemplo, de la regresión lineal. Un buen kernel para empezar sería probablemente el RBF Gaussiano -- tendrá un hiperparámetro que puedes ajustar, así que prueba un par de valores. Y luego, cuando tengas una idea de lo que está pasando, puedes probar otros núcleos.

Con una serie temporal, un paso importante es determinar cuál es su "vector de características" ${\bf x}$ será; cada $x_i$ se denomina "característica" y puede calcularse a partir de datos presentes o pasados, y cada $y_i$ la respuesta, será el cambio futuro durante algún periodo de tiempo de lo que sea que estés intentando predecir. Por ejemplo, una acción. Tienes precios a lo largo del tiempo. Tal vez sus características sean a.) el diferencial 200MA-30MA y b.) la volatilidad de 20 días, por lo que calcula cada una de ellas. ${\bf x_t}$ en cada momento, junto con $y_t$ la rentabilidad de la semana siguiente, por ejemplo. De este modo, su SVR aprende a predecir la rentabilidad de la semana siguiente basándose en el diferencial actual de la MA y la volatilidad a 20 días (esta estrategia no funcionará, así que no se emocione demasiado ;)).

Si los documentos que leíste eran demasiado difíciles, probablemente no quieras intentar implementar una SVM por ti mismo, ya que puede ser complicado. IIRC hay un paquete "kernlab" para R que tiene una implementación Kernel SVM con una serie de núcleos incluidos, por lo que proporcionaría una forma rápida de ponerse en marcha.

1voto

NotNicolaou Puntos 696

Mi respuesta personal a la pregunta es "sí". El hecho de que existan infinitas opciones para describir el pasado puede considerarse una ventaja o un inconveniente, pero intente elegir características que se correspondan con la forma de describir de forma concisa a alguien lo que acaba de hacer el mercado [por ejemplo, "el precio está en 1,4" no le dice nada si no está relacionado con alguna otra cifra]. En cuanto al objetivo de la SVM, los más sencillos son la diferencia de precios y la relación de precios de dos días consecutivos. Como corresponden directamente al destino de una operación hipotética, parecen buenas opciones.

Tengo que discrepar pedantemente con la primera afirmación de Jason: se puede hacer k-fold cross-validation en situaciones como la descrita por raconteur y es útil (con una salvedad que explicaré). La razón por la que es estadísticamente válido es que las instancias del objetivo en este caso no tienen ninguna relación intrínseca: son diferencias o proporciones disjuntas. Si en lugar de ello se opta por utilizar datos a mayor resolución que la escala del objetivo, habría motivos para preocuparse de que pudieran aparecer instancias correlacionadas en el conjunto de entrenamiento y en el conjunto de validación, lo que comprometería la validación cruzada (por el contrario, al aplicar la SVM no se dispondrá de instancias cuyos objetivos se solapen con el que interesa).

Lo que sí reduce la eficacia de la validación cruzada es que el comportamiento del mercado cambie con el tiempo. Hay dos formas posibles de abordar este problema. La primera es incorporar el tiempo como una característica (no he encontrado esto muy útil, tal vez porque los valores de esta característica en el futuro son todos nuevos). Una alternativa bien motivada es utilizar la validación walk-forward (lo que significa probar tu metodología en una ventana deslizante de tiempo, y probarla en el periodo justo después de esta ventana. Si el comportamiento cambia con el tiempo, el dicho atribuido a Niels Bohr "La predicción es muy difícil, especialmente sobre el futuro" es especialmente apropiado. Existen pruebas en la bibliografía de que el comportamiento de los mercados financieros cambia con el tiempo y, por lo general, se vuelve más eficiente, lo que suele significar que los sistemas de negociación eficaces empeoran su rendimiento con el tiempo.

Buena suerte.

0voto

Boris Tsirelson Puntos 191

Hay un ejemplo en Financiero cuántico para utilizar una SVM en la previsión de series financieras. Podría convertirse fácilmente de un sistema de clasificación (Largo/Corto) a un sistema de regresión.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X