link to github
Вебинар с разбором задачи
Соревнование алгоритмов, прогнозирующих пожароопасность региона на 8 дней вперёд.
Участникам предлагается спрогнозировать пожар в определённом регионе России, используя различные, имеющиеся в открытом доступе, данные.
Разобьём пространство на территории России на ячейки размером 0,2x0,2 градуса и для каждой ячейки поставим метку пересечения с полигоном пожара в соответствующий день. Таким образом, получим набор прямоугольников с меткой 1, если этот участок горел, и 0 в обратном случае.
Требуется разработать алгоритм, выдающий прогноз возникновения пожара (0 или 1) на 1, 2, 3, 4, 5, 6, 7 и 8 дней вперёд для заданной ячейки на определённую дату. Решение должно быть реализовано в виде программы, которая принимает на вход CSV таблицу со следующими столбцами:
id - id строки для оценки предсказаний,
dt - дата,
lon_min - минимальное значение долготы ячейки,
lat_min - минимальное значение широты ячейки,
lon_max - максимальное значение долготы ячейки,
lat_max - максимальное значение широты ячейки,
lon - долгота пожара, зафиксированного в ячейке на данную дату (пусто если пожара не было),
lat - широта пожара, зафиксированного в ячейке на данную дату (пусто если пожара не было),
grid_index - индекс ячейки,
type_id - тип пожара (пусто если пожара не было),
type_name - расшифровка типа пожара (пусто если пожара не было).
На выход необходимо сформировать таблицу, где для каждой ячейки (строки - id
из входного файла) будут указаны 8 чисел (0 или 1), означающих наличие пожара через 1, 2, 3, 4, 5, 6, 7 и 8 дней соответственно. В проверяющую систему необходимо отправить код алгоритма, запакованный в ZIP-архив. Решения запускаются в изолированном окружении при помощи Docker.
В качестве дополнительных данных, доступных участникам как на момент обучения моделей, так и в момент инференса в проверяющей системе, могут быть использованы:
Также участники могут использовать для обучения моделей любые открытые источники данных, например спутниковые снимки и индексы пожароопасности. Однако стоит учитывать, что после загрузки решения в проверяющую систему у моделей не будет доступа в интернет и все необходимые для прогноза дополнительные данные нужно упаковать в docker-контейнер.
В проверяющую систему необходимо отправить код алгоритма, запакованный в ZIP-архив. Решения запускаются в изолированном окружении при помощи Docker. Время и ресурсы во время тестирования ограничены. Участнику нет необходимости разбираться с технологией Docker.
В корне архива обязательно должен быть файл metadata.json следующего содержания:
{
"image": "cr.msk.sbercloud.ru/aicloud-base-images-test/custom/aij2021/infire:f66e1b5f-1269",
"entrypoint": "python3 /home/jovyan/solution.py"
}
Здесь image
— поле с названием docker-образа, в котором будет запускаться решение, entrypoint
— команда, при помощи которой запускается решение. Для решения текущей директорией будет являться корень архива.
Для запуска решений можно использовать существующее окружение:
cr.msk.sbercloud.ru/aicloud-base-images-test/custom/aij2021/infire:f66e1b5f-1269
— Dockerfile с описанием данного image и requirements с библиотекамиПодойдет любой другой образ, доступный для загрузки из sbercloud
. При необходимости, Вы можете подготовить свой образ, добавить в него необходимое ПО и библиотеки (см. инструкцию по созданию Docker-образов для sbercloud
); для использования его необходимо будет опубликовать на sbercloud
.
В течение одного дня Участник или Команда Участников может загрузить для оценки не более пяти решений. Учитываются только валидные попытки, получившие численную оценку.
Контейнер с решением запускается в следующих условиях:
Качество решения оценивается на отложенной выборке.
Целью данного соревнования является прогнозирование начала пожара. Оценка как быстро этот пожар потушат зависит от многих факторов и не является приоритетной для данной задачи. Поэтому для расчёта метрики используются только метки начала пожара. После первой метки начала пожара (т. е. первой "1" в прогнозе) будем считать, что ячейка "горит" все оставшиеся дни:
В общем виде формула расчёта метрики:
total_error = 1 - sum((C**(penalty_i / 16) - 1) / (C-1)) / N
penalty_i = (-2) * (sum(gt_corr_i) - sum(pred_corr_i)), штраф для i-ой строки, если пожар случился раньше, чем прогнозировался
penalty_i = (sum(gt_corr_i) - sum(pred_corr_i)), в ином случае
где N - количество строк в прогнозе,
С=5 - нормировочный коэффициент,
pred_corr_i - скорректированный прогноз пожара для i-ой строки,
gt_corr_i - скорректированное действительное состояние i-ой строки.
Для финальной оценки можно выбрать 3 решения. По умолчанию это решения с наилучшей метрикой на public-лидерборде. Большее значение метрики соответствует лучшему результату (лучшее значение метрики → 1, худшее → 0).
В случае одинаковых значений метрики у нескольких Участников, их решения оцениваются по processing time (время, затраченное на обработку задач). Чем быстрее обрабатывается решение, тем выше позиция в лидерборде.
Если же и значения метрик, и processing time моделей у нескольких участников совпадают, то будет учитываться время загрузки решения на Сайт Конкурса. Ранее загруженному решению на Сайт Конкурса будет присвоено более высокое место.
1 место - 500 000 рублей;
2 место - 250 000 рублей;
3 место - 150 000 рублей;
Дополнительно, есть возможность получить специальный приз - 100 000 рублей, который выдаётся на основании заключения экспертной комиссии, оценивающей применимость решения для прогнозирования опасных пожаров. Комиссия учитывает, но не ограничивается только ими, следующие факторы:
Участники, претендующие на спец. приз должны: