training_projects
Определение стоимости автомобилей
Сервис по продаже автомобилей с пробегом «Не бит, не крашен» разрабатывает приложение для привлечения новых клиентов. В нём можно быстро узнать рыночную стоимость своего автомобиля. Вам нужно построить модель для определения стоимости.
КОНТЕКСТ ИССЛЕДОВАНИЯ: исторические данные: технические характеристики, комплектации и цены автомобилей.
ЦЕЛЬ ИССЛЕДОВАНИЯ: построить модель для определения рыночной стоимости автомобиля
КРИТЕРИИ УСПЕХА И ПРИМЕЧАНИЯ:
- качество предсказания;
- скорость предсказания;
- время обучения
- для оценки качества моделей применяйте метрику RMSE.
- начение метрики RMSE должно быть меньше 2500.
Описание данных для первого исследования:
- Данные:
/datasets/autos.csv
Признаки:
DateCrawled
— дата скачивания анкеты из базыVehicleType
— тип автомобильного кузоваRegistrationYear
— год регистрации автомобиляGearbox
— тип коробки передачPower
— мощность (л. с.)Model
— модель автомобиляKilometer
— пробег (км)RegistrationMonth
— месяц регистрации автомобиляFuelType
— тип топливаBrand
— марка автомобиляRepaired
— была машина в ремонте или нетDateCreated
— дата создания анкетыNumberOfPictures
— количество фотографий автомобиляPostalCode
— почтовый индекс владельца анкеты (пользователя)LastSeen
— дата последней активности пользователя
Целевой признак:
Price
— цена (евро)
Вывод
В ходе работы над исследованием была построена модель машинного обучения для определения рыночной стоимости автомобиля, соответствующая критериям заказчика
Исследование было разделено на несколько этапов:
1. Загрузка и подготовка данных
- Всего в датасете 354 369 записей и 16 столбцов
- Обнаружили пропущенные значения:
VehicleType
- 37 490Gearbox
- 19 833Model
- 19 705FuelType
- 32 895Repaired
- 71 154
- Обнаружили 4 явных дубликата
- Предварительно определили аномальные значения:
RegistrationYear
- машина явно не может быть зарегистрирована в 9999 году, как и в 1000Power
- 20 000 лошадиных сил? Космические скорости :)NumberOfPictures
- видимо, картинки не успели выгрузиться или их не было в данных, поскольку наблюдаем только нули. Вероятна и техническая неполадка.
- С типами данных все в порядке
2. Предобработка данных
- Привели названия столбцов к
snake_case
для удобства - Заполнили пропущенные значения самым часто встречающимся значением в столбце с использованием пайплайна через
SimpleImputer
- Избавились от 5-ти явных дубликатов в данных.
3. Исследовательский анализ данных
- Убрали 171 строку из данных, связанных с годом регистрации автомобиля: машины, зарегистрированные до 1886 и после 2016.
- Избавились от "бесплатных" автомобилей в записях - удалено 10 772 строк
- Обнаружили временную тенденцию, связанную с трендом "проставлять в СТС автомобилей 0 лошадиных сил" с целью обхода налоговых обязательств. Подобных записей в данных - (11.32%). Заменили нули на медианное значение количества лошадиных сил среди подобных брендов и моделей автомобиля.
- В том числе обнаружили странными записи, в которых в автомобилях более 1500 л.с. и даже более 10 000 л.с. Определили, что подобные авто либо являются суперболидами (вероятность чего очень низкая), либо это техническая ошибка сервиса. Заменили отобранные значения по тому же принципу, что и с 0 л.с. Также сделали дополнительную проверку и заменили оставшиеся 2 пропуска
- Среди типов автомобильных кузовов лидирует "седан" - 36.4% данных
- Среди моделей автомобилей лидирует 'golf' от 'volkswagen'
- Среди брендов пятерку лидеров также открывает 'volkswagen
- 70.3% авто в данных используют топливо 'petrol' (бензин)
- Большинство машин (89.8%)не было в ремонте в момент продажи. Наблюдается большой перевес в категориях
Исходя из корреляционного анализа можно сделать несколько выводов:
- Относительно сильная зависимость признака
model
от остальных может привести к неустойчивости коэффициентов для линейных моделей - предположительно, они покажут себя хуже альтернативных моделей. То же справедливо и для остальных выявленных сильных линейных зависимостях. - Целевой признак коррелирует умеренно-положительно (0.5 < y < 0.8) с несколькими признаками:
model
- 0.57. Достаточно очевидно, что цена авто зависит от выбранной модели.registration_year
- Год регистрации автомобиля тоже влияет на цену. Чем ближе эта дата к настоящему времени - тем "свежее" автомобиль и тем дорожен он стоит
5. Обучение моделей
- Подготовили выборки, убрав неважные признаки
- Создали пайплайн предобработки
- Подобрали гиперпараметры некоторых и обучили + замерили метрики на кросс-валидации и трейне у 4-х моделей
6. Анализ моделей
- Лучше всего с задачей справилась модель с классическими гиперпараметрами -
CatBoostRegressor
. Она показала лучший RMSE на обучающей выборке и быстрее остальных моделей предсказывает значения (за 221 ms).- RMSE на кросс-валидации: 1657.1575917061473
- RMSE на тренировочной выборке: 1582.498757667244
- RMSE на тестовой выборке: 1670.9846774171092
- Время обучения модели: 19.7 s
- Время предсказания модели (на тестовой выборке): 73.9 ms
Конечная модель отвечает всем критериям заказчика:
- Предсказание качественно и метрика RMSE < 2500;
- Скорость предсказания достаточно высокая;
- Время обучения в порядке нормы