Bonjour,

J'essaie de trouver des motifs récurrents dans un très grand fichier de données, le tout avec le package neural net.

Mon fichier a cette tête (à ceci près qu'il est long de 30,204,447 lignes):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
id.company,EPS.or.Sales,FQ.or.FY,fiscal,date,value
 
000001,EPS,FY,2001,20020201,-5.520000
000001,SAL,FQ,2000,20020401,70.300003
000001,SAL,FY,2001,20020325,49.200001
000002,EPS,FQ,2008,20071009,-4.000000
000002,SAL,FY,2008,20071009,1.400000
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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)
 
#testing the output
temp_test <- subset(testset, select=c("id.company", "fiscal", "date"))
ann.results <- compute(ann, temp_test)
 
#display the results
cleanoutput <- cbind(testset$value, as.data.frame(ann.results$net.result))
colnames(cleanoutput) <- c("Expected Output", "NN Output")
 
head(cleanoutput, 30)
Mon problème, c'est que la fonction compute me retourne la même valeur pour toutes mes prédictions, qu'importe les données du testing set en entrée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
     Expected Output   NN Output
1001     2006.500000 1417.796651
1002     2009.000000 1417.796651
1003     2006.500000 1417.796651
1004     2002.500000 1417.796651
Je suis débutant sur R et ses packages de réseaux de neurones mais j'ai trouvé sur le net que quelques unes des raisons de tels résultats peuvent être:

  • un nombre insuffisant d'exemples pour l'aprentissage (là j'en utilise 1,000 mais j'ai aussi essayé avec un million et le résultat était aussi peu concluant... à ceci près que l'apprentissage prenait alors 4 heures)
  • une formule mal gerée par le réseau


Je me doute que je fais une erreur quelque part mais je sais pas trop où et je tourne un peu en rond donc toute aide est la bienvenu !
Merci.