Data Fusion Contest 2024, разбор и итоги соревнования

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! В этом году мы совместно с ВТБ организовали соревнование Data Fusion Contest. Хотим вспомнить, как оно проходило, и подробно рассказать о лучших решениях участников конкурса.

Как и в прошлом году, участников ждали две задачи: одна в контейнерном формате, другая — в классическом, табличном. Также участники отправляли решения в специальную номинацию Companion, ставшую уже традиционной для Data Fusion.

После прошлогоднего эксперимента с уникальным в своём роде соревнованием с атаками и защитами ML‑моделей и зубодробительного передового научного хардкора, в этом году мы решили дать участникам немного выдохнуть, подготовив максимально прикладные задачи из банковской индустрии. В них умышленно оставили большой простор для фантазии, чтобы участники могли подойти к решению множеством способов.

В 2025 году мы снова будем организатором соревнования и с командой департамента анализа данных и моделирования ВТБ уже начали готовить интересные задачи и наборы данных для Data Fusion Contest 2025.

Первая задача, геоаналитика

Необходимо было на основе транзакционных данных пользователей предсказать, в каких локациях клиенты банка будут снимать наличные в банкоматах. Эта задача решалась в контейнерном формате: участникам нужно было собрать свой Docker‑образ и отправить архив с моделями и кодом, которые применялись к закрытым тестовым данным. То есть, для многих это было дополнительным инженерным испытанием: сделать так, чтобы их решение запускалось не только на их компьютерах.

Геоинформационный анализ данных незаслуженно обделён вниманием на соревнованиях по машинному обучению. С его помощью решается широкий спектр прикладных задач: прогнозирование выручки в точках продаж, ранжирование локаций для рекламы, построение гео‑эмбеддингов и многое другое.

Постановка задачи

Для определения мест, где клиент будет снимать наличные, требуются и геоданные, и информация о торговой активности людей. По сути, участникам необходимо ранжировать и локации для клиентов, и самих клиентов для локаций. Для банка это важный момент. Благодаря этому вопросы из задач соревнования, связанные с местоположением банкоматов, лучше учитывают реальные потребности и интересы людей.

Геоданные были представлены в формате H3-индекса, то есть разбиения всей карты на соприкасающиеся шестиугольники (гексы). Чтобы соблюсти анонимность данных, а также сделать задачу решаемой на обычном «железе», координаты были закодированы в H3-индекс 9-го уровня. Транзакционная информация тоже была упрощена до агрегированных за некоторое время транзакций, сгруппированных по MCC‑кодам. Данные предоставлялись для каждой локации, в которой клиент совершал транзакции.

Переведём задачу на рельсы машинного обучения. Для каждой пары (client_id, h3_index) имелась явная бинарная разметка, снимал ли этот клиент наличные в этой локации. Он мог снимать наличные сразу в нескольких местах, это нормальная практика. То есть, это задача multi‑label классификации.

Участникам необходимо было предложить в контейнерном формате решение, выдающее для всех возможных локаций (их список был известен заранее) вероятности, что клиент захочет снять там наличные. А оценивались решения по соответствующей для этого типа задач метрике BCE (Binary Cross‑Entropy).

Второе место, Никита Трифонов (madgnome)

Общая схема решения достаточно прямолинейна и состоит из двух уровней машинного обучения. Автор собрал несколько моделей первого уровня и передавал их предсказания в модель второго уровня, в роли которой выступал Catboost.

Давайте подробнее рассмотрим модели первого уровня:

  1. Multi‑label XGBoost. Идея взята из открытого решения и заключается в предсказании одной моделью вероятностей снятия во всех возможных банкоматах. В качестве признаков использовано количество транзакций, совершённых в каждой из возможных локаций. Ещё добавлены минимальные и медианные расстояния от транзакций клиента до каждого из банкоматов. Кроме того, подсчитано количество транзакций в радиусе 1/3/5/10 гексов от каждого из банкоматов.

    Несколько аналогичных моделей обучалось на разные целевые переменные: на снятие в соседних банкоматах в радиусе 1/2/3/4 гексов от заданного, а также на снятие в банкоматах на «родительском» уровне H3 (6/7/8). Благодаря расширению локальности снятий удалось нарастить количество целевых меток, чтобы не переобучаться на непопулярных банкоматах с очень малым количеством снятий.

  2. Unet. Автор перевёл геоданные в модальность изображений, где пиксели соответствуют популярности конкретной локации. Целевой переменной служит изображение того же размера, на котором показаны факты снятия наличных в локации, то есть решается задача бинарной сегментации.

    Если в обычных изображениях стандартно имеются три цветовых канала, то в этой модели на основе созданных признаков использовалось восемь входных каналов. Одни признаки характеризовали локацию в целом, а другие — активность конкретного клиента в этих локациях.

    В обучении активно применялись аугментации. Для создания изображений использовались не все транзакции клиента (брались случайные 90% для построения признаков‑каналов). Усреднялись предсказания одной и той же модели с последней и предпоследней эпох.

  3. Признаки Mean target. На обучающей выборке рассчитывалась и сохранялась статистика вероятности снятия наличных в каждом из банкоматов в зависимости от транзакций клиента. Например, вероятности снятия во всех банкоматах для тех, кто совершал транзакции в локации X. Рассчитанные вероятности затем применялись к отложенной выборке и использовались в качестве признаков. Они рассчитывались в зависимости от разных наборов параметров транзакции. Например, вероятности снятия для клиентов, которые совершали транзакции в локации X, — с MCC‑кодом Y; или в комбинации локации X, — с MCC‑кодом Y и в период дня Z; или в локации X, и при этом клиент живёт в локации Y.

Разберём теперь итоговую модель второго уровня. Это был Catboost, работающий на парах клиент‑локация в качестве бинарного классификатора. Ключевыми признаками были предсказания моделей с первого уровня, однако на вход подавались и обычные признаки. В основном использовались вышеописанные идеи из моделей первого уровня: интенсивность транзакций пользователя в этой локации и её окрестностях, популярность локации и другие.

Особенностью решения было то, что на втором уровне работала не одна, а три разных модели в зависимости от сегмента:

  1. Сегмент пар, где у клиента были транзакции в выбранной локации. Это 0,9% общей выборки, со средней вероятностью снятия в 7,71%.

  2. Сегмент пар, где транзакции были в ближайшей окрестности от рассматриваемой локации. Это соответствует 12,5% выборки со средней вероятностью снятия в 0,38%.

  3. Все остальные пары, то есть те, где не было транзакций рядом с локацией. Это 86,6% общей выборки со средней вероятностью снятия в 0,03%.

И несколько слов про проверку, так как от её качества часто зависит победа в соревновании. Проверка была несложной:

  • Клиентов стратифицированно поделили на 7 фолдов на основе количества снятий в банкоматах.

  • Первые 5 фолдов использовались для кроссвалидации и обучения моделей первого уровня, с помощью которых генерировались предсказания для оставшихся фолдов.

  • На оставшихся 2 фолдах кроссвалидировалась и обучалась модель второго уровня.

Первое место, Андрей Кузнецов

Решение состояло из трёх стадий.

Сначала шла работа с неструктурированными последовательностями транзакций. Сами по себе агрегированные транзакции не имели порядка, и никто не знал, какая шла за какой. Но это не значит, что их нельзя было перевести в последовательность, которая потом подавалась в набор моделей. Они строились на одной и той же версии обработанных входных данных, чтобы далее их можно было ансамблировать:

  • модель на основе внимания, использующая транзакции как текст в NLP‑задачах;

  • модель Feedforward NN;

  • модель Xgboost.

На второй стадии велась работа уже с признаками локаций и клиентов, для их совместной связи (клиент‑локация). Вероятности, полученные на первой стадии, конкатенировались со сгенерированными признаками. Полученные данные передавались в набор моделей Catboost, которые работали просто как классификационная модель на парах клиент‑локация.

Третья стадия обрабатывала результаты предыдущей стадии, калибруя вероятности Catboost.

Если проследить эволюцию решения по каждой из стадий на валидационном множестве, то уже первая стадия работала достаточно хорошо, чтобы с уверенностью попасть в топ-10 (с результатом в 8,7755). Вторая стадия заметно улучшает результат, уже забирая «золото» (с результатом 8,1982). И финальная стадия совсем немного улучшает результат (до 8,1784), обеспечивая дополнительную надёжность благодаря калибровке.

Отдельно поздравляем Андрея с тем, что он с каждым годом повышает свой призовой результат на Data Fusion Contest, и в этом году стал solo‑top-1!

Источник: https://habr.com/ru/companies/T1Holding/articles/856228/


Интересные статьи

Интересные статьи

Методология тестирования на проникновение предполагает разделение поиска уязвимостей на несколько этапов. Один из первых этапов заключается в поиске легаси с известными уязвимостями, популярных мискон...
Статья, которая рассказывает о процессе выгрузки данных из базы данных Microinvest в систему 1С Битрикс. В ней подробно описываются шаги, необходимые для успешной выгрузки, начиная от подготовки и нас...
В конце января 2024 года «Сберинтертейнмент» (дочка «Сбера») закрыла проект соцсети «Панч» для музыкантов, в которой было можно создавать и продвигать музыку. Разработчики предоставили пользователям в...
Привет, это Дима, бэкенд-разработчик из Hawking Bros. Сегодня я расскажу о решении задачи, с которой мы столкнулись при реализации нестандартной логики инфоблоков на проекте с битриксовой многосайтово...
Только самый-самый ленивый человек не написал о том, как искать работу на удаленке. Большинство советов про то, как откликнуться, пройти собеседование и так далее. Меня и...