|
|
2 дней назад | |
|---|---|---|
| .. | ||
| mlflow_ui_figures | 2 дней назад | |
| README.md | 2 дней назад | |
| research.ipynb | 2 дней назад | |
| research.py | 2 дней назад | |
README.md
Исследование и настройка предсказательной модели
Блокноты Jupyter
-
research— Создание множества разных моделей, с использованием разных создаваемых признаков и оптимизацией гиперпараметров.Использует файл аугментированных данных датасета о подержанных автомобилях, создаваемый блокнотом
eda/cars_eda.py. См.eda/README.md.Если параметр блокнота
mlflow_do_logустановлен вTrue, блокнот логирует в MLFlow создаваемые модели в отдельные вложенные (nested) прогоны под одним (новым) общим прогоном с именем, определяемым параметромmlflow_experiment_name.Точность предсказания текущей цены автомобиля оценивается в первую очередь по показателю MAPE (из-за наличия в выборке значений цены разных порядков), во вторую очередь учитывается MSE (ради отслеживания систематических ошибок на подвыборках). Исследованные модели:
- baseline (MAPE = 0.35, MSE = 1.18);
- с использованием добавленных признаков (feature engineering с помощью scikit-learn) — точность неоднозначна по сравнению с baseline (MAPE = 0.31, MSE = 1.50);
- с использованием добавленных и выбранных (SFS) признаков — точность существенно лучше baseline (MAPE = 0.20, MSE = 1.02);
- с использованием добавленных и выбранных признаков и оптимизированными гиперпараметрами (optuna) — точность немного лучше модели 3 по MAPE (MAPE = 0.20, MSE = 0.94).
Модель 4 выбрана как финальная модель для последующего развёртывания. Она использует следующие признаки (такие же, как и модель 3):
extend_features_as_polynomial__selling_price(исходная цена продажи, нормализованаStandardScaler),extend_features_as_polynomial__selling_price^2,extend_features_as_spline__age_sp_1(значение базисной функции 2/5 однородного сплайна, нормализованного к крайним значениям возраста автомобилей),extend_features_as_spline__age_sp_2(то же, но базисная функция 3/5),scale_to_standard__age(исходный возраст автомобиля, нормализованStandardScaler).
По указанию преподавателя, скриншоты пользовательского интерфейса MLFlow сохранены в директории
./mlflow_ui_figures.По указанию преподавателя, ID финального прогона:
4c7f04ad9ee94237b44f60b6eb14b41e(вложен в прогон4e4a9094cb3c4eed9d4a056a27cadcd9).
Установка
Для исследования и настройки предсказательной модели необходимы общие зависимости, см. Общие зависимости в README.md.
Для исследования и настройки предсказательной модели используется среда Jupyter. См. об установке и использовании Jupyter в проекте в docs/jupyter.md.
Зависимости
Дополнительные зависимости, необходимые для исследования и настройки предсказательной модели, — пакеты Python — записаны в файле requirements/requirements-research.txt (см. Пакеты Python). См. об установке пакетов Python в Пакеты Python в README.md.
Работа с блокнотами Jupyter
См. об установке и использовании Jupyter в проекте в docs/jupyter.md.
Работа с MLFlow
Для управления жизненным циклом моделей машинного обучения используется платформа MLFlow.
Запуск локального сервера MLFlow (выполнять в корневой директории проекта):
run_mlflow_server
Для остановки сервера MLFlow пошлите ему сигнал SIGINT (Ctrl+C в терминале).
Очистка локальной tracking БД MLFlow от удалённых прогонов (выполнять в корневой директории проекта):
gc_mlflow
Очистка локальной tracking БД MLFlow от конкретных удалённых экспериментов по списку их ID, разделённым запятыми, <ids> (выполнять в корневой директории проекта):
gc_mlflow --experiment-ids=<ids>