/ai_masters_ml2_comp1

Решение соревнования в рамках курса ML2 AI Masters

Primary LanguageJupyter Notebook

Инструкция по запуску

  1. pip install -r requirements.txt

  2. python src/train.py -m

После этого запустится процесс подбора гиперпараметров с помощью optuna, результаты которого можно будет наблюдать через UI mlflow, который будет доступен на 127.0.0.1 после команды:

  1. mlflow ui --port 5050

Описание решения

  • Выбор модели

    Т.к. данные в задаче были табличными, то в качестве моеделей было решено использовать бустинги. Вначале пробовал LGBM, потом пересел на CatBoost, стало получше. При подборе гиперпараметров оптимизировал число деревьев, глубину, lr, к-т регуляризации (конфиги со значениями гиперпараметров лежат здесь). В соревновании использовалась метрика RMSLE, но при обучении моделей метрику менять не пробовал.

  • Предобработка данных

    Предобработка данных заключалась в исключении колонок id, timestamp, добавлении признака возраста дома, и замене выбросов среди значений признаков на nan'ы. Код, отвечающий за преобработку данных, находится здесь.

  • Валидация

    Т.к. для данных в задаче была явно указана временная шкала, и в тестовые данных находились объекты с более поздним значением времени, то было решено использовать аналогичную схему валидации. Для этого были реализованы две схемы валидации - с увеличивающимся (growing window), и с постоянным (rolling window) размером train set. Размер val set старался устанавливать таким, чтобы на валидации отношение размера тренировочных данным к тестовым сохранялось таким же, как при формировании сабмита. В целом в плане корреляции значения метрики на валидации и public score разницы между двумя вышеописанными подходами не заметил, но все равно картина была лучше, чем при использовании обычной кросс-валидации. Код, отвечающий за валидацию, находится здесь.

  • Формирование финального сабмита

    Для формирования финального сабмита я взял три лучших по public score сабмита и усреднил их, за счет чего удалось немного улучшить значение public score, и также, как оказалось, улучшить значение private score.

Описание пайплайна

Для проведения и управлением экспериментами использовалась связка из Hydra, Optuna и MLflow.

  • Hydra использовалась для управлением конфигурацией экспериментов

  • MLflow использовался для выбора модели для сабмита и анализа значений гиперпараметров