Классификация временных рядов LSTM val_acc является фиксированной или меньше 0,5 - PullRequest
0 голосов
/ 24 июня 2019

После прочтения и поиска в Google я обеспокоен тем, что с моими данными что-то не так. Данные поступают из двух источников с интервалами почтения. Я объединил два источника и повторно отобрал данные, чтобы они имели одинаковые интервалы с линейной функцией. Чем я масштабировал данные, используя StandardScaler. Наконец, данные были разделены на небольшие фрагменты (60 строк или элементов - пробовали фрагменты разных размеров).

Одна вещь, которую я заметил, что после масштабирования некоторые особенности (столбцы) сильно меняются - вот пример данных:

data sample

Здесь одна особенность равна нулю. В других примерах это меняется.

Я попробовал несколько конфигураций:

model = Sequential()
model.add(LSTM(256, input_shape=(4,38)))
model.add(Dense(1, activation='sigmoid'))

model.summary()

adam = Adam(lr=0.001)
chk = ModelCheckpoint('best_model.pkl', monitor='val_acc', save_best_only=True, mode='max', verbose=1)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy'])
model.fit(train, train_target, epochs=300, batch_size=128, callbacks=[chk], validation_data=(validation,validation_target), shuffle=True)

OR

model = keras.Sequential()
model.add(LSTM(32, return_sequences=True,init='normal', input_shape=(4, 46)))
model.add(LSTM(32, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
opt = SGD(lr=0.00008)
model.compile(loss='mean_squared_error', optimizer=opt,  metrics=['accuracy'])
model.fit(train, train_target, epochs=300, batch_size=128, callbacks=[chk], validation_data=(validation,validation_target), shuffle=True)

Независимо от того, сколько выборок - 1000, 2000, 5000 - Точность val всегда составляет около 0,5 или менее и фиксирована для большей части обучения:

333/333 [==============================] - 0s 485us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 492us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 481us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 471us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 467us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 517us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 478us/step - loss: 4.5135 - val_loss: 4.4903

1 Ответ

0 голосов
/ 05 июля 2019

Проблема была с данными. Я узнал, что, прежде чем пытаться использовать другие параметры сети, фиксированная точность или модель, которая не улучшается, предполагает наличие проблемы с данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...