Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
60 строки
5.6 KiB
Markdown
60 строки
5.6 KiB
Markdown
# Исследование и настройка предсказательной модели
|
|
|
|
## Блокноты 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#общие-зависимости) в `README.md`.
|
|
|
|
Для исследования и настройки предсказательной модели используется среда [Jupyter](https://jupyter.org/). См. об установке и использовании Jupyter в проекте в `docs/jupyter.md`.
|
|
|
|
### Зависимости
|
|
|
|
Дополнительные зависимости, необходимые для исследования и настройки предсказательной модели, — пакеты Python — записаны в файле `requirements/requirements-research.txt` (см. **Пакеты Python**). См. об установке пакетов Python в **Пакеты Python** в `README.md`.
|
|
|
|
## Работа с блокнотами Jupyter
|
|
|
|
См. об установке и использовании Jupyter в проекте в `docs/jupyter.md`.
|
|
|
|
## Работа с MLFlow
|
|
|
|
Для управления жизненным циклом моделей машинного обучения используется платформа [MLFlow](https://mlflow.org/).
|
|
|
|
Запуск локального сервера MLFlow (**выполнять в корневой директории проекта**):
|
|
|
|
run_mlflow_server
|
|
|
|
Для остановки сервера MLFlow пошлите ему сигнал `SIGINT` (`Ctrl+C` в терминале).
|
|
|
|
Очистка локальной tracking БД MLFlow от удалённых прогонов (**выполнять в корневой директории проекта**):
|
|
|
|
gc_mlflow
|
|
|
|
Очистка локальной tracking БД MLFlow от конкретных удалённых экспериментов по списку их ID, разделённым запятыми, `<ids>` (**выполнять в корневой директории проекта**):
|
|
|
|
gc_mlflow --experiment-ids=<ids>
|