什么是提高预测ML模型准确性的好方法?

时间:2020-05-19 07:38:58

标签: python tensorflow keras

我正在尝试建立一个模型,根据两支球队的角色来预测哪支球队将在流行游戏中获胜。我有大约60k个游戏的数据,其中赢/输用1 / -1表示,数据由游戏中各个角色的大约100列组成,每行有0表示不存在的角色,1表示角色在友方队伍中为-1,在对方队伍中为-1。我已经训练了一个简单的keras.Sequential()模型,但是我的训练准确率最高为35%,validation-acc仅最高为20%。我曾尝试调整模型的各个部分,但似乎从未获得更高的准确性。这是我的代码:

    def build_model():
     model = keras.Sequential([
       layers.Dense(230, activation='relu', input_shape=[len(train_dataframe.keys())]),
       layers.Dense(1,)
     ])

     optimizer = tf.keras.optimizers.RMSprop(0.0008)

     model.compile(loss='mse',
                   optimizer=optimizer,
                   metrics=['accuracy'])
     return model


    EPOCHS = 1000

    history = model.fit(
      X, y,
      epochs=EPOCHS, validation_split = 0.3, verbose=1,
      callbacks=[tfdocs.modeling.EpochDots()])

我的数据如下: 标签:

0        1
1        1
2        1
3       -1
4        1
        ..
92644   -1
92645    1
92646    1
92647   -1
92648   -1
Name: -1, Length: 92649, dtype: int64

功能:

       0  0.1  0.2  0.3  0.4  0.5  ...  0.97  0.98  0.99  0.100  0.101  0.102
0      0    0    0    1    0   -1  ...     0     0     0      0      0      0
1      0    0    0    1    0   -1  ...     0     0     0      0      0      0
2      0    0    0    0    0    0  ...     0     0     0      0      0      0
3      0    0    0    0    0   -1  ...     0     0     0      0      0      0
4      0    1    0    0    0    0  ...     0     0     0      0      0     -1
...   ..  ...  ...  ...  ...  ...  ...   ...   ...   ...    ...    ...    ...
92644  1    0    0   -1    0    0  ...     0     0     0      0      0      0
92645  0    0    0    0   -1    0  ...     0     0     0      0      0      0
92646  0    0    0    0    0    0  ...     0     0     0      0      0      0
92647  0    0    0    0    0    1  ...     0     0     0      0      0      0
92648  0   -1    0    0    1    0  ...     0     0     0      0      0      0

[92649 rows x 113 columns]

我感谢任何建议!

2 个答案:

答案 0 :(得分:0)

您使用的是MeanSquaredError损失,而不是BinaryCrossentropy损失。由于您的输出是分类的(两个选项),因此应使用BinaryCrossentropy损失。

答案 1 :(得分:0)

您似乎拥有大量数据,这是机器学习中最重要的部分。

但是,如果您查看模型,则它没有隐藏层。尝试通过在输入和输出层之间添加一些层来使模型更深,并为每个隐藏层尝试使用不同数量的神经元。这可以提高您的准确性。我建议您也检查一下此类数据中使用的任何特殊体系结构的文献。

以下一些其他参数可能会影响您的准确性:

  • 重量初始化。 -学习率。
  • 激活功能。
  • 正则化。
  • 优化和损失函数。
  • 早停。

我希望这会有所帮助。