/stock-prices-cars

Прогнозирование рыночной стоимости автомобилей

Primary LanguageJupyter Notebook

Прогнозирование рыночной стоимости автомобилей

Описание проекта

ЦЕЛЬ ПРОЕКТА:

Построить несколько прототипов моделей для определения цены автомобилей по их характеристикам.

Предсказания позволят клиентам онлайн-сервиса по продаже автомобилей быстро оценивать их рыночную стоимость.

Результат работы моделей будем оценивать по 3-м критериям:

  • качество предсказаний
  • скорость предсказаний
  • время обучения

В нашем распоряжении данные с характеристиками автомобилей, собранные из разных анкет автовладельцев.


ЛИЧНАЯ ЦЕЛЬ:

  • Познакомиться с основными возможностями бустера LightGBM и сравнить его работу с RandomForest.

  • Научиться использовать пайплайны c помощью классов Pipeline и ColumnTransformer для кодирования категорий и построения моделей.

  • Испытать подход с ресемплингом для задач EDA.

  • Попробовать свои силы в Feature Engineering категорий для задач регрессии и найти возможности для улучшения результатов предсказаний!

Посмотреть проект

Новые навыки


✔️ Модели с LightGBM ✔️ Поиск аномалий ✔️ RandomizedSearch

✔️ Пайплайны для кодирования категорий ✔️ Предобработки данных

✔️ Библиотека category_encoders ✔️ Feature Engineering

✔️ OneHot ✔️ Ordinal ✔️ Dummy ✔️ Target encoding

✔️ Оценка скорости алгоритмов ✔️ Time resampling для анализа данных

Результаты исследования

  1. LightGBM - уникальный алгоритм, по результатам видно, что внутри он работает совершенно по-другому.

    • Скорость - может летать как ракета (wall time), а может "загрузить" весь ноутбук на 40 минут всего 20-ю деревьями. Сильно зависит от среды выполнения.

    • Качество - можно быстро добиться хороших результатов. При этом деревья измеряются сотнями, чтобы получать высокие значения метрик.

    • Overfitting - низкий, если сравнивать 20 деревьев в RandomForest и 1000 деревьев в LightGBM

    • Процессорное время обучения в целом значительно меньше, чем время для генерации предсказаний.

  2. Мы протестировали работу Ordinal, One-Hot и Target encoding для разных характеристик автомобилей

    • Подходы к кодированию категорий могут сильно изменять результаты моделей

    • Обучение с ColumnTransformer работает намного быстрее, чем варианты с Pipeline

    • Feature_importance позволяет понять, как кодирование влияет на набор ключевых признаков для предсказаний

    • Объединение маленьких категорий в одну улучшает качество предсказаний RandomForest c OHE-encoding

Результат проекта

Мы построили несколько моделей для предсказания стоимости автомобилей.

Алгоритмы RandomForest и LightGBM дали примерно одинаковые и достаточно хорошие результаты:

  1. На кросс-валидации R2-score = 0.96.

  2. Результаты на тесте:

    • RandomForest (20 деревьев)__| Тестовая выборка => R2-score: 1459.59 R2-score: 0.89
    • LightGBM (1000 деревьев)____| Тестовая выборка => R2-score: 1441.37 R2-score: 0.90
    • LightGBM (400 деревьев)_____| Тестовая выборка => R2-score: 1478.05 R2-score: 0.89

Для получения более высоких метрик можно сузить круг рассматриваемых автомобилей (в зависимости от специфики работы онлайн-сервиса).

Например, задать более высокую нижнюю планку для мощности двигателей и стоимости автомобилей.

Исходные данные

import pandas as pd

df = pd.read_csv('/datasets/autos.csv')
display(df.iloc[:, :9].head(3))
df.iloc[:, 9:].head(3)
DateCrawled Price VehicleType RegistrationYear Gearbox Power Model Kilometer RegistrationMonth
0 2016-03-24 11:52:17 480 NaN 1993 manual 0 golf 150000 0
1 2016-03-24 10:58:45 18300 coupe 2011 manual 190 NaN 125000 5
2 2016-03-14 12:52:21 9800 suv 2004 auto 163 grand 125000 8
FuelType Brand NotRepaired DateCreated NumberOfPictures PostalCode LastSeen
0 petrol volkswagen NaN 2016-03-24 00:00:00 0 70435 2016-04-07 03:16:57
1 gasoline audi yes 2016-03-24 00:00:00 0 66954 2016-04-07 01:46:50
2 gasoline jeep NaN 2016-03-14 00:00:00 0 90480 2016-04-05 12:47:46