¿Alguien ha intentado la predicción de series de tiempo utilizando la regresión de vectores de soporte?
Entiendo las máquinas de vectores de soporte y entiendo parcialmente la regresión de vectores de soporte, pero no entiendo cómo se pueden usar para modelar series de tiempo, especialmente series de tiempo multivariadas.
He tratado de leer algunos documentos, pero son de un nivel demasiado alto. ¿Alguien puede explicar en términos simples cómo funcionarían, especialmente en relación con series de tiempo multivariadas?
EDITAR: Para elaborar un poco, déjenme intentar explicarlo con un ejemplo de precio de acciones.
Digamos que tenemos precios de acciones por N días. Luego, para cada día podríamos construir un vector de características, que, en un caso simple, 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. Por lo tanto, dado el precio de ayer y el precio de hoy, el objetivo sería predecir el precio de los próximos días. Lo que no entiendo es, digamos que tenemos datos de capacitación de seis meses, ¿cómo le daría mayor énfasis a los vectores de características más recientes?
fuente
Respuestas:
En el contexto de la regresión de vectores de soporte, el hecho de que sus datos sean una serie de tiempo es principalmente relevante desde un punto de vista metodológico; por ejemplo, no puede hacer una validación cruzada k-fold, y debe tomar precauciones cuando ejecute backtests / simulaciones.
Básicamente, la regresión vectorial de soporte es una técnica de regresión discriminativa muy parecida a cualquier otra técnica de regresión discriminativa. Le da un conjunto de vectores de entrada y respuestas asociadas, y se ajusta a un modelo para tratar de predecir la respuesta dado un nuevo vector de entrada. Kernel SVR, por otro lado, aplica una de las muchas transformaciones a su conjunto de datos antes del paso de aprendizaje. Esto le permite recoger tendencias no lineales en el conjunto de datos, a diferencia de, por ejemplo, la regresión lineal. Un buen núcleo para comenzar probablemente sería el RBF gaussiano: tendrá un hiperparámetro que puede ajustar, así que pruebe un par de valores. Y luego, cuando tenga una idea de lo que está sucediendo, puede probar otros núcleos.
Con una serie temporal, un paso de importación es determinar cuál será su "vector de características" ; cada se llama una "característica" y se puede calcular a partir de datos presentes o pasados, y cada , la respuesta, será el cambio futuro durante un período de tiempo de lo que intente predecir. Haga un inventario por ejemplo. Tienes precios con el tiempo. Tal vez sus características son a.) El diferencial 200MA-30MA yb.) La volatilidad de 20 días, por lo que calcula cada en cada punto en el tiempo, junto con , el (digamos) el rendimiento de la semana siguiente en ese stock . Por lo tanto, su SVR aprende cómo predecir el retorno de la semana siguiente en función de la propagación actual de MA y el volumen de 20 días. (Esta estrategia no funcionará, así que no lo hagasX Xyo yyo Xt yt
Si los documentos que leyó fueron demasiado difíciles, probablemente no quiera intentar implementar un SVM usted mismo, ya que puede ser complicado. IIRC hay un paquete "kernlab" para R que tiene una implementación de Kernel SVM con varios núcleos incluidos, por lo que proporcionaría una forma rápida de comenzar a funcionar.
fuente
Mi respuesta personal a la pregunta que me hicieron es "sí". Puede ver como un profesional o una estafa que hay una infinidad de opciones de características para describir el pasado. Intente elegir características que correspondan a cómo podría describir de manera concisa a alguien lo que el mercado acaba de hacer [por ejemplo, "el precio está en 1.4 "no le dice nada si no está relacionado con algún otro número]. En cuanto al objetivo de la SVM, los más simples son la diferencia de precios y la relación de precios durante dos días consecutivos. Como estos corresponden directamente al destino de un comercio hipotético, parecen buenas opciones.
Tengo que estar en desacuerdo pedagógicamente con la primera declaración de Jason: puede hacer una validación cruzada de k-fold en situaciones como la descrita por raconteur y es útil (con la condición de que lo explique). La razón por la que es estadísticamente válido es que las instancias del objetivo en este caso no tienen una relación intrínseca: son diferencias o proporciones disjuntas. Si opta por utilizar los datos a una resolución más alta que la escala del objetivo, habría motivos para preocuparse de que aparezcan instancias correlacionadas en el conjunto de entrenamiento y el conjunto de validación, lo que comprometería la validación cruzada (por el contrario, al aplicar el SVM no tendrá instancias disponibles cuyos objetivos se superpongan con el que le interesa).
Lo que sí reduce la efectividad de la validación cruzada es si el comportamiento del mercado está cambiando con el tiempo. Hay dos formas posibles de lidiar con esto. La primera es incorporar el tiempo como una característica (no he encontrado esto muy útil, quizás porque los valores de esta característica en el futuro son todos nuevos). Una alternativa bien motivada es usar la validación de avance (lo que significa probar su metodología en una ventana de tiempo deslizante y probarla en el período 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. Existe cierta evidencia en la literatura de que el comportamiento de los mercados financieros cambia con el tiempo, generalmente volviéndose más eficiente,
¡Buena suerte!
fuente
Hay un ejemplo de Quantum Financier para usar un SVM para pronosticar series financieras. Se podría convertir fácilmente de un sistema de clasificación (largo / corto) a un sistema de regresión.
fuente