Я делаю программу, которая предсказывает исход футбольного матча, используя encog. Я создал нейронную сеть, обучил ее на данных 90 совпадений методом обучения устойчивому распространению. Я отметил результаты матча как 1 за победу дома, 0 за ничью и -1 за победу на выезде.
Проблема в предсказании. Иногда я получаю показатель успеха 50%, а в другой раз я получаю всего 33%. Это похоже на использование случайной функции. Что я заметил, так это то, что почти всегда наиболее предсказуемый результат составляет 1 (около 70% ). Я попытался изменить количество скрытых слоев, количество тренировок, но безуспешно, оно все еще колеблется. Может ли кто-нибудь помочь мне или указать мне правильное направление, если я делаю что-то неправильно.
Вот код нейронной сети. Я получаю данные обучения и данные прогнозирования из базы данных.
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();
}
Обучение
public void train(int epoch){
int i =0;
final Train train =new ResilientPropagation(network,trainingSet);
while(i<=epoch){
train.iteration();
i++;
}
}
Предсказание
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. )Я передаю данные в нейронную сеть 1000. Сейчас тестирую больше/меньше, так как ситуация стала лучше.
2,3.)У меня есть 16 входных параметров. Они состоят из :очков домашней команды, домашних побед, ничьих, поражений домашней команды, общего количества выигранных, проигранных, ничьих и формы (прироста очков в последних 5 матчах ). Те же данные относятся к команде гостей, только вместо домашних побед, ничьих, поражений хозяев. используется гостевая команда. Я попробую с разными тренировочными данными.