J'ai la configuration suivante pour un projet de recherche Finance / Machine Learning dans mon université: j'applique un (Deep) Neural Network (MLP) avec la structure suivante dans Keras / Theano pour distinguer les actions surperformantes (étiquette 1) des actions sous-performantes ( étiquette 0). En premier lieu, j'utilise simplement des multiples de valorisation réels et histroriques. Parce que ce sont des données de stock, on peut s'attendre à avoir des données très bruyantes. En outre, une précision stable hors échantillon supérieure à 52% pourrait déjà être considérée comme bonne dans ce domaine.
La structure du réseau:
- Couche dense avec 30 fonctionnalités en entrée
- Relu-activation
- Couche de normalisation par lots (sans cela, le réseau ne converge pas du tout en partie)
- Couche de suppression facultative
- Dense
- Relu
- Lot
- Abandonner
- .... Couches supplémentaires, avec la même structure
- Couche dense avec activation sigmoïde
Optimiseur: RMSprop
Fonction de perte: entropie croisée binaire
La seule chose que je fais pour le prétraitement est une mise à l'échelle des caractéristiques à la plage [0,1].
Maintenant, je rencontre un problème typique de surajustement / sous-ajustement, que je résoudrais normalement avec Dropout ou / et la régularisation du noyau L1 et L2. Mais dans ce cas, Dropout et la régularisation L1 et L2 ont un mauvais impact sur les performances, comme vous pouvez le voir dans les graphiques suivants.
Ma configuration de base est la suivante: 5 couches NN (couche d'entrée et de sortie incluse), 60 neurones par couche, taux d'apprentissage de 0,02, pas de L1 / L2 et pas d'abandon, 100 époques, normalisation de lot, taille de lot 1000. Tout est formé sur 76000 échantillons d'entrée (classes presque équilibrées 45% / 55%) et appliqués à environ la même quantité d'échantillons de test. Pour les graphiques, je n'ai changé qu'un paramètre à la fois. "Perf-Diff" signifie la différence moyenne de performance des actions des actions classées 1 et des actions classées 0, qui est fondamentalement la métrique de base à la fin. (Plus c'est élevé, mieux c'est)
Dans le cas l1, le réseau classe essentiellement chaque échantillon dans une classe. Le pic se produit parce que le réseau recommence, mais classe 25 échantillons correctement au hasard. Ce pic ne doit donc pas être interprété comme un bon résultat, mais comme une valeur aberrante.
Les autres paramètres ont l'impact suivant:
Avez-vous des idées pour améliorer mes résultats? Y a-t-il une erreur évidente que je fais ou y a-t-il une réponse simple aux résultats de la régularisation? Souhaitez-vous suggérer de faire tout type de sélection de fonctionnalités avant la formation (par exemple PCA)?