如何改进具有更少数据的深度学习模型

数据挖掘 机器学习 Python 神经网络 深度学习 喀拉斯
2022-03-06 07:34:32

我已经为回归训练了一个深度学习模型。模型的准确性很差。我对深度学习很陌生。我该如何改进它?目标变量Y是通过将特征X1与相乘得到的X2

数据集(5800 行)

X1       |      X2      | Y
1.000000    70.000000   70.000000
0.714286    29.045455   20.746753
0.000000    35.000000   0.000000
0.538462    22.071429   11.884615
0.000000    54.000000   0.000000

模型

#Define a larger model
def larger_model():
  #Create Model
  model = Sequential()
  model.add(Dense(2, input_dim=2, kernel_initializer='normal', activation='relu'))
  model.add(Dense(6, kernel_initializer='normal', activation='relu'))
  model.add(Dense(1, kernel_initializer='normal'))
  
  #Compile Model
  model.compile(loss='mean_squared_error', optimizer='adam')
  return model

#Evaluate Model

estimator = KerasRegressor(build_fn=larger_model, epochs=10, batch_size=5)
kfold = KFold(n_splits=10)
results = cross_val_score(estimator, X, y, cv=kfold)
print("Results: %.5f (%.5f) MSE" % (results.mean(), results.std()))

输出

Results: -83.81452 (170.38108) MSE
1个回答

首先看看你的数据规模。深度学习模型对数据扩展很敏感,因此最好对数据进行预处理以保持在可接受的范围内:

  • scale [-2,2] - 应用缩放以使所有特征和标签都在此范围内
  • 均值 0:尝试将数据集中在 0 附近

其次,深度学习模型是正则化的过拟合模型。您可以在这里尝试的一件事是逐步增加模型的大小(即更多隐藏层或隐藏单元)并添加正则化。

您的选择是:

  • 权重衰减 - keras 密集层可以通过权重衰减来增强。看看文档

  • 层正则化(批量规范、辍学、层规范化)这些更先进一些,并且可以根据具体情况进行工作 - 可以先看看这篇论文