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):
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).
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 donc écrit le code suivant sur R Studio:
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
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)
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:
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
- 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.
Partager