我一直在研究一个大数据集,我一直在尝试不同的机器学习算法。我使用 XGBoost 获得了非常好的结果,但我获得的最佳结果来自 SVM。但由于我的数据分布在 8 年,而且它是一个时间序列模型,因此我也想到了使用 RNN。我一直在通过增加层数或每层的节点数来试验 RNN-LSTM 的超参数,因为没有这样的经验法则。但我什至还没有接近我的 XGBoost 结果。我注意到的奇怪的事情是,即使我将 epoch 的数量从 100 增加到 1000,或者我将隐藏层的数量从 1 增加到 3,或者我改变每层的节点,模型的性能总是相同的既适用于训练集,也适用于测试集。我正在分享我的 RNN-LSTMs 代码,如果我遗漏了什么,请告诉我。从理论上讲,它至少与 SVM 一样好,如果不是更好的话,因为数据质量也非常好而且很长。
# Getting the inputs and the ouputs
X = allData.iloc[:-48,:-1].values
y = allData.iloc[:-48,-1].values
y = y.reshape(-1,1)
# Feature Scaling
from sklearn.preprocessing import MinMaxScaler
sc_x = MinMaxScaler()
sc_y = MinMaxScaler()
X = sc_x.fit_transform(X)
y = sc_y.fit_transform(y)
y = np.ravel(y)
X = np.reshape(X, (-1,1,X.shape[1]))
y = np.reshape(y, (-1,1,1))
# Building RNN
regressor = Sequential()
regressor.add(LSTM(units = 8,activation = 'tanh',recurrent_activation = 'relu',return_sequences = True, input_shape = (X.shape[1],X.shape[2])))
regressor.add(LSTM(units = 3,activation = 'tanh', recurrent_activation ='relu', return_sequences = True))
regressor.add(TimeDistributed(Dense(units = 1)))
regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor.fit(X, y, batch_size = 32,shuffle = False, epochs = 100,validation_split=0.1)
我无法从这个模型中获得可比的准确性。我还可以在 RNN 中尝试哪些其他事情,以使其至少类似于其他机器学习算法?