Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
iis-project/research/README.md

5.6 KiB

Исследование и настройка предсказательной модели

Блокноты Jupyter

  • research — Создание множества разных моделей, с использованием разных создаваемых признаков и оптимизацией гиперпараметров.

    Использует файл аугментированных данных датасета о подержанных автомобилях, создаваемый блокнотом eda/cars_eda.py. См. eda/README.md.

    Если параметр блокнота mlflow_do_log установлен в True, блокнот логирует в MLFlow создаваемые модели в отдельные вложенные (nested) прогоны под одним (новым) общим прогоном с именем, определяемым параметром mlflow_experiment_name.

    Точность предсказания текущей цены автомобиля оценивается в первую очередь по показателю MAPE (из-за наличия в выборке значений цены разных порядков), во вторую очередь учитывается MSE (ради отслеживания систематических ошибок на подвыборках). Исследованные модели:

    1. baseline (MAPE = 0.35, MSE = 1.18);
    2. с использованием добавленных признаков (feature engineering с помощью scikit-learn) — точность неоднозначна по сравнению с baseline (MAPE = 0.31, MSE = 1.50);
    3. с использованием добавленных и выбранных (SFS) признаков — точность существенно лучше baseline (MAPE = 0.20, MSE = 1.02);
    4. с использованием добавленных и выбранных признаков и оптимизированными гиперпараметрами (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>