Мотивация
Недавно я принял два решения о покупке автомобиля за последние 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 или на подобном сайте.
- Используйте исходную цену как характеристику, чтобы лучше прогнозировать цены.
- Прогнозируйте амортизацию нового автомобиля и ключевые характеристики, которые либо увеличивают, либо уменьшают амортизацию.
- Добавьте больше точек данных
- Создание моделей для конкретной марки и года