Выполнил: Кирилл Н.
Целью проекта является практическое освоение MLflow для мониторинга процесса обучения и логирования параметров, метрик, моделей и других артефактов, а также использование различных инструментов для улучшения моделей, включая генерацию, отбор признаков и подбор гиперпараметров. В качестве бейзлайна используется модель предсказания цен на квартиры из проекта 1-го спринта.
Основные инструменты:
- VS Code
- scikit-learn
- catboost
- MLflow
- Autofeat
- mlxtend
- Optuna
В терминале перейти в папку, которая будет содержать папку проекта, и выполнить следующую последовательность команд:
git clone https://github.com/ibnkir/mle-project-sprint-2
cd ./mle-project-sprint-2
pip install -r requirements.txt
Были загружены очищенные данные из проекта 1-го спринта, обучена модель и посчитана ошибка MAPE на тестовой выборке. Полученные метрики и модель были залогированы в MLflow.
Шаги:
- Развернуть MLflow, для чего в терминале перейти в папку mlflow_server и выполнить команду: sh run_mlflow_server.sh
- Выполнить код в ноутбуке
/mlflow_improvement/notebook_steps_1_5.ipynb
в разделе 1-го этапа (см. содержание со ссылками в начале ноутбука)
Результаты в MLflow:
- Имя эксперимента: 'mle-project-sprint-2'
- Имя запуска: 'step_1'
- ID запуска: '9173f049e7b44a50bdc310988acf97f4'
- Имя модели: 'flats_price_model_sprint_2_step_1' (сохранена в папке 'models')
Были загружены и очищены исходные данные из проекта 1-го спринта, выявлены и проанализированы различные зависимости и особенности, построены графики и таблицы. Результаты были залогированы в MLflow, включая файлы eda.ipynb с кодом и eda.md с выводами.
Шаги:
- Выполнить код в ноутбуке
/mlflow_improvement/notebook_steps_1_5.ipynb
в разделе 2-го этапа (см. содержание со ссылками в начале ноутбука)
Результаты в MLflow:
- Имя эксперимента: 'mle-project-sprint-2'
- Имя запуска: 'step_2'
- ID запуска: 'f0514c1fa32b4e2889abd2604748a8a4'
- Ноутбук и md-файл (сохранены в папке 'eda')
Были сгенерированы и нормализованы числовые признаки с помощью PolynomialFeatures, QuantileTransformer, AutoFeatRegressor (трансформации автогенератора: '1+', 'log') и StandardScaler, после чего обучена и залогирована новая модель.
Шаги:
- Выполнить код в ноутбуке
/mlflow_improvement/notebook_steps_1_5.ipynb
в разделе 3-го этапа (см. содержание со ссылками в начале ноутбука).
Результаты в MLflow:
- Имя эксперимента: 'mle-project-sprint-2'
- Имя запуска: 'step_3'
- ID запуска: 'da9b19fa9ba9422f9dcb53a341995efb'
- Имя модели: 'flats_price_model_sprint_2_step_3' (сохранена в папке 'models')
- Имя автогенератора признаков: 'af_reg_sprint_2_step_3' (сохранен в папке 'encoders')
С помощью методов Sequential Forward Floating Selection (SFFS) и Sequential Forward Selection (SFS) были отобраны преобразованные на предыдущем этапе признаки. Новая модель была обучена на объединенном наборе этих признаков и залогирована.
Шаги:
- Выполнить код в ноутбуке
/mlflow_improvement/notebook_steps_1_5.ipynb
в разделе 4-го этапа (см. содержание со ссылками в начале ноутбука).
Результаты в MLflow:
- Имя эксперимента: 'mle-project-sprint-2'
- Имя запуска: 'step_4'
- ID запуска: 'ff34a627a4be45258c8aea119337bb42'
- Имя модели: 'flats_price_model_sprint_2_step_4'
- Графики и таблицы (сохранены в папке 'fs_assets')
Были подобраны гиперпараметры на ранее преобразованных и отобранных признаках с помощью 2-х методов: случайного поиска и байесовской оптимизации. Наилучшая метрика получилась у 1-го способа. После этого была обучена и залогирована новая модель с соответствующими гиперпараметрами.
Шаги:
- Выполнить код в ноутбуке
/mlflow_improvement/notebook_steps_1_5.ipynb
в разделе 5-го этапа (см. содержание со ссылками в начале ноутбука).
Результаты в MLflow:
- Имя эксперимента: 'mle-project-sprint-2'
- Имя запуска: 'step_5'
- ID запуска: 'a07b3237b25e4016a090a4140a902aec'
- Имя модели: 'flats_price_model_sprint_2_step_5' (сохранена в папке 'models')