足球预测程序encog:不一致的预测

Posted

技术标签:

【中文标题】足球预测程序encog:不一致的预测【英文标题】:Football prediction program encog: Inconsistent predictions 【发布时间】:2012-08-12 07:48:00 【问题描述】:

我正在制作一个使用 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 场比赛的得分)。相同的数据只适用于客队,而不是主队主场赢、平、输 客队使用客场胜、平、负。我会尝试使用不同的训练数据。

【问题讨论】:

【参考方案1】:

鉴于信息,很难说哪里出了问题,可能有多种原因。但这里有一些潜在的解决方案。

1) 您将训练数据输入神经网络多少次?通常,您需要多次传递训练数据以使网络收敛。一次是不够的,尤其是如果您只有 90 个训练数据。

2) 训练数据中有多少输入参数(它们是什么)?通常,您需要将隐藏层节点的数量调整为输入参数的数量。这没有硬性规定,但我通常从至少两倍的隐藏层节点数作为输入参数开始。

3)您是否尝试过选择不同的测试数据?我假设您的训练和测试数据不同。您选择的测试数据可能有问题,因为它们与训练数据完全不匹配。也可能完全有可能无法从您的方法中获得任何可靠的估计。您的输入参数可能完全不足以预测谁会赢得任何给定的比赛。这是垃圾进,垃圾出,概念。

【讨论】:

感谢您的回答。关于隐藏节点数量的部分帮助很大,因为我现在得到的预测比以前更现实,当时 80% 的预测最小值为 1 或 0。我将用答案更新第一篇文章,请查看并发表评论! 我在使用 Encog 时遇到了同样的问题。有这方面的更新吗? 当您说“您需要多次传递训练数据以使网络收敛”时,您是什么意思?当我训练我的数据时,我通过do train.Iteration() while (train.Error &gt; 0.001); 传递它。这还不够吗?注意:我的数据没有收敛,错误率为92%,我的数据只有200行左右。

以上是关于足球预测程序encog:不一致的预测的主要内容,如果未能解决你的问题,请参考以下文章

用于时间序列预测的 HyperNEAT 网络需要 Encog 帮助

基于 BERT 的 NER 模型在反序列化时给出不一致的预测

机器学习二分类模型评价指标:准确率召回率特异度等

scikit-learn MLPRegressor 预测结果总是变化且不一致

如何在 Java 中使用 Encog SVM 预测多个值

发现样本数量不一致的输入变量:[164, 41]