Я пытаюсь использовать Seq2Seq и XGBoost для передачи данных временных рядов. Данные имеют 2500 часов.
В обеих моделях используются такие функции времени, как час дня, день недели, день месяца, день года и т. Д. В общей сложности я построил 10 различных временных функций.
Для модели Seq2Seq я обрабатываю каждую временную функцию следующим образом:
hod = date_range.dt.hour
hod = hod / (2 * np.pi)
hod = np.stack([np.cos(hod), np.sin(hod)])
Таким образом, у меня есть 20-мерные функции времени. Извлечь образцы, подходящие для модели Seq2Seq. Я использовал 24 * 14 в качестве длины кодера и 24 * 2 в качестве длины декодера. Таким образом, для каждой обучающей выборки форма кодера имеет вид [time_steps, feature_num] = [236, 20]
. Я пробовал различные архитектуры моделей Seq2Seq (для разных размеров пакета, длины кодера, LSTMCell, RNNCellитерации). Однако минимальная потеря абсолютной разности составляет около 0,007.
Хотя я использую простейшую регрессию XGBoost, потеря составляет около 0,003.
Я очень смущен, почему Seq2Seq так плох во временных рядахпрогнозировалось