Задача соревнования.
Определение пола и возраста владельца HTTP cookie по истории активности пользователя в интернете на основе синтетических данных. Подробнее по ссылке: https://ods.ai/competitions/mtsmlcup
Подход к решению.
- Данные очень большие: 10 частей , весом 140 МБ каждая в паркете. Памяти бесплатного колаба не хватало(лимит 12гиг) даже 2 куска обработаь вместе . Все действия направлены на то, чтобы пройти под лимитом в 12 гиг по тонкой грани.
- Все фичи отдельно генерятся для каждого из 10 куска начальных данных в большом цикле. В цикле формируются фичи, дата сеты сшиваются и сохраняются на гугл диск для каждой из 10 частей. Причем раздельно для age и male, сразу выделяются таргеты от признаков. Опять же все из за памяти.
- сохраненные датасеты для каждого таргета сшиваются в один в цикле и затем подаются на ML .
- Урлы посещенные пользователем, превращены в фичи. Т е получилась огромная матрица посещения сайтов для всех юзеров.
- Памяти для ML на всех данных хватало примерно на 2500-2600 урлов в фичах для финального обучения на всей трайн выборке.
- Отсев урлов основан на :сортировка всех урлов по кол-ву запросов и выбор топ [0,2500],[2500-5000] , затем с помощью фич имп. были выбраны самые лучшие. Так нельсколько раз , брались лучшие из лучших и в различных вариациях, рандом фичи и тп.
- модель использовалась catboost дефолт. Использовалась GPU, когда Гуггл давал использовать на ненадолго. Без GPU обучение на мультиклас(age) длилось 4+часа.
Полученные результаты
Полученный max_score = 1.6539, место 110.
Первое место скор 1.7852 у супер профи.
На момент проведения соревнования , я еще не изучил нейронки , блендинг моделей , да и даже catboost и его применение осваливал тут.
Использовал базовые навыки ML для получения результатов.
Для меня задача минимум было "поразбираться". Максимум выдать решение. В итоге получилось все лучше ,чем ожидалось.
- получил отличный скор(место). по сути я обучающийся ДС half-джун вошел в топ 110 ДС спецов!
- придумал и реализовал свое решение как побороть биг дату.
- невероятно прокачал скилы по сравнению с тем что было у меня. Никто в группе из 270 человек ,где я обучался, так не получили скор/не стали разбираться.Хотя лекоторы рекомендовали.
- пообщался с крутыми ДС в чате, посомтрел на митапе топ3 презентации решений.
Добавил текст с описанием и решнием после окончания ЯП и подготовки Git для портфоолио. Код особо не причесываю, времени нет и бесмысленно. Пусть останется памятником труда и упорства:)