Я что-то упускаю из-за LSTM? - PullRequest
       31

Я что-то упускаю из-за LSTM?

0 голосов
/ 27 сентября 2018

У меня есть несбалансированные данные, которые я передаю через сеть LSTM.

Вот часть моего кода:

weights = class_weight.compute_class_weight('balanced',np.unique(trainY),trainY)

print (weights)
model = Sequential()
model.add(LSTM(64, input_shape=(look_back, trainX.shape[2]), recurrent_dropout=0.3, return_sequences=True)) #
model.add(Dropout(0.3))
model.add(LSTM(32,  recurrent_dropout=0.3))
model.add(Dense(1, activation='sigmoid'))
print (model.summary())
model.compile(loss='binary_crossentropy', optimizer='adam',metrics=['accuracy'])
model.fit(trainX, trainY, validation_data=(validX, validY), epochs=100, batch_size=16, class_weight=weights, verbose=1 , callbacks=callbacks_list, shuffle=True)  

Веса [0.6147541 2.67857143] видят хороший дисбаланс.

Однако, когда я печатаю матрицы путаницы (для каждого набора), я только предсказываю 0.

Как формируются мои данные.На самом деле каждая двумерная последовательность на входе LSTM имеет размер (time_step, features) верно?Здесь я использую time_step из 1 (и features = 22, не имеет значения).Это означает, что это то же самое, что если бы я брал каждую семпл моей серии времени один за другим.

Когда я увеличиваю time_step примерно до 5, это работает немного лучше, но я все равно получаю слишком высокуючисло "false 0" (0 - самый большой представленный класс), хотя MLP с несколькими слоями очень хорошо работает с теми же данными с параметром class_weight.Я делаю что-то не так с LSTM?

Вот как строятся последовательности: look_back - это размер скользящего окна моментов, центрированных вокруг текущего шага по времени, который я делаю, и окна перекрываются:

def create_dataset(feat,targ, look_back=2):
    semi_window=math.floor(look_back/2)
    dataX, dataY = [], []

    for i in range(semi_window,len(targ)-semi_window):
        a = feat[i-semi_window:(i+semi_window+1), :]
        dataX.append(a)
        dataY.append(targ[i])
    return np.array(dataX), np.array(dataY)

Я действительно жду помощи, потому что, кажется, он дает характеристики под простым MLP, например, в то время как он предназначен для изучения временных зависимостей от временных рядов ...

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