J'utilise actuellement, dans le cadre d'un projet, le logiciel R et l'un de ses packages dédiés aux réseaux de neurones, neuralnet.
Le but est d'essayer de retrouver des tendances et des motifs dans un très important fichier de données contenant des résultats financiers d'entreprises afin d'à terme essayer de prédire les résultats futurs.
Mon fichier a cette tête (à ceci près qu'il est long de 30,204,447 lignes):
J'ai divisé ce fichier initial en 4 sous-fichiers chacun contenant les données annuelles/trimestrielles de ventes/earnings per share et c'est sur ces fichiers que je veux utiliser les réseaux de neurones pour voir si je peux, à l'aide des inputs id.company, fiscal et date, obtenir des prédictions précises (dans le cas en dessous, les chiffres annuels de ventes).
J'ai donc écrit le code suivant sur R Studio:
dataset <- read.table("fy_sal_data.txt",header=T, sep="\t") #my file doesn't actually use comas as separators
#extract training set and testing set trainset <- dataset[1:1000, ] testset <- dataset[1001:2000, ]
#building the NN ann <- neuralnet(value ~ id.company + fiscal + date, trainset, hidden = 3, lifesign="minimal", threshold=0.01)
Il arrive également qu'un message d'erreur apparaisse dès la phase d'apprentissage pour me dire qu'aucune convergence n'a été obtenue (m'empêchant alors d'exécuter la suite de mon code) mais cela semble être une autre manifestation du même problème.
Je suis débutant sur R et ses packages de réseaux de neurones mais j'ai trouvé sur le net que cela pouvait être du (sans exclure les potentielles erreurs dans le code) à une couche cachée trop petite (ce qui semble ici peu probable) ou un rythme d'apprentissage inadapté à l'algorithme utilisé (celui par défaut dans mon code au dessus est le "resilient backpropagation with weight backtracking").
J'ai essayé de changer d'algorithme et de passer sur une backpropagation avec un learning rate de 0.01 (valeur aléatoire, pour voir ce que ça donnait) mais j'obtiens un nouveau message d'erreur lors de l'entraînement:
" Error in if (reached.threshold < min.reached.threshold) : missing value where TRUE/FALSE needed". Manifestement il y a un problème avec la comparaison car une des deux valeurs doit manquer mais je crois pas que ce soient des arguments que l'utilisateur peut entrer.
Enfin je suis perdu et toute aide est la bienvenue.
Merci.