#python #tensorflow #lstm #sequence
#python #tensorflow #lstm #последовательность
Вопрос:
У меня есть фрейм данных, который выглядит следующим образом:
id. date mycol label
1. 01/12/2019 c1 1
1. 03/12/2019 c2 1
1. 04/12/2019 c3 1
2. 01/12/2019 c1 0
2. 03/12/2019 c5 0
3. 15/01/2020 .. 1
4. ... 1
.
.
Метка всегда одинакова для одного и того же идентификатора, и это проблема двоичной классификации. Я хотел бы предсказать метку на основе mycol только для каждого идентификатора, и мне нужно сделать прогнозы на 5 месяцев вперед. Я думаю, что мне следует использовать LSTM, но проблема заключается в датах и в том, как настроить последовательности, поскольку я раньше не сталкивался с такого рода проблемами, и я только начинаю с LSTM. Группировка по идентификатору дает очень большие списки значений mycol для каждой строки. Я не уверен, как различать эти значения в терминах месяцев / недель, и должен ли я вообще это делать или я должен просто оставить их такими в 1 огромном списке для каждой строки. Помощь была бы весьма признательна.
Комментарии:
1. Я думаю, вам следует подойти к проблеме как к проблеме временных рядов. Да, LSTM может решить эту проблему, но попробуйте использовать более простую модель, такую как ARIMA или некоторую вариацию ARIMA
2. Есть ли у вас какие-либо примеры того, как это может работать?
Ответ №1:
Ваша первая входная последовательность должна быть [c1, c2, c3], label — 1,
второй — [c1, c5], метка — 0,
…
Длина последовательности не имеет значения (вам не нужно добавлять отступы). LSTM узнает, как изменять свои веса состояний на основе новых входных данных (элемент последовательности).
Комментарии:
1. Ваш первоначальный вопрос — задача классификации: у вас есть последовательность в качестве входных данных и метка в качестве выходных данных. Пожалуйста, уточните — как вы собираетесь прогнозировать на 6 месяцев вперед: вы хотите предсказать mycol, а не label? Если это так — вам нужно обучить другой LSTM для прогнозирования mycol в течение 6 месяцев, а затем передать предсказанную последовательность в первый LSTM для классификации.
2. Если ваша метка влияет на mycol — было бы более эффективно обучить один LSTM для обеих целей (потому что LSTM имеет два выхода). Вам нужно использовать потери, состоящие из двух потерь (отдельные потери для каждой цели)
3. У меня нет примера кода. Вы должны использовать BinaryCrossentropy для классификации последовательностей и SparseCategoricalEntropy для прогнозирования следующего элемента