Je fais un programme qui prédit le résultat d'un match de football en utilisant encog. J'ai créé un réseau de neurones, l'ai formé avec des données de 90 correspondances avec la méthode de formation de propagation résiliente. J'ai marqué des résultats de match comme 1 pour la victoire à la maison, 0 pour le tirage au sort et -1 pour la victoire à l'extérieur.Programme de prédiction du football encog: Prédictions incohérentes
Le problème est en prévision. Parfois, j'obtiens un taux de succès de 50% et d'autres fois je reçois aussi bas que 33%. C'est comme utiliser une fonction aléatoire. Ce que j'ai remarqué est que presque toujours le résultat le plus prédit est 1 (environ 70%). J'ai essayé de changer le nombre de couches cachées, nombre de formation mais sans chance, il oscille toujours. Peut n'importe qui s'il vous plaît aidez-moi ou pinte moi dans la bonne direction si je fais quelque chose de mal.
Voici le code du réseau de neurones. Je reçois des données d'entraînement et des données de prédiction de la base de données.
Predictor(NeuralDataSet trainingData){
trainingSet = trainingData;
network = new BasicNetwork();
network.addLayer(new BasicLayer(16));
network.addLayer(new BasicLayer(3));
network.addLayer(new BasicLayer(1));
network.getStructure().finalizeStructure();
network.reset();
}
Formation
public void train(int epoch){
int i =0;
final Train train =new ResilientPropagation(network,trainingSet);
while(i<=epoch){
train.iteration();
i++;
}
}
Prédire
public void successRate(NeuralDataSet trainingData){
int counter = 0;
int correct = 0;
int home=0;
int away=0;
int draw=0;
for(MLDataPair pair: trainingData) {
final MLData output = network.compute(pair.getInput());
if(pair.getIdeal().getData(0)==Math.round(output.getData(0)))
correct++;
counter++;
}
System.out.println((double)correct/(double)counter);
}
1.) Je nourrissais les données réseau de neurones 1000. actuellement à l'essai avec plus/moins depuis les choses se sont améliorées.
2,3.) J'ai 16 paramètres d'entrée. Ils comprennent: les points de l'équipe locale, les victoires à domicile, les matchs nuls, les défaites, le total des équipes à domicile gagnées, perdues, nuls et formées (les points gagnent au cours des 5 derniers matchs). Mêmes données vont pour l'équipe à l'extérieur seulement au lieu de l'équipe à la maison victoires, tirages, pertes l'équipe à l'extérieur gagne, tire, les pertes sont utilisées. Je vais essayer avec différentes données d'entraînement.
Merci de votre réponse. La partie sur le nombre de nœuds cachés a aidé beaucoup puisque je reçois maintenant des prédictions qui sont beaucoup plus réalistes qu'auparavant quand min de 80% prédictions étaient soit 1 ou 0. Je vais mettre à jour le premier post avec des réponses, s'il vous plaît vérifier et placer un commentaire ! – user1533166
J'ai le même problème en utilisant Encog. Des mises à jour à ce sujet? –
Quand vous dites "vous aurez besoin de faire des passes multiples alimentant les données d'entraînement pour faire converger le réseau", que voulez-vous dire? Quand j'entraîne mes données, je les passe via 'do {train.Iteration()} while (train.Error> 0.001);'. Est-ce que ce n'est pas suffisant? Remarque: Mes données ne convergent pas, le taux d'erreur est de 92% et je n'ai que 200 lignes de données. – user1477388