Мотивация

Недавно я принял два решения о покупке автомобиля за последние 6 месяцев. Хотя оба раза я покупал новую машину, при принятии решения я смотрел на рынок подержанных автомобилей. Я провел гораздо больше времени, рассматривая подержанные автомобили, чем новые автомобили, хотя мое окончательное решение было в пользу новой машины. Одной из основных причин этого является высокая дисперсия и неопределенность при покупке подержанного автомобиля. Большое количество предоставляемых параметров часто больше сбивает с толку, чем помогает в процессе принятия решения. Я продолжал думать про себя, если бы только был более простой способ быстро найти хорошие предложения. Основная мотивация этого проекта — прогнозировать цены на подержанные автомобили и использовать модель для определения лучших предложений — другими словами, разработать руководство по ценообразованию, которое действительно работает.

Дизайн

Я использовал данные с сайта www.carmax.com, которые я скопировал и очистил. В рамках моей очистки я искал выбросы и удалял эти выбросы. Я закодировал все категориальные признаки до того, как начал разрабатывать модель. Прежде чем приступить к процессу моделирования, я провел исследование данных, которое включало изучение корреляции между функциями и выявление возможных инженерных особенностей, которые могли бы улучшить мою модель. Изучая свои данные, я заметил, что некоторые из моих параметров коррелируют друг с другом. Например. объем двигателя и количество цилиндров сильно коррелированы (0,90+). Сохранение обеих этих функций просто избыточно, поэтому я использовал размер двигателя, поскольку он более непрерывен. Я преобразовал свою цель, также известную как цена, с помощью логарифмического преобразования, поскольку она была смещена вправо. Правильная асимметрия возникает из-за того, что в наборе данных очень мало точек данных на уровне предметов роскоши высокого класса (цена 35 000 долларов США +). Это также указывает на то, что наша ошибка после моделирования для этого региона будет намного выше.

Прежде чем приступить к моделированию, я разделил свой набор данных на набор поездов и тестовый набор. Я использовал только набор поездов, чтобы получить лучшую модель путем сравнения различных алгоритмов регрессии. Я использовал StandardScaler(), чтобы масштабировать все мои функции до одного уровня, поскольку параметры имеют очень разные диапазоны (например, мили в тысячах против лошадиных сил в сотнях). Я использовал алгоритмы LASSO и RIDGE с PolynomialFeatures для степени 1, 2 и 3, чтобы увидеть, какой из них подходит лучше всего. Я также сделал перекрестную проверку, чтобы убедиться, что я не переобучал. Моей лучшей моделью был RIDGE с полиномиальной степенью = 2 и StandardScaler(). Подгонка поезда к этой модели была следующей:

Среднеквадратическая ошибка = 0,01636

R² = 0.88949

После выбора модели я протестировал модель с помощью тестового набора.

Данные

Я использовал данные с сайта www.carmax.com, которые я скопировал и очистил. В рамках моего процесса очистки я искал выбросы и удалял эти выбросы. Я не пытался вводить пропущенные значения, так как смог собрать более 2000 точек данных, а пропущенные значения, как правило, относились к определенным параметрам. После выполнения очистки и удаления точек данных с отсутствующими значениями мой набор данных составил около 1700. Я также начал с очень большого количества параметров 30+, которые я сузил путем разработки функций и, более конкретно, глядя на p-значения и корреляции.

Инструменты

Результаты

На тестовом наборе модель работала хорошо, а среднеквадратическая ошибка и R² были аналогичны набору поездов.

Тест R² = 0,876

Тест MSE = 0,017

Ошибка % = e^(sqrt(MSE)) ~ 1,1%

Использование в реальном мире

Модель можно использовать для поиска лучших предложений, просматривая остатки тестовых данных. Тестовые данные с очень отрицательными остатками — очень хорошие сделки. Ниже приведен список автомобилей, остаточная стоимость которых ниже -0,25.

Модель также может использоваться такими компаниями, как Carmax, для проверки наличия на веб-сайте автомобилей с ошибочной или неточной ценой. При первом построении остатков был один очень значительный выброс. Этот выброс имел невязку меньше -1,0, в то время как почти все остальные невязки находились в диапазоне от 0,50 до -0,50.

Я не мог этого сделать из-за нехватки времени.

Я бы тратил больше времени на разработку функций, а не на настройку модели. Я определенно думаю, что более тщательное изучение данных дало бы лучшие результаты. Обычно мне нравится исследовать данные с помощью Tableau, прежде чем я посмотрю на python, что я не смог сделать для этого проекта. Я сделал несколько моделей линейной регрессии, которые были не так хороши, как модели LASSO и RIDGE, и не так полезны.

Я чувствовал, что должен был больше сосредоточиться на использовании в реальном мире и на презентации.

Будущая работа

Я хотел бы добавить еще один источник данных в дополнение к Carmax либо путем очистки, либо из уже существующего набора данных. Меня особенно интересовало моделирование амортизации автомобиля, и для этого мне нужна была первоначальная цена, которую я мог получить в Kelly Blue Book или на подобном сайте.

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