В данном соревновании имеется последовательность кредитных историй клиентов ( Данные ). Датасет соревнования устроен таким образом, что кредиты для тренировочной выборки взяты за период в М месяцев, а кредиты для тестовой выборки взяты за последующие K месяцев. Целевая переменная – бинарная величина, принимающая значения 0 и 1, где 1 соответствует дефолту клиента по кредиту.
Так как выборка весьма объемная - мы не можем поместить всю выборку в память ввиду, например, ограниченных ресурсов. Для итеративного чтения данных потребуется функция read_parquet_dataset_from_local, которая читает N частей датасета за раз в память.
В решении я использовал подход Sequence Bucketing, чтобы подавать GRU последовательности одинаковой длины. Выборка разбивалась на несколько бакетов определенной длины, где попавшие в нее последовательности дополнялись padding'ом до длины заданной бакетом. Затем последовательности были преобразованны в эмбэддинги и направленны в ансамбль из 10 реккурентных НС. Так же был использован циклический Learning Rate для более быстрой и точной сходимости решение. Это позволило занять призовое место с метрикой ROC-AUC 0.78. (Лидерборд)