Как известно, для покупки авто на территории РФ существует несколько крупных авторитетных сайтов (auto.ru, drom.ru, avito.ru), поиску на которых я и отдал предпочтение. Моим требованиям отвечали сотни, а для некоторых моделей и тысячи, автомобилей, с перечисленных выше сайтов. Помимо того, что искать на нескольких ресурсах неудобно, так еще, прежде чем ехать смотреть авто “вживую”, я хотел бы отобрать выгодные (цена которых относительно рынка занижена) предложения по априорной информации которую предоставляет каждый из ресурсов. Я, конечно, очень хотел решить несколько переопределенных систем алгебраических уравнений (возможно и нелинейных) высокой размерности вручную, но пересилил себя, и решил этот процесс автоматизировать.
Сбор данных
Данные я собирал со всех описанных выше ресурсов, а интересовали меня следующие параметры:
- цена (price)
- год выпуска (year)
- пробег (mileage)
- объем двигателя (engine.capacity)
- мощность двигателя (engine.power)
- тип двигателя (2 индикаторные взаимоисключающие переменные diesel и hybrid, принимающие значения 0 или 1, для дизельных и гибридных двигателей соответственно). Тип двигателя по умолчанию — бензиновый (не вынесен в третью переменную во избежании мультиколлинеарности).
Таким образом:
Далее подобная логика для индикаторных переменных подразумевается по умолчанию. - тип кпп (индикаторная переменная mt (manual transmission), принимающая булево значение, для механической коробки передач). Тип кпп по умолчанию — автоматическая.
Необходимо отметить, что к автоматическим коробкам передач я относил не только классический гидравлический автомат, но также роботизированную механику и вариатор. - тип привода (2 индикаторные переменные front.drive и rear.drive, принимающие булевы значения). Тип привода по умолчанию — полный.
- тип кузова (7 индикаторных переменных sedan, hatchback, wagon, coupe, cabriolet, minivan, pickup, принимающих булевы значения). Тип кузова по умолчанию — внедорожник/кроссовер
Незаполненные ленивыми продавцами данные я отмечал как NA (Not Available), чтобы можно было корректно обрабатывать эти значения с помощью R.
Визуализация полученных данных
Дабы не вдаваться в сухую теорию, давайте рассмотрим конкретный пример, будем искать выгодные Mercedes-Benz E-klasse не старше 2010 года выпуска, стоимостью до 1.5 млн. рублей в Москве. Для того, чтобы начать работать с данными, первым делом заполняем пропущенные значения (NA) на медианные, благо для этого в R есть функция median().
dat <- read.csv("dataset.csv") # загружаем выборку в R
dat$mileage[is.na(dat$mileage)] <- median(na.omit(dat$mileage)) # например для пробега
Для остальных переменных процедура идентична, поэтому опущу этот момент.
Теперь посмотрим как цена зависит от регрессоров (визуализация индикаторных переменных на данном этапе нас не интересует).
Оказывается за эти деньги есть несколько машин 2013 года и даже одна 2014!
Очевидно, что чем меньше пробег, тем цена выше.
На некоторых из графиков мы видим точки выделяющиеся из общей выборки — выбросы, исключив которые, можно сделать предположение о линейной зависимости цены от параметров автомобиля.
Хочу обратить ваше внимание на тот факт, что в большинстве статей по машинному обучению, которые попадались мне в последнее время, в том числе на “Хабре”, очень мало внимания уделяется обоснованию правомерности использования выбранной модели, ее диагностики и ошибках.
Поэтому, дабы оценки полученные нами были состоятельными, разумно рассмотреть вопрос о корректности выбранной нами модели.
Диагностика модели
В предыдущем разделе, на основе экспериментальных данных, было сделано предположение о линейности рассматриваемой модели относительно цены, поэтому в этом разделе речь пойдет о множественной линейной регрессии, ее диагностике и ошибках.
Чтобы модель была корректной, необходимо выполнение условий теоремы Гаусса-Маркова:
- Модель данных правильно специфицирована, т.е.:
- отсутствуют пропущенные значения.
ПодробнееЭто условие выполнено (см. раздел Визуализация полученных данных), пропущенные значения заменены на медианные.
- отсутствует мультиколлинеарность между регрессорами.
ПодробнееПроверим, выполняется ли это условие:
dat_cor <- as.matrix(cor(dat)) # рассчет корреляции между переменными dat_cor[is.na(dat_cor)] <- 0 # заменяем пропущенные значения на 0 (т.к. например в кузове пикап или минивен искомого авто не бывает) library(corrplot) # подключаем библиотеку corrplot, для красивой визуализации palette <-colorRampPalette(c("#7F0000","red","#FF7F00","yellow","#7FFF7F", "cyan", "#007FFF", "blue","#00007F")) corrplot(dat_cor, method="color", col=palette(20), cl.length=21,order = "AOE", addCoef.col="green") # рисуем таблицу зависимостей между переменными
Видно что присутствует большая корреляция (>0.7) между объемом и мощностью двигателя, поэтому при дальнейшем анализе мы не будем учитывать переменную engine.capacity, т.к. именно мощность двигателя позволит более точно построить регрессионную модель по сравнению с объемом двигателя (атмосферный бензиновый, бензиновый с турбонаддувом, дизельный моторы — при одном и том же объеме могут имеют разную мощность).
- отсутствуют выбросы.
ПодробнееВыбросы — показатели выделяющиеся из общей выборки (см. раздел Визуализация полученных данных), оказывают существенное воздействие на оценки коэффициентов регрессионной модели. Статистический метод, способный действовать в условиях выбросов, называется робастным — линейная регрессия к ним не относится, в отличие, например, от робастной регрессии Хубера или метода урезанных квадратов.
Меры влияния выбросов на оценки модели можно подразделить на общие и специфические. Общие меры, такие как расстояние Кука, dffits, ковариацинное отношение (covratio), расстояние Махаланобиса, показывают как i-тое наблюдение влияет на положение всей регрессионной зависимости, их мы и будем использовать для идентификации выбросов. Специфические меры влияния, такие как dfbetas, показывают влияние i-того наблюдения на отдельные параметры регрессионной модели.
Ковариацинное отношение (covratio) — общая мера влияния наблюдения. Представляет собой отношение детерминанта ковариационной матрицы с удаленным i-ым наблюдением к детерминанту ковариацинной матрицы для всего набора данных.
Расстояние Кука представляет собой квадратичную зависимость от внутреннего стьюдентизированного остатка, который не рекомендуется использовать для обнаружения выбросов, в отличие от внешнего стьюдентизированного остатка, от которого линейно зависит dffits.
Расстояние Махаланобиса — мера удаления наблюдения от центра системы, но т.к. она не учитывает зависимый или независимый характер переменной и рассматривает их в облаке рассеяния равнозначно, данная мера не предназначена для регрессионного анализа.
Таким образом, для обнаружения выбросов будем использовать меры dffits и covratio.
model <- lm(price ~ year + mileage + diesel + hybrid + mt + front.drive + rear.drive + engine.power + sedan + hatchback + wagon + coupe + cabriolet + minivan + pickup, data = dat) # линейная модель model.dffits <- dffits(model) # рассчитаем меру dffits
Значимыми для меры dffits являются показатели превосходящие величину 2*sqrt(k/n) = 0.42, поэтому следует их отбросить (k — количество переменных, n — число строк выборки).
model.dffits.we <- model.dffits[model.dffits < 0.42] model.covratio <- covratio(model) # рассчитаем ковариационное отношения для модели
Значимые для меры covratio показатели можно найти из неравенства | model.covratio[i] -1 | > (3*k)/n.
model.covratio.we <- model.covratio[abs(model.covratio -1) < 0.13] dat.we <- dat[intersect(c(rownames(as.matrix(model.dffits.we))), c(rownames(as.matrix(model.covratio.we)))),] # наблюдения без выбросов model.we <- lm(price ~ year + mileage + diesel + hybrid + mt + front.drive + rear.drive + engine.power + sedan + hatchback + wagon + coupe + cabriolet + minivan + pickup, data = dat.we) # линейная модель построенная по выборке без выбросов
А теперь, после удаления наблюдений выделяющихся из общей выборки, посмотрим на графики зависимостей цены от регрессоров.
Итого, выбранный нами путь идентификации выбросов позволил исключить из общий выборки 18 наблюдений, что несомненно положительно скажется на точности определения коэффициентов линейной модели с помощью МНК.
- отсутствуют пропущенные значения.
- Все регрессоры детерминированы и не равны.
ПодробнееДанное условие выполнено.
- Ошибки не носят систематического характера, дисперсия ошибок одинакова (гомоскедастичность)
ПодробнееПосмотрим как распределены ошибки модели (для расчета ошибок модели в R есть функция resid()).
plot(dat.we$year, resid(model.we)) plot(dat.we$mileage, resid(model.we)) plot(dat.we$engine.power, resid(model.we))
Ошибки более-менее равномерно распределены относительно горизонтальной оси, что позволяет не сомневаться в выполнение условия гомоскедастичности.
- Ошибки распределены нормально.
ПодробнееДля проверки данного условия построим график квантилей остатков против квантилей, которые можно было бы ожидать при условии, что остатки нормально распределены.
qqnorm(resid(model.we)) qqline(resid(model.we))
Опробирование выбранной модели
Итак, настал момент, когда с бюрократией покончено, корректность использования модели линейной регрессии не вызывает сомнений. Нам остается только посчитать коэффициенты линейного уравнения, по которым мы сможем получить свои, предсказанные цены на автомобили и сравнить их с ценами из объявлений.
model.we <- lm(price ~ year + mileage + diesel + hybrid + mt + front.drive + rear.drive + engine.power + sedan + hatchback + wagon + coupe + cabriolet + minivan + pickup, data = dat.we)
coef(model.we) # коэффициенты линейной модели
(Intercept) year mileage diesel rear.drive engine.power sedan
-1.76e+08 8.79e+04 -1.4e+00 2.5e+04 4.14e+04 2.11e+03 -2.866407e+04
predicted.price <- predict(model.we, dat) # предскажем цену по полученным коэффициентам
real.price <- dat$price # вектор цен на автомобили полученный из объявлений
profit <- predicted.price - real.price # выгода между предсказанной нами ценой и ценой из объявлений
А теперь, давайте-ка соберем все проделанные исследование в кучу, ради одного самого информативного графика, который покажет нам самую желанную для любого автомобильного перекупщика величину, величину выгоды от покупки конкретного авто относительно рыночной цены.
plot(real.price,profit)
abline(0,0)
И на какую выгоду в процентном соотношении можно рассчитывать?
sorted <- sort(predicted.price /real.price, decreasing = TRUE)
sorted[1:10]
69 42 122 248 168 15 244 271 109 219
1.590489 1.507614 1.386353 1.279716 1.279380 1.248001 1.227829 1.209341 1.209232 1.204062
Да, экономия 59% это очень здорово, но весьма сомнительно, нужно смотреть авто «вживую», т.к. бесплатный сыр обычно в мышеловке, ну или продавцу срочно нужны деньги. А вот начиная с 4-го места (экономия 28%) и далее, результат кажется вполне реалистичным.
Хотелось бы обратить внимание, что коэффициенты линейной модели формируются по измерениям с исключенными выбросами, для уменьшения ошибки предиктивного анализа, в то время как, предсказываем цену мы для всех предложений на рынке, что несомненно увеличивает вероятность ошибки предсказания цены для выбросов (например, как в нашем случае, в выбросы могут попасть все машины с кузовом универсал, вследствие чего, поправка, которую должна вносит соответствующая индикаторная переменная, не учитывается), что является недостатком выбранной модели. Конечно, можно не предсказывать цену для предложений сильно отличающихся от общей выборки, но высока вероятность того, что среди них как раз и есть самые выгодные предложения.
Напоследок
Дорогие друзья, я сам, прочитав бы подобную статью задал бы в первую очередь 3 вопроса:
- Какая у модели точность?
- Почему выбрана простейшая линейная регрессия и где сравнение с другим моделями?
- А почему бы не сделать сервис для поиска выгодных автомобилей?
Поэтому отвечаю:
- Протестируем модель по схеме 80/20.
set.seed(1) # инициализируем генератор случайных чисел (для воспроизводимости) split <- runif(dim(dat.we)[1]) > 0.2 # разделяем нашу выборку train <- dat.we[split,] # выборка для обучения test <- dat.we[!split,] # тестовая выборка train.model <- lm(price ~ year + mileage + diesel + hybrid + mt + front.drive + rear.drive + engine.power + sedan + hatchback + wagon + coupe + cabriolet + minivan + pickup, data = train) # линейная модель построенная по выборке для обучения predictions <- predict(train.model, test) # проверим точность на тестовой выборке print(sqrt(sum((as.vector(predictions - test$price))^2)/length(predictions))) # средняя ошибка прогноза цены (в рублях) [1] 91682.9
Много это или мало — можно узнать только в сравнении.
- Линейная регрессия, как один из азов машинного обучения позволяет не отвлекаться на изучение алгоритма, а полностью погрузиться в саму задачу.
Поэтому я решил разделить своё повествование на 2 (а там как пойдет) статьи.
В следующей статье речь пойдет о сравнении моделей для решения нашей задачи с целью выявления победителя. - По данной тематике был разработан сервис, в основе которого лежит модель-победитель, о которой речь пойдет в следующей статье.
И вот, что из этого получилось — Mercedes-Benz E-klasse не старше 2010 года выпуска, стоимостью до 1.5 млн. рублей в Москве.
Ещё
Ссылки
1. Исходные данные в формате csv — dataset.txt
Комментарии (205)
VioletGiraffe
07.06.2016 12:34Объём двигателя — это не capacity, а volume или displacement. А так — супер! :)
infom
07.06.2016 12:39+890% успеха при покупке б/у авто решает состояние, особенно это касается выбранного вами сегмента авто. А этот «экспертный» показатель настолько расплывчат в объявлениях что единственный вариант это ваша очная встреча с авто. Если задачей не стояла покупка авто а некоторая
«RND» или «научная» задача для сервиса, то выполнена она великолепно!!!nikitos18
07.06.2016 12:43+5Я абсолютно согласен, что все решает состояние, просто прежде чем ехать смотреть машину, нужно выбрать какую именно ехать смотреть в первую очередь.
teifo
07.06.2016 13:09Редко когда нужно выбрать из несколько сотен авто. Даже когда нужно они быстро фильтруются по фото/цене. Более значительное время занимает выбор конкретной модели, но робаста это просто фильтр по цене, а это уже есть и на дроме и на автору.
nikitos18
07.06.2016 13:13+4Фильтр по цене, и фильтр по цене относительно рынка в зависимости от параметров авто — это совсем не одно и тоже.
teifo
07.06.2016 13:41Пока «рынок» это 3 основных сайта, а не десяток, так что и тут особой сложности нет.
nikitos18
07.06.2016 13:51+1Сложность как раз в том, как оценить эти предложения, а не ехать смотреть ту, что по цвету понравилась и продается в соседнем районе. Алгоритм дает понимание, какой вклад каждый из параметров вносит в формирование цены конкретной модели.
rfvnhy
07.06.2016 13:31И вот тут важен некоторый опыт…
В тч опыт психолога…
По звонку можно _попробовать_ определить все ли рассказывает продавец или о чем-то умалчивает…
Попробовать выяснить реальные причины продажи, почему дешевле других и тд и тп
В идеале брать у очень хороших знакомых, когда вся «история» авто была перед вами…
Ваш подход сработает на 100% если продавцы будут заполнять «карту авто» где будут указаны все его основные проблемы честно, а не «продать и забыть»
Вот только таких продавцов обычно единицы ;-(
А то «не бит, не крашен, ...» а в реале — например восстановленная после затопления машина… Или после очень серьезной аварии, когда кузов полностью потерял геометрию, был восстановлен в хорошей мастерской, где всю геометрию сделали идеально…
Но вот только при ближайшей же аварии окажется что пассивной безопасности уже 0…SannX
07.06.2016 14:24Да, «психология» иногда помогает. Вот недавно авто отцу покупал. Позвонил перекупу, спросил, можно ли ее на диагностику свозить, а тот отнекивался, а потом раздраженный трубку бросил.
NLO
08.06.2016 17:42НЛО прилетело и опубликовало эту надпись здесь
rfvnhy
09.06.2016 16:00Нет гарантий от покупки авто, который приехал с мелкими проблемами или вообще новый, но попал в аварию уже тут, был качественно восстановлен…
>Ваш друг, который купил у Вас авто, будет ожидать, что Вы его будите консультировать, помогать с ремонтом, но далеко не факт, что у Вас на это есть время.
Зависит от человека. Везде и всегда.
Обычно нормальная ситуация ответить что там такое может свистеть/греметь/… что сразу не заметили…
Ну те месяц мб поконсультировать слегка…
Помощь в ремонте? Не с современными авто уже давно.
Есть единицы водителей, которые смогут что-то отремонтировать хоть сколько нибудь серьезное…
Ну и я все же говорил про обратную ситуацию. Не вы продаете авто, а вы покупаете =)
sinneren
07.06.2016 12:46-1Замечательно, но это же ад просто шерстить по каждой модели. Ищут же среди брендов, но уж не моделей. Например, мне было б интересно Nismo, Toyo, Volk, Audi. Но в каждой мне интересен десяток моделей. Не проверять же всю. Уверен, сравнение возможно и среди подобной выборки.
gigimon
07.06.2016 12:51не соглашусь, сейчас тоже, как автор, ищу авто, но смотрю конкретно 2 модели.
2PAE
08.06.2016 12:25Что является ограничивающим условием? По честному пожалуйста.
gigimon
08.06.2016 12:457 мест (предпочтительно), 4wd, не старше 2012 года до 2 млн. Моделей получается совсем мало: highlander, honda pilot/acura mdx (очень мало предложений). Ну и конечно такой параметр, как нравится/не нравится внешне
2PAE
08.06.2016 13:11«ВАЗ-2120 «Надежда» — семиместный полноприводный минивэн» ваш выбор! :) О существовании такой машины я узнал лишь сегодня.
А если серьезно, в бюджет 2КК укладывается подавляющий сегмент рынка. Я бы даже сказал и кусочек примиума захватывается.
Рад что вы можете позволить себе машину за 2КК, но думаю что вы заметное исключение из правил Ваш вариант не характерен. Поэтому его можно игнорировать, как статистический пик.
Ну конечно я подразумеваю, что сервис делается для БОЛЬШЕЙ части людей желающих стать автовладельцами.
Вы представитель VIP сегмента и можете нанять себе отдельного человека, который всё сделает за вас.Apatic
08.06.2016 13:31gigimon же не за 20 млн машину покупает. 2 млн не маленькая сумма, да.
Но это не VIP. Те, кто VIP авто с пробегом за 2 млн особо то не смотрят.2PAE
08.06.2016 13:43В нашем мухосранске новую машину за 2 млн не каждый день увидишь на улице. А тут на б/у такой бюджет!
У кого-то щи пустые, у кого-то жемчуг мелковат…gigimon
08.06.2016 14:12Это вам так кажется, у меня тоже небольшой городок без производств и т.п. недавно присоединенный к России :) Но количество местных новых машин премиум класса (новые MB, BMW, Lexus представленые совсем недавно) зашкаливают.
2PAE
08.06.2016 14:20«Крым наш»? :) Вот вот, вы не характерны. Многие сейчас в Крым переносят свои организации. Не… производство остается на месте. Место регистрации меняется. Налоги меньше. Кол-во богатых людей больше. Приезжих. И заработавших на приезжих.
gigimon
08.06.2016 14:10А можете мне сказать, что это за подавляющий сегмент рынка? По мне туда попадает 3-5 моделей, некоторые из которых я убираю (не нравится внешне, слабый двигатель для такой машины, не комфортно внутри). Из VIP сегмента (немцы, lexus, acura) в эту цену не подпадает вообще ничего по моим запросам
2PAE
08.06.2016 14:14Я имел в виду вообще ВЕСЬ рынок б/у авто. Но как писал, вы, как мне кажется, выпадаете из среднего покупателя.
Ладно, давайте на этом закончим. Сервис хорош пусть развивается дальше, автору успехов!
nikitos18
07.06.2016 12:56+2Подобное сравнение безусловно возможно, просто требует больше времени на сбор данных. Сервис разрабатывался для людей которые ищут автомобиль себе, а они зачастую выбирают из нескольких моделей, в отличие от перекупщиков.
barsuksergey
07.06.2016 12:57Подтверждаю качество работы ресурса. Не далече чем позавчера искал Рено Логан в Иркутске и области. Результаты моего поиска за день на робасте вывелись за несколько секунд. И сегодня с утра мозговал мысль, что неплохо бы сделать сравнение авто, как товаров на сайте интернет-магазина.
nikitos18
07.06.2016 13:03+1Для этого можете добавлять понравившиеся авто в избранное (кликнуть на сердечко), список избранных авто находится в левом нижнем углу, данные хранятся в local storage, никакая регистрация не нужна.
teifo
07.06.2016 13:01+1Я выскажусь только про сам ресурс. Очень странный. Подгонки фильтров под выбранную модель нет, а должна быть, ведь нельзя искать 6-ти литровую ладу, а вот выбрать из выпускаемых двигателей, кпп и прочего можно. Опять же, цена в бу машине не всегда самое важное, в ней важнее состояние, а уже потом цена. Вот в новой машине важнее цена, комплектация, то что можно не проверять лично.Поэтому советовать покупать бу машину основываясь только на цене, я бы никому не стал. Нужно брать спеца, смотреть, щупать, гнать на СТО.
safari2012
07.06.2016 13:19а как часто базы с автосайтов обновляются?
nikitos18
07.06.2016 13:24+1Данные собираются в реальном времени.
winter_jam
07.06.2016 17:59Каждую минуту парсите выдачу, или что-то более продвинутое?
and7ey
07.06.2016 20:25Зачем каждую минуту? Думаю, что с каждым запросом пользователя парсинг осуществляется (пока пользователей мало — это нормально).
raskal
07.06.2016 13:40+4При покупке б/у автомобиля есть ключевые проблемы совершенно иного характера, с которыми вы абсолютно точно столкнетесь и которая невычисляема. Это, как уже замечали выше:
* абсолютная невозможность понять общее состояние авто из фотографий и цены — вам придется ехать и смотреть. Но это еще полбеды, потому что тут хотя бы частично поможет описанный алгоритм
* проблемы конкретных машин на конкретных пробегах. Пример: несколько лет назад я думал о покупке похожего автомобиля. В данном ценовом диапазоне удачным сооношением обладал Mercedes W204. Он хорошо выглядел, он прилично ехал. Но проблема у них в том, что на малообъемных двигателях (274-х, например) у них есть известная проблема с цепью, муфтами etc. после 80-100 тысяч пробега. Если вы замените все вовремя, стоить это будет примерно 150 тысяч рублей. Если не замените — 50/50 вы попадете в ближайшие 30 тысяч на капремонт двигателя (250+ тысяч рублей). Это автоматически добавляет к стоимости автомобиля 150 тысяч на замену запчастей (и это только если вы _знаете_ об этом). 150 тысяч — это значительная сумма. То же самое было у ряда ауди (коробки и жрущие масло двигатели). То же сейчас есть у F30 BMW (проблемы с электрикой, двигателями и топливной системой у дизелей и не очень аккуратном обращении) — думаю, их именно поэтому столько продают.
Поэтому алгоритм хорош, да. Но надо точно знать, что вы хотите купить вплоть до силового агрегата, иначе вы рискуете купить вещь, которая потребует потом колоссальных вложений. И это мы еще не говорим про автомобили старше 5-7 лет.nikitos18
07.06.2016 13:46Вы абсолютно правы, люди покупающие б.у. машины должны в них разбираться и осознанно идти на риск попасть на ремонт. В любом случае придется ехать и смотреть, алгоритм лишь поможет понять какое подмножество из сотен/тысяч машин разумнее ехать смотреть сначала.
Aplgt
09.06.2016 17:13Т.е. дело не в общих соображениях касательно покупки б/у авто, а во влиянии таких факторов на результат работы алгоритма.
В приведённом примере алгоритм поместит часть реально выгодных предложений в невыгодные. Пострадают предложения, в которых владелец уже вложил условные 150 тысяч в обслуживание и в соответствии с этим поднял цену.nikitos18
09.06.2016 17:14Странно вкладывать большие деньги перед продажей, это скорее исключение из правил.
rfvnhy
09.06.2016 16:03>и это только если вы _знаете_ об этом
Хорошо знакомые мастера с автосервиса + форумы не спасут?
Надо именно знать? =)raskal
14.06.2016 16:57В "_знать_" я вкладываю понятие «обладать информацией», а не «иметь провидение». Если у вас достаточно свободного времени на месяцы изучение рынка б/у автомобилей и их типовых проблем — вы счастливый человек. Чуть ниже я сейчас расскажу, почему, на мой взгляд, нужно так много этого времени.
Мастер же мастеру рознь. Во-первых, с годами приходит профдеформация — у меня есть несколько знакомых, которые (условно) говорят «не покупай ауди, я часто ремонтирую их, они тебя без штанов оставят» или «не бери мерседес, это черная дыра для денег» — и так для каждой марки. Во-вторых, мастера, как правило, специализируются на одной марке, т.к. для того, чтобы реально понимать проблемы машин определенной линейки, нужны годы. Вот вам простой пример — на современных Land Rover у ряда двигателей замена ролика преднатяжителя рекомендована производителем на 120 тысячах километров. 95% сервисов в стране следуют этой рекомендации. В примерно 20% случаев это приводит к его износу раньше данного срока, дальше цепь — загиб клапанов — замена двигателя (он не подлежит ремонту в данном случае). Ролик стоит 10 тыщ. Движок стоит 1.6 миллиона. Как вы думаете, сумеете вы вычитать это на форумах или подскажет вам это знакомый мастер при покупке? Поэтому да, нужно _знать_ и, если нет 100% уверенности — иметь значительную сумму на дополнительный ремонт при покупке.
syslinux
07.06.2016 13:53+5По своему опыту скажу следующее. (последний раз по Москве в 15 году)
В 90 % случаев объявлений если это не частник то полная липа. Звонишь тебе говорят да есть такая, приезжайте. Приезжаешь машины нет, в лучшем случае машина не та что на фото и другой комплектации. После 3-4 случая уже начал ругаться. Как выяснилось что все телефоны идут в коллцентр. И девочка на трубке понятия не имеет что там на самом деле. Но утверждает что она менеджер и вот прям стоит напротив машины.inkvizitor68sl
07.06.2016 17:06+3— алло
— алло
— машину продаёте?
— да
— какую?
— ээээ… <тут много чего фантазируют>
— ясно, перекупам до свидания.
Такой диалог легко отсеивает 99% перекупов (а связываться с перекупами в Москве смысла нет вообще).nikitos18
07.06.2016 17:43Именно так, как только слышите в ответ «какую?» можете класть трубку.
Apatic
07.06.2016 17:58+3Насколько я понял, это автор спрашивает «какую?». А поскольку перекуп не знает, по поводу какой именно ему позвонили — не может сразу ответить.
Но, вообще-то, это какие-то лоховские перекупы. Нормальные перекупы давно покупают на каждую продажу новую симку и знают на какой номер им по поводу какого авто звонят.Stas911
07.06.2016 19:48Чего-то много движений ради продажи ведра с гайками…
Apatic
07.06.2016 20:16Много движений? Купить симку за 200р?
Да и продавать то будут не ведро. Это оно на самом деле, может, и «ведро». А цену будут просить как за «не бит, не крашен, ездила девушка на работу и обратно». Так что прибыль то получится дай боже.Stas911
07.06.2016 21:42-2Ну даже если вы 10 машин продаете — уже проблема будет иметь столько телефонов-симок и все это администрить.
el777
08.06.2016 11:04Чего там администрировать-то?
Каждая симка в своем телефоне — на телефон приклеиваешь бумажку с именем, от которого написано объявление, и машиной.
Все — телефон звонит, сразу видишь «как тебя зовут» и что ты продаешь.
На стенку перед носом вешаешь листок с подробным описанием этой машины — чтобы бумажками во время разговора не шуршать, но сразу видеть все данные.
Даже CRM не нужна =)zamboga
08.06.2016 19:21Полно автосалонов, у которых 30-50-100 машин. Они не будут заморачиваться левыми симками и держать 100 телефонов, на которых написаны параметры машины. Им проще подождать звонка следующего покупателя.
Для устойчивого потока звонков они публикуют объявления с популярными марками/моделями авто, и так или иначе колл-центр «закрывает» звонящего на приезд на осмотр. А далее уже ушлые менеджеры разводят или не разводят покупателя на что угодно, в зависимости от степени «лошарости» последнего.el777
09.06.2016 10:35Такие надо обходить такие стороной =)
Так что тест выдает верную диагностику. )
xenon
14.06.2016 15:10Есть знакомый перекуп. Всего в год — он продает довольно много машин, но вот в каждый момент времени — от нуля до трех. И то, три — это рекорд. Частный перекуп не настолько богат, чтобы сразу купить себе прямо вот много машин. Обычная схема — купить дешево, быстро причесать, продать не слишком уж дорого (бывают исключения с необычными «особо пацанскими» машинами — на них можно задрать ценник и подождать своего покупателя).
Так что он даже как-то без наклеек на телефоны умудряется работать.
imil
08.06.2016 11:19Я один раз продавал одновременно две машины: свою и отца, чтоб купить одну общую повместительнее.
Было заметно, когда люди пользуются трюком «не говори о машине первым». Приходилось оправдываться, мол, такая ситуация…
Но конечно, мой случай редкость, перекупов в разы больше.
backslash
07.06.2016 17:58Не всегда поможет. Обычно у перекупов отдельный мобильник на каждую машину. Соответственно, сразу понятно по какому объявлению звонят.
inkvizitor68sl
07.06.2016 22:18Перекупы давно уже сами не принимают звонки, принимают их в дешманских колл-центрах (на дому организованных).
Ну и всегда можно задать ряд уточняющих вопросов — «сколько владельцев», «когда купили», «как обслуживали», «что в машине меняли». На обслуживании перекупы валятся. Когда я попал наконец-то на настоящего частника — он мне минут 5 рассказывал про машину, всю её историю, сколько денег потратил и прочее. Перекупы все ограничивались мычанием или называли один из известных официальных сервисов, даты назвать не могли. Ну а уж когда я спрашивал про ремень ГРМ (там я как раз покупал машину, с подходящим пробегом замены, искал сразу с замененным) — каких только сказок не наслушался. От «да вы что, там цепь» до «да вы что, его менять не нужно».
sim31r
08.06.2016 03:12+1При мне был такой разговор по телефону:
— Ало машину продаете? (вероятный вопрос)
— Какую?
— Газель, вы же продаете.
— Нет… А ну я же её продал 2 года назад, тот болван что, объявление о продаже с заднего стекла не стер?
:)
FWBARABASHKA
07.06.2016 13:53Когда читал, сначала подумал… Как только люди не извращаются. А в конце проникся уважением к Автору. Молодец, не просто придумал, но и сервис сразу сделал. Правда хаброэффект и его настиг)))
prog666
07.06.2016 13:54На вашем сайте нельзя выбрать пробег больше 100500, что если меня пробег вообще не интересует?
nikitos18
07.06.2016 13:56не трогайте фильтр просто и все. Там 100500 тыс. км., а не 100500 км. ))
prog666
07.06.2016 13:59все равно в запрос подставляет http://robasta.ru/?city=Москва&model=Honda+Civic&price_from=&price_to=1500000&power_from=&power_to=&year_from=1991&year_to=1995&volume_from=0.0&volume_to=100500.0&km_from=0&km_to=100500&lm=0&state=2&seller=1&engine=0&transmission=0&drive=0&body=2&hasphoto=0&new=0
nikitos18
07.06.2016 14:04не переживайте, в коде это не учитывается, сделано для унификации, т.к. на разных сайтах пробег ограничен сверху разными величинами.
BlueBeard
07.06.2016 14:11Пробил свою модель
самая дешевая (ЦЕНА ЗАНИЖЕНА НА: 224 517) оказался битым
следующая (ЦЕНА ЗАНИЖЕНА НА: 154 464) коцанный и ржавый
следующая (ЦЕНА ЗАНИЖЕНА НА: 120 507) 10 лет 180тыр а краска как с завода и сидение пассажира не соответствующее комплектации(должно быть электро-регулировки)
ну и как я понимаю получаем на выходе заниженную среднюю цену от которой оталкиваемся
BaranovskiyNE
07.06.2016 14:37Автор молодец. Но объявления наводнены перекупщиками, салонами с липовыми пробегами и битыми машинами. Кроме того те же личности вносят откровенно липовые объявления с завышенными/заниженными ценами для манипулирования самим рынком, а еще есть тема с мошенниками, которые дают липовые объявления с заниженной ценой, и стараются развести на залог. Так что входные данные для исследования очень плохие, на них адекватный анализ выполнить к сожалению не получится.
nikitos18
07.06.2016 14:42Самостоятельно вы тем более не сможете выделить подмножество потенциально выгодных предложений. Выявить перекупщика и развод на залог можно и по телефону, липовые цены — алгоритм не учитывает, считая за выбросы. Поэтому благодаря алгоритму вы будете двигаться по заранее выгодному пути к приобретению авто, попутно отбрасывая битые авто и авто со скрученным пробегом при личном осмотре, до той поры пока не найдете авто устраивающий именно Вас.
BaranovskiyNE
07.06.2016 15:01отброс выбросов — это хорошо. Ваш сервис неплохо дает ориентировочное представление о цене на рынке с примесью липы и скрученных пробегов, но иначе эту задачу сейчас и не решить.
Такой еще вопрос, хочу посмотреть только частников, но попадаются и предложения площадок.
http://robasta.ru/?city=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&model=Skoda+Octavia&price_from=&price_to=1500000&power_from=&power_to=&year_from=2012&year_to=2013&volume_from=1.8&volume_to=1.9&km_from=0&km_to=100500&lm=0&state=2&seller=1&engine=0&transmission=1&drive=0&body=0&hasphoto=1&new=0#
что-то не то во входных данных?nikitos18
07.06.2016 15:30drom.ru не разделяет объявления на частник/салон
BaranovskiyNE
07.06.2016 15:38Может стоит тогда откинуть дром при выборе частника — просто в салонах как правило совсем все плохо и они, как я понимаю, в 99.9% крутят пробеги, а то и с годом мудрят, а цена у них как правило ниже рынка. У Вас на первые позиции попадает много как раз салонных машин.
Ruyske
07.06.2016 15:24Поставлена очень хорошая задача и осуществлено ее решение.
Думаю данный сервис может пригодится многим автолюбителям. В том числе и для выбора цены продажи своей машины.
Как-никак а вот она, золотая середина цены.
Было бы классно, если бы аналогичный функционал был сделан для мототехники (возможно и еще для каких-то категорий.)
omskscream
07.06.2016 15:24Имхо, сервис может быть полезен также при продаже своего авто, чтобы выставить адекватную цену.
З.Ы. Хотелось бы увидеть поддержку мототехники :)
lipchan
07.06.2016 16:12Математически всё красиво, но мало применимо в реальной жизни. Нужна машина с максимальным остаточным ресурсом, по адекватной цене. Пробег учитывать бесполезно, он с потолка в большинстве случаев. Коробку, наоборот, стоит разбить на типы (робот, вариатор, автомат), т.к. это существенный фактор, влияющий на цену и на ресурс.
Для реальной жизни — http://av100.ru. Настроил поиск, получил уведомление, договорился, посмотрел, купил. Но специалиста с собой брать обязательно, для оценки состояния.nikitos18
07.06.2016 16:14Не уверен, что человек который ищет авто для себя пойдет путем который Вы предлагаете) я бы точно не пошел
bopoh13
08.06.2016 11:25Согласен, что обычный человек по такому пути не пошёл бы, а стоило (особенно последний пункт). В объявлении мало данных, да ещё не все верные. Например, первые 2 записи в запросе http://robasta.ru/?city=Москва&model=Opel+Corsa&year_from=2008&year_to=2014&volume_from=0.0&volume_to=100500.0&lm=0&state=2&seller=1 — один автомобиль.
В любом случае, начало у Вас положено. Лично я бы вынес тип коробки прямо под фотографию, т.к. информация важная. Если drom исключать не планируете, в парсер бы добавил поиск по словам «мы», «кредит», и пр. с последующим выводом предупреждения о салоне, т.к. на салоны время тратить считаю лишним. Успехов в развитии.nikitos18
08.06.2016 11:35То что 2 записи один и тот же автомобиль — не вижу тут криминала, просто человек на 2х сайтах разместил, в идеале можно прикрутить алгоритм классификации для фото, но зачем?
Для дрома планирую сортировать частник/салон. Спасибо за критику, учту
zamboga
08.06.2016 19:29Про пробег согласен, год важнее.
Но сайт av100 удобен при «ловле» авто, если текущие машины в продаже уже отсмотрены и оказались ведрами. И совсем не гарантирует, что на рынок в «нормальном» горизонте событий выбросится подходящее авто.
А сервис автора убирает рутинную работу, когда открыто 30-50 объявлений (по своей и соседним областям, а то и в радиусе до 1000км), которые потом вычитываются, отбираются, и обзваниваются.rfvnhy
09.06.2016 16:13+1>Про пробег согласен, год важнее.
А я бы вот не отказался купить авто из «капсулы времени»…
Менять там, конечно, много надо, но по крайней мере если машинка не коллекционная то за вменяемые деньги получается новое авто…
ЗЫ если бы авто мне было нужно =) Пока мне на порядки дешевле выходит раз в неделю при надобности такси вызвать…teifo
10.06.2016 12:29Капсула времени может и хорошо, но это как ее содержать надо. Сами знаете, что у стоячей машины все резинки сдыхают и иногда их приходиться менять вместе с узлом, так что ох не просто все это.
MaximChistov
07.06.2016 16:17Имхо, гораздо полезнее был бы сервис, который умел бы по показателям объявления предсказывать вероятность что машина плохая(как это сейчас делают перекупы в уме), но такое, к сожалению, очень сложно автоматизировать…
nikitos18
07.06.2016 16:23Довольно сложно формализовать такую задачу. На мой взгляд я и решаю частный случай этой задачи.
rfvnhy
09.06.2016 16:15На самом деле просто как-то выделять слишком дешевые или слишком с большой разницей пробег/год
Но тут можно попасть при большой удаче на «капсулу времени», когда владелец поставил авто в гараж, а через лет 10 решил продать… (или его наследники).
Правда на такие машины сейчас цену чаще всего задирают больше, чем на новые… ;-(
asgard88
10.06.2016 13:28Если реализовать возможность получать из объявлений телефоны, можно путем составления базы телефонов и частоты их повторения + соотносить код телефона и регион сделать некую шкалу риска по конкретному объявлению. В выдачу добавить подсказку по риску на каждый вариант с описанием что там подозрительное (телефон часто мелькает в др обявлениях, код не соостветсвует региону продажи и тд)
nikitos18
10.06.2016 13:36Примерно в таком направление сейчас и двигаюсь! Однако, как уже писали выше, перекупы зачастую имеют несколько симок, и тогда этот анализ не имеет смысла.
bopoh13
10.06.2016 15:34Такие люди жадные, и часто косметическую уборку не делают. Полагаю, больше половины не покупает новую симку на каждый 3-й авто ;)
Apatic
07.06.2016 16:25цена (price)
год выпуска (year)
пробег (mileage)
объем двигателя (engine.capacity)
мощность двигателя (engine.power)
тип двигателя
Первая ассоциация — о нет, снова пример обработки данных на mtcars :)
burrdarr
07.06.2016 16:26Автор — молодец! Не понимаю опасений за линейную регрессию — функционал-то (в смысле функции, а не возможностей) можно выбрать любой, подобрать, кстати, можно попробовать при помощи Eureka, например.
aalexand
07.06.2016 17:12Важная вещь — как давно товар на рынке. Было бы неплохо иметь возраст объявления в модели или как фильтр.
nikitos18
07.06.2016 17:14Я думал об этом, но после истечения срока публикации, если продавец продлевает публикацию, то дата первоначальной публикации не отображается.
aalexand
07.06.2016 17:16Это да. На auto.ru она раньше (когда я машину искал) была на фото, там ее обычно народ не обновляет, можно оттуда доставать. Более хлопотно, правда.
Rondo
07.06.2016 18:44Кстати, а у вас есть какой-то способ отсеивать клоны объявлений?
На сайтах аренды/продажи квартир такое постоянно — предлагают по сути один объект, у которого немного варьируются параметры (неточный адрес, не все параметры прописаны, разное количество фотографий, цена немножко отличается).
Ну и традиционное — фотки берут из чужих объявлений, создают копии объявлений, когда старое протухает.nikitos18
07.06.2016 18:49Пример который вы описали вполне подходит под разные объявления от разных владельцев)
AllexIn
07.06.2016 20:09+1Может быть я пропустил эту информацию… Не увидел, как вы собираете базу машин?
Планирую для своих нужд аналог av100.ru поднять на домашнем сервере, но пока уперся в отсутствие понимания как грамотно собрать базу объявлений. У вас эта задача, судя по всему, решена. Как?nikitos18
07.06.2016 21:20Объявления собираются в реальном времени.
AllexIn
07.06.2016 21:21Это замечательно!
А технически это как делается?
Запросы в API каждого сайта? Парсинг html?nikitos18
07.06.2016 21:28смешанный подход, за подробностями пишите в личку, тут писать будет очень длинно. Планировал по этому поводу написать отдельную статью
AllexIn
07.06.2016 21:29Зачем в личку? ИМХО тема достойная статьи. Впрочем, если лень оформлять — краткий обзор в комментариях тоже будет очень полезен.
Stas911
07.06.2016 21:44Для недвижки, помнится, народ как-то отсеивал агенства. Не помню уже деталей — вроде на Хабре был пост. Может сюда такое же можно привинтить?
nikitos18
07.06.2016 21:46Посмотрю на хабре
VMAtm
14.06.2016 20:35https://habrahabr.ru/post/148782/
https://habrahabr.ru/post/264407/
https://habrahabr.ru/post/242085/
В порядке убывания по релевантности (на мой субъективный взгляд)nikitos18
14.06.2016 20:43не увидел чтобы отсеивали агентства.
VMAtm
15.06.2016 01:45Насколько я понял из комментов к первому посту, там вводился параметр «оценённость» квартиры, который для агенств обычно склонялся в сторону переоценки, а для частных — наоборот.
Если говорить про прямой отсев — да, такого я тоже не нашёлnikitos18
15.06.2016 02:53+1Вы не так поняли… переоцененность и недооцененность — это отклонение предсказанной с помощью алгоритма цены относительно цены в объявлении, не более того.
mOlind
07.06.2016 23:56Идея хорошая, но не различает комплектации авто. Т.е. про вариант где порный фарш алгоритм будет говорить цена завышена, а про базовую версию — выгодное предложение. Т.е. кроме указанных переменных есть же еще и наличие парктроника, подогрева сидений, камеры заднего вида, ходовых светодиодных огней, климат контроля, панорамной крыши и прочих-прочих радостей жизни. Они влияют на цену, а алгоритм их отбрасывает как ненужный шлак.
cranium256
08.06.2016 15:52Поддерживаю. Комплектация очень сильно влияет на цену. Не поленился, залез в конфигуратор на ford.ru. Ford Focus Titanium: базовая комплектация 1.185 млн.руб., тот же Titanium со всеми наворотами (только доп.оборудование!) стоит 1.510 млн.руб. Это +27% к базовой стоимости.
nikitos18
08.06.2016 15:57+1Это на новые машины только распространяется. С прошествием лет этот показатель убывает по экспоненте.
mOlind
08.06.2016 16:42Т.е. через год покупателю становится все равно на все плюшки и хочется дешевле?
Идея самого сервиса — найти лучший автомобиль за меньшие деньги. Каждая дополнительная плюшка чего-то стоит. Если продавец недооценил плюшки — надо помочь покупателю найти эту выгоду.
AlexTheTux
08.06.2016 00:00+1Спасибо за сервис.
Небольшой баг-репорт. Сделал поиск с параметром «Продавец=Частное лицо» (конкретно — искал «Mazda CX-5» 2015-2016 годов в Петербурге) и абсолютно все найденные машины были от официального дилера. Вот одна из ссылок, все остальные были от того же продавца: хттп://spb.drom.ru/mazda/cx-5/21418729.html
Догадываюсь, что на том сайте, наверное, нет явного признака — частное ли лицо продавец, но в данном конкретном случае в объявлениях есть информация, по которой можно распознать автосалон. По крайней мере, есть ключевые слова, фразы, по наличию которых можно понижать вес параметру «частное ли лицо продавец?» при его вычислении.
И еще, в качестве идеи: если сайт позволяет определить, есть ли у данного продавца другие активные объявления с продажей машин (а это можно выяснить и самостоятельно, если собирать с объявлений телефоны) — то по наличию у продавца более одного объявления, на мой взгляд, надо максимально понижать вес параметру «частное ли лицо продавец?». Поскольку даже если это перекупщик — по любому, он должен идти как Автосалон, а не как Частное лицо. Либо даже лучше — вводить дополнительное значение классификатора «Продавец=Серийный продавец (Перекупщик)», поскольку именно их и хотелось бы отфильтровать.
Резюмируя: хотелось бы более надежного определения «Автосалонов» и «Частных серийных продавцов».nikitos18
08.06.2016 00:01Все верно, дром не отличает частников от салонов, работаю над этим вопросом. Спасибо за советы.
Skerrigan
08.06.2016 05:32Так же дополню баг: искал Хундай Сонату в Томске. Вчера находило все корректно, сегодня поиск выдал вагон объявлений. И 75% из них были в Москве. После беглого анализа выяснил, что drom.ru выдает корректно объявления из Томска. А вот auto.ru жульничает.
nikitos18
08.06.2016 05:53Спасибо за инфу сейчас посмотрел все верно — вот
Skerrigan
08.06.2016 07:21Прошу простить мой слабый анализатор смысла: «все верно» это вы про то, что «баг подтвержден», или про то, «что теперь все работает как нужно»?
Ибо перешел по вашей ссылке и сразу «одна Москва». Хотя на странице вашего сервиса написано, что Томск. И, опять же, грешит один auto.ru
Если у вас все верно (т.е. ошибок не видите), то могу в ЛС кинуть более точные данные того, что видно у меня.
Sinucs
08.06.2016 06:31Решил поискать по Томской области Honda accord 6 поколения. Поиск выдал результаты. У каждого результата подпись, что это Томск. Открывая объявление видно, что это Москва или др. города.
2PAE
08.06.2016 07:47+1Убрать с главной слайд шоу. Раздражает. Если хотите, выводите результаты одного из предыдущего запроса. Или какую либо статистику.
Что чаще всего ищут или что-то ещё в ом же духе. Пропадет место зря.
Мне вот интересен вариант
Иномарка. АКПП. Левый руль. Цена.
Не могу выбрать. А перебирать все марки… Дооолго… :(teifo
08.06.2016 09:16+1Не могу выбрать. А перебирать все марки… Дооолго… :(
Вы же телефон не выбираете «андроид» «4 гига оперативы» экран «амолед»? Тут тоже самое читать, выбирать, прикидывать по обслуживанию и прочим вещам. Слишком много моделей, слишком много нюансов, которые лучше изучить заранее.avost
08.06.2016 09:56Вы не поверите ;)
Я, например, примерно так телефон и выбирал. Аналог «левого руля», — «я хоть что-то про фирму слышал».
Выбирал-выбирал,… а потом увидел по акции сяоми за полтинник ;). Жаль, что с машинами всё сильно сложнее.teifo
08.06.2016 12:29С телефонами вам проще, потому что вы возможно про них хоть что-то слышали. Вот и с машинами тоже самое, надо читать смотреть, прикидывать. От общего к частному. Сперва для чего машина, потом обслуживание и ремонт, потом читать отзывы по подходящим моделям. Все это с каждым разом сужает конечные варианты. К примеру если искать «андроид» «4 гига оперативы» экран «амолед», то самым дешевым будет китайский ноунейм. Но вы же прекрасно понимаете, что кроме цены тут есть и более важные параметры не так ли?
avost
08.06.2016 12:48Про машины вы тоже «что-то слышали». Я не о том. Я о том, что есть люди, которые телефон выбирают как жену. Ну, видать делать нечего, нет более интересных занятий и можно убить три недели на выбор телефона. Большинство же своё время ценит гораздо больше и из них половина просто выбирает айфон, а вторая — ну, вот примерно как я — о фирме что-то слышал. Этим отсекаются совсем негодные китаефоны. А бОльшего и не надо. С автомобилями очень многие люди поступают приблизительно так же — отсекают, например автотаз и выбирают тип кузова. Окончательный выбор — по цвету :). Для общераспространённых целей такой способ даёт не самые плохие результаты и позволяет съэкономить время и нервы. В среднем сегменте всё примерно одинаково. Для каких-то специальных задач, да критерии другие и сложнее. Ну, и, как ниже написано, в зависимости от размера рынка широта критерия может очень сильно меняться. В Москве у каждой модели сотни предложений. В нашем городке у меня был критерий — «большой универсал с автоматом, год, цена». Это дало всего десяток вариантов. А многие вообще просто на авторынок приходят и там прямо покупают.
teifo
08.06.2016 13:11Для общераспространённых целей такой способ даёт не самые плохие результаты и позволяет съэкономить время и нервы.
Отвечу простой фразой, чтобы купить что-то ненужное, надо продать что-то ненужное:) Самое вкусное с машиной начинается после ее покупки и если человек этого понимает, то голову на плечах никакой сервис не поможет:)avost
08.06.2016 13:39Тем не менее, способ прекрасно работает для 96% населения, а вот кроилово очень часто ведёт к попадалову.
boogiebomzh
08.06.2016 10:35В том-то и дело, что слишком много моделей. Нужен мне, к примеру, универсал с АКПП. Это в Москве можно просто взять конкретную модель и выбирать из сотен вариантов. В городах с меньшим рынком это уже не пройдет: единицы предложений, из которых большинство отсеиваются по фото и описанию, остальные — по звонку. Если бы можно было рассмотреть все модели, соответствующие критериям отбора, выбор был бы куда шире. Можно было бы также сравнить и медианные цены на определенные модели.
nikitos18
08.06.2016 10:36Именно поэтому есть возможность искать в области.
2PAE
08.06.2016 11:06Я вот сегодня, только благодаря вашему сайту, узнал что у Ваз-а есть универсал с полным приводом и это не «Нива», а «Надежда».
Но узнал я это только потому, что просто сидел минут 15-20 и игрался с настройками. Случайно выбрал ваз 2-чего-то там.
И там раз, и «Надежда». :-( )
Ещё раз, если возможно, сделайте пожалуйста выбор без указания конкретной модели. Ну или хотя бы конкретную модель но без указания модификации.
К примеру просто MAZDA, или просто ВАЗ и пусть ищет во всех маздах левый руль, автомат, с фото, в такую вот цену.rfvnhy
09.06.2016 16:24Брать «уникальную» марку? Охххх
1. Возможная проблема с з/ч
2. Маленькая выборка. Из-за чего почти не понятно что будет ломаться чаще, какие проблемы у модели «с завода»,…
3. В СЦ не всегда будут знать что именно у вас там сломалось по паре характерных вещей…
Например знакомому на Калине (когда они только появились) поменяли стойки для начала, хотя виной была ослабевшая гайка на рулевом (как в 99й, причем знакомый долго был владельцем 99й, в СЦ уж тем более про гайку на рулевом знали, но о Калине такого сразу не подумали и начали с замены стоек…
Да, ответ АСЦ «стучит, кажется стойки» — «ну как стойки развалятся _привозите_ поменяем...» (те не приезжайте, а привозите!!!!) Пришлось ехать в знакомый СЦ…
2PAE
08.06.2016 10:58Воот! Именно так. Слишком много моделей. А денег кол-во ограниченное. Поэтому, считаю что сначала нужно посмотреть что
ВООБЩЕ за эти деньги могу купить. И только потом смотреть, что из доступного на данный момент на рынке заслуживает внимание.
Зачем зацикливаться на конкретной марке?
Телефон я кстати именно так и выбираю. 8 ядер, 2 Гб, 16-32 гв, 2 симки FullHD и прочее.
А дальше смотрю что попадает под данные характеристики. Читаю отзывы по моделям смотрю обзоры.
Для меня главное технические характеристики и надежность, а какой это будет лейбл воощее без разницы. Хоть ZOPO! ;)
Если для вас главное что-бы на телефоне было «яблочко», или гордая надпись «самсунгсамывсунг» то у нас разный подход к выбору. :)))nikitos18
08.06.2016 11:09+1К сожалению я решал немного иную задачу. В моей постановке задачи я считал, что выбор производится из нескольких моделей, т.к. считал такую постановку оптимальной для меня. Ваша задача требует больше мощностей для обсчета, но вполне выполнима, я подумаю.
nikitos18
08.06.2016 11:14Дело ведь состоит в том, что для каждой модели авто, параметры (год, пробег и тд.) вносят разный вклад в формированием цены… поэтому осуществлять поиск просто по марке нет никакого смысла, если мы хотим найти выгодные (ниже рынка) предложения.
boogiebomzh
08.06.2016 11:36А если при анализе среди многих моделей выводить разницу не в рублях, а в процентах, просчитывая медиану для каждой модели отдельно?
nikitos18
08.06.2016 11:42Можно в цикле решать задачу для каждой модели с последующей общей сортировкой.
Apatic
08.06.2016 11:34Я думаю, что подбор модели — задача не этого сервиса. Сначала дни и ночи чтений отзывов, форумов владельцев и видеообзоров, после чего определяется модель. А вот уже после этого — поиск выгодной цены для конкретной модели с помощью этого сервиса.
2PAE
08.06.2016 12:18Да, на данный момент этот сервис не может этого сделать. Но кто сказал что надо останавливаться на достигнутом? :)
Я вот сразу предложил, исходя из реального опыта поиска авто, вариант развития сервиса.
Поиск конкретной модели имеет смысл, когда у вас денег ЗАМЕТНО для того, что-бы купить именно эту машину.
«Что толку зачитываться форумами по Лендроверу, если денег есть только на УАЗ?» (С)Знакомый.
Случай из реальной жизни между прочим. Лендровер он потом всё таки купил, но это было заметно позже.
У большинства, задача перемещаться из А в Б, за определённую сумму.Apatic
08.06.2016 12:28Ну так для этого разведочного анализа вполне подойдут автосайты в их чистом виде, ИМХО.
2PAE
08.06.2016 12:37Ну да, ну да, зачем нам сервис что может это сделать за 5-10 секунд? Всегда лучше потратить значительно больше времени, на выполнение любой деятельности. :)
Ладно давайте на этом остановися.
Сервис замечательный! Я хочу что-бы он развивался и дальше. И предоставлял дополнительные возможности для людей!
teifo
08.06.2016 12:37Как и с телефонами цена цене рознь. Выставлять цену главным критерием при выборе модели автомобиля, означает сразу же огромный риск купить проблемный автомобиль, который не будет отвечать вашим потребностям и финансовым возможностям. Если вы больше ничего не знаете об обслуживании и ремонте автомобиля кроме замены масла через столько то тысяч километров, то вы попадаете в категорию обманываемых покупателей. Поэтому прежде чем-то что-то покупать почитайте отзывы, определите ваши требования к размеру, расходу, типу коробки, типу топлива, доступности на рынке, уже это существенно сузит выбор моделей из сотен до нескольких десятков.
2PAE
08.06.2016 12:51Именно так. Потребности и финансовые возможности. Считаю что для большинства людей главным критерием является цена. Хотя если вы не стеснены в средствах, то вы можете выбрать что хотите.
Если у вас в кармане 50 т.р. то Форд Фокус вам всё равно не светит. Ваш выбор российский автопром. Если у вас есть 500 т.р. то на новый Кашкай можно только полюбопытствовать в салоне.
Поэтому становимся реалистами, отсекаем всё что выше бюджета и начинаем смотреть, а что же я за свои кровные вообще могу купит?teifo
08.06.2016 13:08Чтобы купить что-то ненужное, нужно продать что-то ненужное. Авто мало купить, его содержать надо, особенно когда денег нет. Если человек идет покупать машину на рынок, зная только руль тут, 4 колеса там, то никакой сервис ему не поможет, только чудо и чудеса мы не будем рассматривать. А вот если у человека есть голова на плечах и желание потратить свои небольшие деньги с пользой, то такому человеку прямая дорога к отзывам и думам, что ему брать да покупать. Это богатые люди могут позволить покупать себе кучу ненужного в поисках нужного, те кто победнее должны быть поумнее что ли.
2PAE
08.06.2016 13:33Это богатые люди могут позволить покупать себе кучу ненужного в поисках нужного, те кто победнее должны быть поумнее что ли.
Ну! Наконец то! :) Вы меня поняли. Может это я конечно плохо раньше объяснял. :(
Главное, для обычного человека, в покупке это цена! Вон у человека вверху, 2КК бюджет на покупку б/у машины. Да он может в 95% рынка копаться! И даже из за рубежа заказать авто. Завидно.
Хотя… Сам я сделал всё наоборот. :))) Купил блин эксклюзив. Одна машина в городе. Даже ДПС-ники тормозили с вопросом, что это такое? И отдал дорого. Ну для её года и состояния.
Главное на тот момент было, что она мне понравилась! :) И сейчас нравится. :)
Нашёл я её именно таким способом. Отсёк все что сверху и начал просматривать всё подряд. На этом сервисе, я бы её не нашел. :(nikitos18
08.06.2016 13:37У Вас своеобразный подход к выбору авто, у подавляющего числа людей подход более взвешанный и рассудительный.
Главное на тот момент было, что она мне понравилась!
2PAE
08.06.2016 14:04Я был взвешен и рассудителен. :) Выставил верхнюю планку, пересмотрел что было на рынке. В доступную мне цену.
Прочитал массу отзывов, зарегистрировался на десятках форумов. Пообщался живьём с автовладельцами.
Пересмотрел эннное количество машин. Как у хозяев так и у перекупов. Было один раз забавно. Я жду фольксваген поло, а приезжает что-то японское. И перекуп такой: «Что же ты не сказал что поло хотел?» Я: «В объявлении был фольксваген поло и номер телефона, откуда мне знать что вы ещё что-то продаёте?» :)
Потом увидел её…
Посмотрел, почитал, и как взрослый и ответственный человек купил то, что мне понравилось больше всего.
Хотя до сих пор, несколько жалею что переплатил…
rfvnhy
09.06.2016 16:28>Хотя… Сам я сделал всё наоборот. :))) Купил блин эксклюзив. Одна машина в городе. Даже ДПС-ники тормозили с вопросом, что это такое? И отдал дорого. Ну для её года и состояния.
У знакомого такая… штуки 2 на город-миллионник.
При первой же серьезной поломке местный АСЦ известной марки сказал что не знают что у него сломалось, везите в Москву…
А у нас эту модель никто не знает как чинить…
Плюс вечная проблема с з/ч — все под заказ…
peacemakerv
08.06.2016 08:47Я когда-то занимался тем же самым — выбором авто с чисто математическим подходом.
Но я, ограничившись глобально производителями, выбирал среди 7 моделей по 9 по-моему критериям: цена, габариты (полезный объем), стоимость содержания, проходимость, внешний вид, тип трансмиссии, клиренс, ликвидность на рынке… что-то там еще.
Но использовал матричный алгоритм "помощи принятия решения", субьективно выбирая для каждой модели авто цифровые значения критериев, сравнивая модели друг с другом, по собственным ощущениям, отзывам знакомых и инфе в Сети. 6-7 итераций исправлений — и была более-менее понятна картина… но.
Но как обычно — во всех моделях был компромисс, выбор одной из них все равно был непростым и я решил добавить модель, которая выбивалась из бюджета на +100 тыс. руб. на тот момент (к 600) — и баланс критериев сразу поменялся в пользу добавленной дорогой модели.
О покупке после такого расчета, хоть и с дополнительным займом денег, — до сих пор не жалею, и сейчас бы сделал тот же выбор, если бы пришлось покупать авто снова :-)nikitos18
08.06.2016 09:25достаточно субъективный анализ у Вас получился.
peacemakerv
08.06.2016 09:36Да, но выбор уже изначально был ограничен моделями, и нужно было только принять решение, какой вариант больше мне лично подходит: чтобы и жаба не задушила, и на рыбалку по бездорожью среднему добраться, и семью возить со скарбом, и климат контроля бы ну и прочее. И результат расчета — полностью оправдался, чем и радует уже 3 года.
el777
08.06.2016 11:46Как раз занялся изучение ML, поэтому было интересна ваша статья.
Но, скажу прямо, выводы оставляют вопросы. Я взял график и растянул его по вертикали, чтобы масштаб по осям получился примерно одинаковый.
Вот здесь видится очень четкая линейная регрессия с параметром k чуть меньше 1, r не считал. Пересечение с осью абсцисс в точке 1 200 000. То есть вывод, с поправкой на то, что дорогие мешины дешевеют сильнее,
ваша выгода равна тому, насколько машина дешевле средней машины.
Но в данных есть одна проблема. Есть один очень важный скрытый параметр, назовем его ?-коэффицифиент, который отвечает за завышение цены перекупами. В случае с новыми машинами он равен 1, но для б/у до обследования машины узнать его невозможно. И по факту, это самый главный фактор влияющий на выгоду.
если бы ML-алгоритами можно было его как-то оценить сверху, то это был бы супер-сервис. Всех остальных он бы в момент вынес с рынка.nikitos18
08.06.2016 12:18Конечно, как Вы верно заметили, линейная регрессия не лишена проблем, о которых я прямо в статье и пишу.
Хотелось бы обратить внимание, что коэффициенты линейной модели формируются по измерениям с исключенными выбросами, для уменьшения ошибки предиктивного анализа, в то время как, предсказываем цену мы для всех предложений на рынке, что несомненно увеличивает вероятность ошибки предсказания цены для выбросов (например, как в нашем случае, в выбросы могут попасть все машины с кузовом универсал, вследствие чего, поправка, которую должна вносит соответствующая индикаторная переменная, не учитывается), что является недостатком выбранной модели. Конечно, можно не предсказывать цену для предложений сильно отличающихся от общей выборки, но высока вероятность того, что среди них как раз и есть самые выгодные предложения.
Существуют еще робастные методы, устойчивые к выбросам, например робастная регрессия Хубера, существует алгоритм основанный на деревьях решений (random forest), метод главных компонент, лассо регрессия, ридж регрессия и тд… сравнение которых я проведу в следующей статье.nikitos18
08.06.2016 12:29А ваш коэффициент ? — это мера влияния конкретного измерения на коэффициенты модели ( т.е. на выгоду). Посмотрите раздел «Диагностика модели», там про выбросы и меры влияния измерений довольно подробно рассказано.
el777
08.06.2016 13:44Вопрос немного не в этом. Универсал, Короба, Зимняя резина и прочее — это все видимые факторы. Вы их можете заложить в многомерную линейную регрессию и потом понижать размерность.
Я говорю именно про оценивание выбросов — как понять, что выброс хороший? и как понять, что он плохой? По идее вся статистика — это борьба с выбросами. Как научиться их исключать и работать только с данными, хорошо укладывающимися в модель.
Если смотреть по графику, то там выбросов практически не будет. Интересно посчитать по любому критерию, хоть Стьюденту, хоть ?2. Мне кажется, там почти ничего не отбросится.nikitos18
08.06.2016 14:05см. раздел «Диагностика модели». Выбросы есть — 18 штук, хороший/плохой выброс определяется мерами влияния, которые в свою очередь бывают общие и специфические.
Вот вы пишите:
Интересно посчитать по любому критерию, хоть Стьюденту, хоть ?2. Мне кажется, там почти ничего не отбросится.
А вот цитата из статьи:
Итого, выбранный нами путь идентификации выбросов позволил исключить из общий выборки 18 наблюдений, что несомненно положительно скажется на точности определения коэффициентов линейной модели с помощью МНК.
el777
08.06.2016 14:25Пардон, этот фрагмент я упустил. В любом случае предположение подтверждается — выбросов не очень много. Остальное отлично укладывается в модель.
bopoh13
08.06.2016 12:29Отличная идея в магазине на ценнике указывать себестоимость и накрутку перекупов вместо обычной розничной цены. Только кто на это пойдёт? )
el777
08.06.2016 13:45+1Конечно, магазин это не будет указывать.
Но, если собрать цены из разных магазинов в одном месте — то туда будут ходить и смотреть.
zamboga
08.06.2016 21:311. Есть расширение хром, позволяющее понять, перекуп продавец или нет, и как давно перевыставляется конкретное объявление (чем дольше перевыставляется объява, тем хуже конкретно это авто продается, и скорее всего, этот экземпляр в плохом состоянии).
Так что можете добавить как критерий оценки в ваш интересный сервис.
2. Можно предоставить продвинутому пользователю самому решать «вес» того или иного критерия. Кому-то может быть более важен тип двигателя, например, чем возраст машины. И многим не так важен пробег (т.к. в 50% случаев он скручен), но очень важен год.nikitos18
08.06.2016 23:241)насчет определения перекупов — я подумаю как прикрутить к сайту, идея хорошая.
А вот насчет авто которые долго продаются — не согласен что они обязательно в плохом состоянии… есть такой понятия неликвид — и для каждого человека свой неликвид.
2) ничего хорошего из этого не получится на мой взгляд.
Спасибо за советы!
bopoh13
09.06.2016 12:13Нашёл его же для FF. Судя по ссылке на сайт — последние 5 объявлений выдаёт бесплатно. У меня показывает только на avito.ru и drom.ru…
Как-то не думал, что помимо av100.ru если другие сервисы. Кто ещё не знает, для Москвы и МО по VIN можно историю авто узнать.zamboga
10.06.2016 13:58Я использовал временный тел. номер за 2-10 рублей для повторной регистрации (например sms-activate) на этих сервисах.
yorko
11.06.2016 02:14+2Спасибо за классную тему, приложение и теорему Гаусса-Маркова.
Хотел бы указать на пару неточностей.
Данные стоит масштабировать. Тогда коэффициенты модели можно интерпретировать. Свободный член — как средний прогноз (в Вашей модели минус 1.76e+08 — бессмысленно, а с масштабированными переменными — 1201687, то есть прогноз для «средней» машины), а остальные коэффициенты — как значимость переменных. По коэффициентам Вашей модели не видно, например, что признак «mileage» — второй/третий по значимости. А при масштабировании так и получается (простая регрессия year: 73182, engine.power: 55295, mileage: -50211, Lasso, Ridge, случайный лес схожие результаты дают).
Влияние 3 главных признаков на цену в картинках:
И в формуле RMSE у Вас ошибка — число измерений надо бы под корень внести, и тогда все-таки около 120 тыс. руб. в среднем ошибка прогноза.
Кстати, если интересно посравнивать модели, предлагаю сеять random seed для полной воспроизводимости.nikitos18
12.06.2016 00:59Спасибо за грамотные замечания!
1) В расчете среднеквадратичного отклонения действительно опечатка, поправил!
2) Что касается масштабирования данных, то не делал этого осознанно, т.к. при работе приложения это дополнительная нагрузка, а само по себе соотношение величин коэффициентов линейной модели друг к другу не столь интересно ввиду того, что кардинально отличается даже для разных моделей, не говоря уж о других характеристиках. Я отталкивался от того, что интерес несет именно дельта между ценой в объявлении и предсказанной ценой (выгода). Хотя безусловно с точки зрения удобства интерпретации — Вы правы.
3) Что же касается свободного члена линейной модели- то на мой взгляд это не «средняя» машина, т.к. машина «в среднем» имеет какой-то пробег, возраст и двигатель с некоторыми характеристиками, а некая «новая машина находящаяся на заводе и еще без двигателя».
4) Что касается методов, то упомянутые Вами ридж, лассо регрессии и рандом форест — это далеко не все, есть еще, например, робастные методы, медианная регрессия, метод главных компонент и т.д… которые будут рассмотрены с следующей статье… и забегая вперед, скажу Вам, что при близкой точности (RMSE) линейной регрессии и того же случайного леса, есть веские причины для однозначно выбора одного из них.
yorko
12.06.2016 15:37Мне не приходилось разрабатывать сервисы, в которых надо каждый чих оптимизировать. Но, по «академическим» оценкам, масштабирование — это очень простая операция. Один раз для всей выборки посчитать mean и std по столбцам (O(n+m)), потом для каждого объекта вычесть и поделить (O(m)). При имеющейся выборке это миллисекунды. Но не знаю, может, даже это сказывается.
>>> Я отталкивался от того, что интерес несет именно дельта между ценой в объявлении и предсказанной ценой (выгода) <<
Прогноз остается тот же и при масштабированных признаках.
Насчет свободного члена. Все-таки при масштабированных признаках это будет именно «средняя» машина, для которой значение каждого признака равно среднему по этому признаку (x_i — mean_i = 0). И прогноз цены в ~1.2 млн. руб. выглядит намного разумней, чем прогноз в минус 176 млн. руб для «нулевого» авто :)
Да, у меня тоже обычный лассо лучше RF сработал. Но даже в тех случаях, когда RF лучше работает, понятно, какую модель выбирать, тут к гадалке не ходи :) Но рассказать об этом популярно стоит.
Однако часто в тех случаях, когда нам суперскорости прогноза не нужны и RF работает лучше, все равно выбирают линейные модели из-за «статистической значимости». Мне это не очень понятно. Что лучше на кросс-валидации и holdout-выборке работает, то вроде и нужно выбирать. Интересно будет про это послушать. И если не лень, можно посмотреть еще, как Xgboost и Vowpal Wabbit справится. Хотя на такой маленькой выборке вряд ли будут существенные отличия.
С Вашего позволения дам эти данные для анализа слушателям своего курса. Поанализируют, построят кучу картинок, много моделей сравнят, с помощью кривых обучения разберутся, как модели обобщаются и т.д. Вот пример проекта.Apatic
12.06.2016 15:44С Вашего позволения дам эти данные для анализа слушателям своего курса
А что за курс? Онлайн/офлайн?
nikitos18
12.06.2016 16:10Мне тоже весьма странно когда выбирают линейные модели вместо rf, когда последний справляется лучше. Xgboost и Vowpal Wabbit тоже обязательно рассмотрю. А что касается выборки, то специально взял не большую, как наиболее приближенную к реальной жизненной ситуации.
Да конечно, я не против чтобы Вы дали данные слушателям своего курса!
yorko
12.06.2016 15:59Не хотелось бы явно рекламой заниматься :) так что скажу, что этот курс упомянут в конце статьи с примером проекта, на которую я сослался выше.
Delsian
14.06.2016 10:10В таких местах социальная инженерия рулит. Меня просто познакомили с «жучком» с автобазара, я ему описал примерные параметры и цену. Через неделю он завернул продавца просто на въезде в автобазар, мне машина досталась на 30% дешевле среднерыночной стоимости (учитывая оплату услуг посредника). Да, лоторея, но всегда есть люди, лучше тебя разбирающиеся в предметном вопросе.
Ehuhaa
14.06.2016 13:24Было бы круто если бы Вы прикрутили базы соседних стран, например Беларуси — ab.onliner.by
Wildy
«Вы идете в магазин, ближайший к вашему дому, показываете на машину, ближайшую к двери, и говорите: „Я беру эту“. Этот алгоритм позволяет тратить минимум времени на не очень важные дела (покупку автомобилей) и оставляет большую часть времени на важные (разработку суперкомпьютеров).»
Сеймур Крей
yul
При таком подходе лучше и проще нанять водителя с машиной. А обычным людям таким образом можно купить только проблем на голову, и потом из сервиса не вылезать.
Jamdaze
Без пробной поездки? А вобще выберать сейчас не из чего, хоть бы одна машина ездила сама.
msfs11
Не очень понял ваш комментарий. Могу только сказать по своему опыту, что машина которая хорошо ведет себя на пробной поездке может оказаться с плохо прикрученными деталями, которые отвалятся через пару недель в дороге.
impetus
Сеймур Крэй погиб в автокатастрофе.
Есть ли связь между этим и такой его стратегией выбора автомоблия, или нет никакой связи — каждый решает сам (исходя из собственных/личных логических/мистических/религиозных (пред)убеждений или отсуствия таковых).
Кстати он ещё в своём доме противоатомное убежище строил с многолетними запасами — это к вопросу о важных делах.