sibur challange 2021
Решение на 6 место: https://sibur.ai-community.com/competitions/5/tasks/13
Скор 1.4066/1.4159 public/private. Архитектура - однослойный однонаправленный LSTM.
Для решения используется таблица вида:
Локальный контекст образует каждая строка - это временной ряд, последнее значение которого мы должны предсказать. Глобальный контекст образует каждый столбец - это состояние продаж в компании каждый месяц по каждой категории.
На вход LSTM подается тензор размера N x L x W, где
- N - batch size
- L - sequence length (для финального решения - 9 месяцев)
- W - sequence width, или размер контекста. Для финального решения он состоит из 12 столбцов (1 для локального контекста + 11 глобального).
Пространство тензора временного ряда сворачивается логарифмическим преобразованием на входе в сеть, и разворачивается экспонентой на выходе. Вторая голова сети обрабатывает категориальные признаки для предсказываемого значения, принимая на вход OHE вектор и выдавая эмбеддинг.
Из дополнительных данных взято распределение регионов по категориям: европа/азия/снг/округа РФ.
Схема валидации простая - учимся на всех данных, кроме последнего столбца. Loss-функция для обучения: RMSLE.
Обучение сети:
python train.py \
--lr=1e-5 \
--epochs=80 \
--num_workers=2 \
--batch_size=16 \
--weight_decay=5e-3 \
--random_state=42
submission_47_1.4066.zip - на всякий случай оригинальный сабмит (отличается черновым вариантом кода).