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.