1 votos

Aprendizaje automático en matlab 2010

Estoy tratando de desarrollar un modelo de comercio. Utiliza ciertas características técnicas y fundamentales y el modelo aprende del pasado. Tengo una salida de 3 clases: alcista, neutral y bajista.

Al probar las redes neuronales, obtuve una precisión de entrenamiento de alrededor del 85%, una precisión de validación cruzada del 75% y una precisión de prueba del 75% con el conjunto CV y el conjunto de prueba extraídos del conjunto completo. Lo estoy haciendo en matlab 2010 utilizando nprtool. El software hace los cortes del conjunto CV y del conjunto de prueba (20% cada uno y el resto del 60% se utiliza para el entrenamiento).

Tras el entrenamiento, utilizo el mismo modelo para probarlo con otros datos. En este caso, la precisión desciende a alrededor del 34% (lo que supongo que es una clasificación aleatoria con 3 clases). Los nuevos datos con los que hago la prueba son muy similares a los utilizados para el entrenamiento. También intenté intercambiar los conjuntos de datos, pero los resultados son los mismos. Utilicé el siguiente comando para probar con el modelo (lo mismo se utilizó para probar la precisión de los datos de entrenamiento también con Xtest reemplazado por Xtrain). Aquí net denota el modelo entrenado.

output = sim(net, Xtest');

Para la NN he utilizado 100.000 muestras, 250 características de entrada y 100 nodos en la capa oculta.

Intenté algo similar usando libsvm (llamado desde matlab). Aquí también me encuentro con lo mismo. Durante el entrenamiento, los parámetros se optimizan a través de la validación cruzada y la exactitud CV llega al 73%. Sin embargo, cuando se prueba con nuevos datos la precisión cae a alrededor del 35%.

Para la SVM entrené con 20.000 muestras y 250 características. Utilizo el siguiente comando:

[outputTest, accuracyTest, prob] = svmpredict(Ytest,Xtest,model);

Por favor, ayuda si alguien se ha encontrado con un problema similar y tiene un remedio.

0voto

David Basarab Puntos 111

Esto puede deberse a varias razones:

  1. El "new data" que utiliza el post-entrenamiento y la post-validación es not drawn de la misma distribución que la utilizada para crear/dibujar los datos de entrenamiento, prueba y validación.
  2. Como no ha mencionado nada relacionado con las características de entrada en su conjunto de datos, asumo que el stock/option/derivative/instrument price es uno de ellos. También asumo que sabes que el movimiento de los precios es stochastic en la naturaleza (o, al menos, el modelo actualmente aceptado es que los movimientos de los precios presentan un comportamiento estocástico de paseo aleatorio). Hay que tenerlo en cuenta. Puede consultar cualquier libro de texto estándar sobre finanzas cuantitativas (por ejemplo, Wilmott).
  3. Puede ser overfitting the model
  4. El curse of dimensionality .
  5. Sus datos no son normalized/preprocessed en la forma correcta. De nuevo, no puedo decir más ya que no sé cómo son tus datos.
  6. En principio, es un problema muy difícil. Si fuera fácil, pues todos estaríamos jubilados. Quiero decir que hay no free-lunch . :)

0voto

En primer lugar, hay que fijarse en los módulos WAV y DDR de Jurik Research para ver un enfoque concreto de compresión y descorrelación de datos de series temporales antes de introducirlos en las RNA. Según investigaciones recientes, también parece que se han obtenido mejores resultados utilizando wavelets en datos rezagados (2,5,10 bares) junto con indicadores y estadísticas de resumen como la asimetría y la curtosis.

Tienes demasiadas entradas, y si hay alguna correlación entre ellas, estarás desvirtuando el propósito de las RNA. Una regla básica de las RNA es que perderán tiempo aprendiendo la correlación entre las características de entrada, así que si se elimina y se utilizan entradas ortogonales (correlación cero), los resultados pueden ser mejores.

Por último, el análisis intermercado también ha dado mejores resultados que la permanencia dentro de los activos. Es decir, empezar a mirar otros índices (con y sin retraso) como entradas.

No se preocupe por los malos resultados: he obtenido resultados similares utilizando datos normalizados, 4 wavelets que representan los máximos y cuatro wavelets que representan los mínimos (y una variedad de rezagos) para un problema de 2 clases (mañana es una ganancia(y>0) o una pérdida(y<0)) con resultados muy pobres.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X