我对多层感知器回归器(神经网络)的性能有疑问,我不知道为什么。
任务:我正在尝试改进时间序列预测。我预测了过去 4 年的物理参数以及准真实值。我用我感兴趣的那一天的 -7 天到 +1 天的预测来训练 NN 作为特征,以便获得当天更好的预测。
问题:无论是训练数据还是测试数据,NN 的输出都比我感兴趣的那一天的特征差。在 RMSE 和 MAE 方面。我希望输出至少与我输入到 NN 的特征处于同一水平。
方法: Python 与 sklearn。我使用带有交叉验证的网格搜索来获得良好的超参数。我测试了不同的隐藏层配置、激活函数、学习率和正则化惩罚强度。我将数据分成 66% 用于训练,其余数据用于测试。
我非常感谢提示如何找出我的问题所在。
编辑: 我正在使用 sklearn.neural_network.MLPRegressor,它提供“identity”、“logistic”、“tanh”和“relu”作为激活函数,我已经在网格搜索中测试了所有这些函数。
我没有缩放特征矩阵,因为所有特征都与所需的输出在同一个单位中,范围从大约 -1 到 +1。
编辑2:
tuned_parameters = [{'hidden_layer_sizes': [int(2/3*number_features),
(int(2/3*number_features), int(4/9*number_features)),
(int(2/3*number_features), int(4/9*number_features), int(8/27*number_features))],
'alpha': 10.0 ** -np.arange(1, 4),
'activation': ["identity", "relu", "logistic", "tanh"],
'learning_rate': ['adaptive', "invscaling"],
'solver': ['lbfgs'],
'early_stopping': [True],
'max_iter': [600]}]
regr = GridSearchCV(MLPRegressor(), tuned_parameters, n_jobs=3, verbose=2)
regr.fit(feature_training_matrix, combined_training_target_vector)
数据:我使用的预测数据具有以下结构:过去约 4 年的每一天,都有对未来 90 天的预测。我每天都有一个包含 -90d 到 +90d 数据的文本文件。我尝试训练 NN 来估计未来 10 天的更好预测。为此,我将当前预测日(当前使用的开始预测后 1-10 天)周围的 -7 到 +1 天作为特征。这意味着我感兴趣的那一天的预测被包含在一个特征中。
feature example: [0.16272058, 0.13296574, 0.14213905, 0.25064893, 0.23302285,
0.21019931, 0.20733988, 0.1466959 , 0.17029025, 0.15876942]
corresponding target: 0.174652
