7 июня 2016 в 11:57

Как программист машину покупал из песочницы

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

Как известно, для покупки авто на территории РФ существует несколько крупных авторитетных сайтов (auto.ru, drom.ru, avito.ru), поиску на которых я и отдал предпочтение. Моим требованиям отвечали сотни, а для некоторых моделей и тысячи, автомобилей, с перечисленных выше сайтов. Помимо того, что искать на нескольких ресурсах неудобно, так еще, прежде чем ехать смотреть авто “вживую”, я хотел бы отобрать выгодные (цена которых относительно рынка занижена) предложения по априорной информации которую предоставляет каждый из ресурсов. Я, конечно, очень хотел решить несколько переопределенных систем алгебраических уравнений (возможно и нелинейных) высокой размерности вручную, но пересилил себя, и решил этот процесс автоматизировать.
image

Сбор данных


Данные я собирал со всех описанных выше ресурсов, а интересовали меня следующие параметры:

  • цена (price)
  • год выпуска (year)
  • пробег (mileage)
  • объем двигателя (engine.capacity)
  • мощность двигателя (engine.power)
  • тип двигателя (2 индикаторные взаимоисключающие переменные diesel и hybrid, принимающие значения 0 или 1, для дизельных и гибридных двигателей соответственно). Тип двигателя по умолчанию — бензиновый (не вынесен в третью переменную во избежании мультиколлинеарности).

    Таким образом:

    image

    Далее подобная логика для индикаторных переменных подразумевается по умолчанию.
  • тип кпп (индикаторная переменная 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.txt") # загружаем выборку в R

dat$mileage[is.na(dat$mileage)] <- median(na.omit(dat$mileage)) # например для пробега

Для остальных переменных процедура идентична, поэтому опущу этот момент.

Теперь посмотрим как цена зависит от регрессоров (визуализация индикаторных переменных на данном этапе нас не интересует).

image

Оказывается за эти деньги есть несколько машин 2013 года и даже одна 2014!

image

Очевидно, что чем меньше пробег, тем цена выше.

image

image

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

Хочу обратить ваше внимание на тот факт, что в большинстве статей по машинному обучению, которые попадались мне в последнее время, в том числе на “Хабре”, очень мало внимания уделяется обоснованию правомерности использования выбранной модели, ее диагностики и ошибках.

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

Диагностика модели


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

Чтобы модель была корректной, необходимо выполнение условий теоремы Гаусса-Маркова:

  1. Модель данных правильно специфицирована, т.е.:
    • отсутствуют пропущенные значения.

      Подробнее
      Это условие выполнено (см. раздел Визуализация полученных данных), пропущенные значения заменены на медианные.

    • отсутствует мультиколлинеарность между регрессорами.

      Подробнее
      Проверим, выполняется ли это условие:

      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") # рисуем таблицу зависимостей между переменными
      

      image

      Видно что присутствует большая корреляция (>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) # линейная модель построенная по выборке без выбросов
      

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

      image

      image

      image

      Итого, выбранный нами путь идентификации выбросов позволил исключить из общий выборки 18 наблюдений, что несомненно положительно скажется на точности определения коэффициентов линейной модели с помощью МНК.


  2. Все регрессоры детерминированы и не равны.

    Подробнее
    Данное условие выполнено.

  3. Ошибки не носят систематического характера, дисперсия ошибок одинакова (гомоскедастичность)

    Подробнее
    Посмотрим как распределены ошибки модели (для расчета ошибок модели в R есть функция resid()).

    plot(dat.we$year, resid(model.we))
    plot(dat.we$mileage, resid(model.we))
    plot(dat.we$engine.power, resid(model.we))
    

    image

    image

    image

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

  4. Ошибки распределены нормально.

    Подробнее
    Для проверки данного условия построим график квантилей остатков против квантилей, которые можно было бы ожидать при условии, что остатки нормально распределены.

    qqnorm(resid(model.we)) 
    qqline(resid(model.we))
    

    image

Опробирование выбранной модели


Итак, настал момент, когда с бюрократией покончено, корректность использования модели линейной регрессии не вызывает сомнений. Нам остается только посчитать коэффициенты линейного уравнения, по которым мы сможем получить свои, предсказанные цены на автомобили и сравнить их с ценами из объявлений.

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)

image

И на какую выгоду в процентном соотношении можно рассчитывать?

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 вопроса:

  1. Какая у модели точность?
  2. Почему выбрана простейшая линейная регрессия и где сравнение с другим моделями?
  3. А почему бы не сделать сервис для поиска выгодных автомобилей?

Поэтому отвечаю:

  1. Протестируем модель по схеме 80/20.

    set.seed(1) # инициализируем генератор случайных чисел (для воспроизводимости)
    
    split <- runif(dim(dat)[1]) > 0.2 # разделяем нашу выборку
    
    train <- dat[split,] # выборка для обучения
    
    test <- dat[!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) # линейная модель построенная по выборке для обучения
    
    train.dffits <- dffits(train.model) # рассчитаем меру dffits
    
    train.dffits.we <- train.dffits[train.dffits < 0.42] # удалим значимые для меры dffits показатели
    
    train.covratio <- covratio(train.model)  # рассчитаем ковариационное отношения для модели
    
    train.covratio.we <- model.covratio[abs(model.covratio -1) < 0.13] # удалим значимые для меры covratio показатели
    
    train.we <- dat[intersect(c(rownames(as.matrix(train.dffits.we))), c(rownames(as.matrix(train.covratio.we)))),] # выборка для обучения без выбросов
    
    train.model.we <- lm(price ~ year + mileage  + diesel + hybrid + mt + front.drive + rear.drive + engine.power + sedan + hatchback + wagon + coupe + cabriolet + minivan + pickup, data = train.we) # линейная модель построенная по выборке для обучения без выбросов
    
    predictions <- predict(train.model.we, test) # проверим точность на тестовой выборке
    
    print(sqrt(sum((as.vector(predictions - test$price))^2)/length(predictions))) # средняя ошибка прогноза цены (в рублях)
    [1] 121231.5
    

    Много это или мало — можно узнать только в сравнении.
  2. Линейная регрессия, как один из азов машинного обучения позволяет не отвлекаться на изучение алгоритма, а полностью погрузиться в саму задачу.

    Поэтому я решил разделить своё повествование на 2 (а там как пойдет) статьи.

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

    И вот, что из этого получилось — Mercedes-Benz E-klasse не старше 2010 года выпуска, стоимостью до 1.5 млн. рублей в Москве.

    image

    Ещё
    image


Ссылки


1. Исходные данные в формате csv — dataset.txt
Никита @nikitos18
карма
32,0
рейтинг 0,0
Анализ данных
Самое читаемое Разработка

Комментарии (208)

  • +52
    «Вы идете в магазин, ближайший к вашему дому, показываете на машину, ближайшую к двери, и говорите: „Я беру эту“. Этот алгоритм позволяет тратить минимум времени на не очень важные дела (покупку автомобилей) и оставляет большую часть времени на важные (разработку суперкомпьютеров).»
    Сеймур Крей
    • +3
      При таком подходе лучше и проще нанять водителя с машиной. А обычным людям таким образом можно купить только проблем на голову, и потом из сервиса не вылезать.
    • +1
      Без пробной поездки? А вобще выберать сейчас не из чего, хоть бы одна машина ездила сама.
      • +2
        Не очень понял ваш комментарий. Могу только сказать по своему опыту, что машина которая хорошо ведет себя на пробной поездке может оказаться с плохо прикрученными деталями, которые отвалятся через пару недель в дороге.
    • +18
      Сеймур Крэй погиб в автокатастрофе.
      Есть ли связь между этим и такой его стратегией выбора автомоблия, или нет никакой связи — каждый решает сам (исходя из собственных/личных логических/мистических/религиозных (пред)убеждений или отсуствия таковых).

      Кстати он ещё в своём доме противоатомное убежище строил с многолетними запасами — это к вопросу о важных делах.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Объём двигателя — это не capacity, а volume или displacement. А так — супер! :)
    • +3
      There`s no replacement for displacement
  • +8
    90% успеха при покупке б/у авто решает состояние, особенно это касается выбранного вами сегмента авто. А этот «экспертный» показатель настолько расплывчат в объявлениях что единственный вариант это ваша очная встреча с авто. Если задачей не стояла покупка авто а некоторая
    «RND» или «научная» задача для сервиса, то выполнена она великолепно!!!
    • +5
      Я абсолютно согласен, что все решает состояние, просто прежде чем ехать смотреть машину, нужно выбрать какую именно ехать смотреть в первую очередь.
      • 0
        Редко когда нужно выбрать из несколько сотен авто. Даже когда нужно они быстро фильтруются по фото/цене. Более значительное время занимает выбор конкретной модели, но робаста это просто фильтр по цене, а это уже есть и на дроме и на автору.
        • +4
          Фильтр по цене, и фильтр по цене относительно рынка в зависимости от параметров авто — это совсем не одно и тоже.
          • 0
            Пока «рынок» это 3 основных сайта, а не десяток, так что и тут особой сложности нет.
            • +1
              Сложность как раз в том, как оценить эти предложения, а не ехать смотреть ту, что по цвету понравилась и продается в соседнем районе. Алгоритм дает понимание, какой вклад каждый из параметров вносит в формирование цены конкретной модели.
      • 0
        И вот тут важен некоторый опыт…
        В тч опыт психолога…

        По звонку можно _попробовать_ определить все ли рассказывает продавец или о чем-то умалчивает…
        Попробовать выяснить реальные причины продажи, почему дешевле других и тд и тп

        В идеале брать у очень хороших знакомых, когда вся «история» авто была перед вами…

        Ваш подход сработает на 100% если продавцы будут заполнять «карту авто» где будут указаны все его основные проблемы честно, а не «продать и забыть»
        Вот только таких продавцов обычно единицы ;-(
        А то «не бит, не крашен, ...» а в реале — например восстановленная после затопления машина… Или после очень серьезной аварии, когда кузов полностью потерял геометрию, был восстановлен в хорошей мастерской, где всю геометрию сделали идеально…
        Но вот только при ближайшей же аварии окажется что пассивной безопасности уже 0…
        • 0
          Да, «психология» иногда помогает. Вот недавно авто отцу покупал. Позвонил перекупу, спросил, можно ли ее на диагностику свозить, а тот отнекивался, а потом раздраженный трубку бросил.
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Нет гарантий от покупки авто, который приехал с мелкими проблемами или вообще новый, но попал в аварию уже тут, был качественно восстановлен…

            >Ваш друг, который купил у Вас авто, будет ожидать, что Вы его будите консультировать, помогать с ремонтом, но далеко не факт, что у Вас на это есть время.

            Зависит от человека. Везде и всегда.
            Обычно нормальная ситуация ответить что там такое может свистеть/греметь/… что сразу не заметили…
            Ну те месяц мб поконсультировать слегка…
            Помощь в ремонте? Не с современными авто уже давно.
            Есть единицы водителей, которые смогут что-то отремонтировать хоть сколько нибудь серьезное…

            Ну и я все же говорил про обратную ситуацию. Не вы продаете авто, а вы покупаете =)
        • +1
          В идеале брать у очень хороших знакомых, когда вся «история» авто была перед вами


          если хочется остаться «хорошими знакомыми» лучше все таки брать у посторонних людей после проверки в автосервисе.
  • –1
    Замечательно, но это же ад просто шерстить по каждой модели. Ищут же среди брендов, но уж не моделей. Например, мне было б интересно Nismo, Toyo, Volk, Audi. Но в каждой мне интересен десяток моделей. Не проверять же всю. Уверен, сравнение возможно и среди подобной выборки.
    • 0
      не соглашусь, сейчас тоже, как автор, ищу авто, но смотрю конкретно 2 модели.
      • 0
        Что является ограничивающим условием? По честному пожалуйста.
        • 0
          7 мест (предпочтительно), 4wd, не старше 2012 года до 2 млн. Моделей получается совсем мало: highlander, honda pilot/acura mdx (очень мало предложений). Ну и конечно такой параметр, как нравится/не нравится внешне
          • 0
            «ВАЗ-2120 «Надежда» — семиместный полноприводный минивэн» ваш выбор! :) О существовании такой машины я узнал лишь сегодня.

            А если серьезно, в бюджет 2КК укладывается подавляющий сегмент рынка. Я бы даже сказал и кусочек примиума захватывается.

            Рад что вы можете позволить себе машину за 2КК, но думаю что вы заметное исключение из правил Ваш вариант не характерен. Поэтому его можно игнорировать, как статистический пик.

            Ну конечно я подразумеваю, что сервис делается для БОЛЬШЕЙ части людей желающих стать автовладельцами.

            Вы представитель VIP сегмента и можете нанять себе отдельного человека, который всё сделает за вас.
            • 0
              gigimon же не за 20 млн машину покупает. 2 млн не маленькая сумма, да.
              Но это не VIP. Те, кто VIP авто с пробегом за 2 млн особо то не смотрят.
              • 0
                В нашем мухосранске новую машину за 2 млн не каждый день увидишь на улице. А тут на б/у такой бюджет!
                У кого-то щи пустые, у кого-то жемчуг мелковат…
                • 0
                  Это вам так кажется, у меня тоже небольшой городок без производств и т.п. недавно присоединенный к России :) Но количество местных новых машин премиум класса (новые MB, BMW, Lexus представленые совсем недавно) зашкаливают.
                  • 0
                    «Крым наш»? :) Вот вот, вы не характерны. Многие сейчас в Крым переносят свои организации. Не… производство остается на месте. Место регистрации меняется. Налоги меньше. Кол-во богатых людей больше. Приезжих. И заработавших на приезжих.
            • 0
              А можете мне сказать, что это за подавляющий сегмент рынка? По мне туда попадает 3-5 моделей, некоторые из которых я убираю (не нравится внешне, слабый двигатель для такой машины, не комфортно внутри). Из VIP сегмента (немцы, lexus, acura) в эту цену не подпадает вообще ничего по моим запросам
              • 0
                Я имел в виду вообще ВЕСЬ рынок б/у авто. Но как писал, вы, как мне кажется, выпадаете из среднего покупателя.

                Ладно, давайте на этом закончим. Сервис хорош пусть развивается дальше, автору успехов!
          • 0
            Mazda CX-9 ещё
          • 0
            Chevrolet Tahoe тоже укладывается
          • 0
            Toyota Alphard — и 7 мест, и полный привод, и не обычный «черный джип». И вообще, если посмотреть на правый руль, очень много вариантов может нарисоваться.
    • +2
      Подобное сравнение безусловно возможно, просто требует больше времени на сбор данных. Сервис разрабатывался для людей которые ищут автомобиль себе, а они зачастую выбирают из нескольких моделей, в отличие от перекупщиков.
  • 0
    Подтверждаю качество работы ресурса. Не далече чем позавчера искал Рено Логан в Иркутске и области. Результаты моего поиска за день на робасте вывелись за несколько секунд. И сегодня с утра мозговал мысль, что неплохо бы сделать сравнение авто, как товаров на сайте интернет-магазина.
    • +1
      Для этого можете добавлять понравившиеся авто в избранное (кликнуть на сердечко), список избранных авто находится в левом нижнем углу, данные хранятся в local storage, никакая регистрация не нужна.
  • +1
    Я выскажусь только про сам ресурс. Очень странный. Подгонки фильтров под выбранную модель нет, а должна быть, ведь нельзя искать 6-ти литровую ладу, а вот выбрать из выпускаемых двигателей, кпп и прочего можно. Опять же, цена в бу машине не всегда самое важное, в ней важнее состояние, а уже потом цена. Вот в новой машине важнее цена, комплектация, то что можно не проверять лично.Поэтому советовать покупать бу машину основываясь только на цене, я бы никому не стал. Нужно брать спеца, смотреть, щупать, гнать на СТО.
  • 0
    а как часто базы с автосайтов обновляются?
    • +1
      Данные собираются в реальном времени.
      • 0
        Если есть возможность, было бы неплохо и эту сторону проекта поглазеть.
      • 0
        Каждую минуту парсите выдачу, или что-то более продвинутое?
        • 0
          Зачем каждую минуту? Думаю, что с каждым запросом пользователя парсинг осуществляется (пока пользователей мало — это нормально).
  • 0
    Ещё бы гейтинг, чтобы в нужных осях выбирать регион с нужными значениями и фильтровать/раскрашивать прочие регионы по этому выбору. Пример гейтинга, доступный в онлайне сходу могу вспомнить только 1, nix.ru
    • 0
      Хорошая идея, я подумаю.
  • +4
    При покупке б/у автомобиля есть ключевые проблемы совершенно иного характера, с которыми вы абсолютно точно столкнетесь и которая невычисляема. Это, как уже замечали выше:

    * абсолютная невозможность понять общее состояние авто из фотографий и цены — вам придется ехать и смотреть. Но это еще полбеды, потому что тут хотя бы частично поможет описанный алгоритм

    * проблемы конкретных машин на конкретных пробегах. Пример: несколько лет назад я думал о покупке похожего автомобиля. В данном ценовом диапазоне удачным сооношением обладал Mercedes W204. Он хорошо выглядел, он прилично ехал. Но проблема у них в том, что на малообъемных двигателях (274-х, например) у них есть известная проблема с цепью, муфтами etc. после 80-100 тысяч пробега. Если вы замените все вовремя, стоить это будет примерно 150 тысяч рублей. Если не замените — 50/50 вы попадете в ближайшие 30 тысяч на капремонт двигателя (250+ тысяч рублей). Это автоматически добавляет к стоимости автомобиля 150 тысяч на замену запчастей (и это только если вы _знаете_ об этом). 150 тысяч — это значительная сумма. То же самое было у ряда ауди (коробки и жрущие масло двигатели). То же сейчас есть у F30 BMW (проблемы с электрикой, двигателями и топливной системой у дизелей и не очень аккуратном обращении) — думаю, их именно поэтому столько продают.

    Поэтому алгоритм хорош, да. Но надо точно знать, что вы хотите купить вплоть до силового агрегата, иначе вы рискуете купить вещь, которая потребует потом колоссальных вложений. И это мы еще не говорим про автомобили старше 5-7 лет.
    • 0
      Вы абсолютно правы, люди покупающие б.у. машины должны в них разбираться и осознанно идти на риск попасть на ремонт. В любом случае придется ехать и смотреть, алгоритм лишь поможет понять какое подмножество из сотен/тысяч машин разумнее ехать смотреть сначала.
      • 0
        Т.е. дело не в общих соображениях касательно покупки б/у авто, а во влиянии таких факторов на результат работы алгоритма.

        В приведённом примере алгоритм поместит часть реально выгодных предложений в невыгодные. Пострадают предложения, в которых владелец уже вложил условные 150 тысяч в обслуживание и в соответствии с этим поднял цену.
        • 0
          Странно вкладывать большие деньги перед продажей, это скорее исключение из правил.
    • 0
      >и это только если вы _знаете_ об этом

      Хорошо знакомые мастера с автосервиса + форумы не спасут?
      Надо именно знать? =)
      • 0
        В "_знать_" я вкладываю понятие «обладать информацией», а не «иметь провидение». Если у вас достаточно свободного времени на месяцы изучение рынка б/у автомобилей и их типовых проблем — вы счастливый человек. Чуть ниже я сейчас расскажу, почему, на мой взгляд, нужно так много этого времени.

        Мастер же мастеру рознь. Во-первых, с годами приходит профдеформация — у меня есть несколько знакомых, которые (условно) говорят «не покупай ауди, я часто ремонтирую их, они тебя без штанов оставят» или «не бери мерседес, это черная дыра для денег» — и так для каждой марки. Во-вторых, мастера, как правило, специализируются на одной марке, т.к. для того, чтобы реально понимать проблемы машин определенной линейки, нужны годы. Вот вам простой пример — на современных Land Rover у ряда двигателей замена ролика преднатяжителя рекомендована производителем на 120 тысячах километров. 95% сервисов в стране следуют этой рекомендации. В примерно 20% случаев это приводит к его износу раньше данного срока, дальше цепь — загиб клапанов — замена двигателя (он не подлежит ремонту в данном случае). Ролик стоит 10 тыщ. Движок стоит 1.6 миллиона. Как вы думаете, сумеете вы вычитать это на форумах или подскажет вам это знакомый мастер при покупке? Поэтому да, нужно _знать_ и, если нет 100% уверенности — иметь значительную сумму на дополнительный ремонт при покупке.
  • +5
    По своему опыту скажу следующее. (последний раз по Москве в 15 году)
    В 90 % случаев объявлений если это не частник то полная липа. Звонишь тебе говорят да есть такая, приезжайте. Приезжаешь машины нет, в лучшем случае машина не та что на фото и другой комплектации. После 3-4 случая уже начал ругаться. Как выяснилось что все телефоны идут в коллцентр. И девочка на трубке понятия не имеет что там на самом деле. Но утверждает что она менеджер и вот прям стоит напротив машины.
    • +3
      — алло
      — алло
      — машину продаёте?
      — да
      — какую?
      — ээээ… <тут много чего фантазируют>
      — ясно, перекупам до свидания.

      Такой диалог легко отсеивает 99% перекупов (а связываться с перекупами в Москве смысла нет вообще).
      • 0
        Именно так, как только слышите в ответ «какую?» можете класть трубку.
        • +3
          Насколько я понял, это автор спрашивает «какую?». А поскольку перекуп не знает, по поводу какой именно ему позвонили — не может сразу ответить.
          Но, вообще-то, это какие-то лоховские перекупы. Нормальные перекупы давно покупают на каждую продажу новую симку и знают на какой номер им по поводу какого авто звонят.
          • 0
            Чего-то много движений ради продажи ведра с гайками…
            • 0
              Много движений? Купить симку за 200р?
              Да и продавать то будут не ведро. Это оно на самом деле, может, и «ведро». А цену будут просить как за «не бит, не крашен, ездила девушка на работу и обратно». Так что прибыль то получится дай боже.
              • –2
                Ну даже если вы 10 машин продаете — уже проблема будет иметь столько телефонов-симок и все это администрить.
                • 0
                  Чего там администрировать-то?
                  Каждая симка в своем телефоне — на телефон приклеиваешь бумажку с именем, от которого написано объявление, и машиной.
                  Все — телефон звонит, сразу видишь «как тебя зовут» и что ты продаешь.
                  На стенку перед носом вешаешь листок с подробным описанием этой машины — чтобы бумажками во время разговора не шуршать, но сразу видеть все данные.
                  Даже CRM не нужна =)
                  • 0
                    Полно автосалонов, у которых 30-50-100 машин. Они не будут заморачиваться левыми симками и держать 100 телефонов, на которых написаны параметры машины. Им проще подождать звонка следующего покупателя.

                    Для устойчивого потока звонков они публикуют объявления с популярными марками/моделями авто, и так или иначе колл-центр «закрывает» звонящего на приезд на осмотр. А далее уже ушлые менеджеры разводят или не разводят покупателя на что угодно, в зависимости от степени «лошарости» последнего.
                    • 0
                      Вы путаете автосалоны и перекупов-частников. Речь шла о последних.
                    • 0
                      Такие надо обходить такие стороной =)
                      Так что тест выдает верную диагностику. )
                • 0
                  Есть знакомый перекуп. Всего в год — он продает довольно много машин, но вот в каждый момент времени — от нуля до трех. И то, три — это рекорд. Частный перекуп не настолько богат, чтобы сразу купить себе прямо вот много машин. Обычная схема — купить дешево, быстро причесать, продать не слишком уж дорого (бывают исключения с необычными «особо пацанскими» машинами — на них можно задрать ценник и подождать своего покупателя).

                  Так что он даже как-то без наклеек на телефоны умудряется работать.
        • 0
          Я один раз продавал одновременно две машины: свою и отца, чтоб купить одну общую повместительнее.
          Было заметно, когда люди пользуются трюком «не говори о машине первым». Приходилось оправдываться, мол, такая ситуация…
          Но конечно, мой случай редкость, перекупов в разы больше.
      • 0
        Не всегда поможет. Обычно у перекупов отдельный мобильник на каждую машину. Соответственно, сразу понятно по какому объявлению звонят.
        • 0
          Перекупы давно уже сами не принимают звонки, принимают их в дешманских колл-центрах (на дому организованных).
          Ну и всегда можно задать ряд уточняющих вопросов — «сколько владельцев», «когда купили», «как обслуживали», «что в машине меняли». На обслуживании перекупы валятся. Когда я попал наконец-то на настоящего частника — он мне минут 5 рассказывал про машину, всю её историю, сколько денег потратил и прочее. Перекупы все ограничивались мычанием или называли один из известных официальных сервисов, даты назвать не могли. Ну а уж когда я спрашивал про ремень ГРМ (там я как раз покупал машину, с подходящим пробегом замены, искал сразу с замененным) — каких только сказок не наслушался. От «да вы что, там цепь» до «да вы что, его менять не нужно».
      • +1
        При мне был такой разговор по телефону:
        — Ало машину продаете? (вероятный вопрос)
        — Какую?
        — Газель, вы же продаете.
        — Нет… А ну я же её продал 2 года назад, тот болван что, объявление о продаже с заднего стекла не стер?
        :)
  • 0
    Когда читал, сначала подумал… Как только люди не извращаются. А в конце проникся уважением к Автору. Молодец, не просто придумал, но и сервис сразу сделал. Правда хаброэффект и его настиг)))
    • 0
      Спасибо) кстати, пока не настиг)
  • 0
    На вашем сайте нельзя выбрать пробег больше 100500, что если меня пробег вообще не интересует?
    • 0
      не трогайте фильтр просто и все. Там 100500 тыс. км., а не 100500 км. ))
      • 0
        все равно в запрос подставляет 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
        • 0
          не переживайте, в коде это не учитывается, сделано для унификации, т.к. на разных сайтах пробег ограничен сверху разными величинами.
  • 0
    Пробил свою модель
    самая дешевая (ЦЕНА ЗАНИЖЕНА НА: 224 517) оказался битым
    следующая (ЦЕНА ЗАНИЖЕНА НА: 154 464) коцанный и ржавый
    следующая (ЦЕНА ЗАНИЖЕНА НА: 120 507) 10 лет 180тыр а краска как с завода и сидение пассажира не соответствующее комплектации(должно быть электро-регулировки)

    ну и как я понимаю получаем на выходе заниженную среднюю цену от которой оталкиваемся
  • +1
    Краска как с завода это же здорово, особенно если цена при этом ниже рынка) Удачи с покупкой
    • 0
      Вы в это верите? Скорее «облитая» — то есть очень быстро «зацветет».
      • 0
        Чего гадать, нужен толщинометр)
        • –1
          ))
  • +1
    Как собирались исходные данные?
    • +1
      Это довольно трудоемкая задача, заслуживающая отдельной статьи. Может позже об этом напишу.
      • 0
        Было бы очень интересно.
        Предполагаю, что скрапинг сайтов с помощью Python?
  • 0
    Автор молодец. Но объявления наводнены перекупщиками, салонами с липовыми пробегами и битыми машинами. Кроме того те же личности вносят откровенно липовые объявления с завышенными/заниженными ценами для манипулирования самим рынком, а еще есть тема с мошенниками, которые дают липовые объявления с заниженной ценой, и стараются развести на залог. Так что входные данные для исследования очень плохие, на них адекватный анализ выполнить к сожалению не получится.
    • 0
      Самостоятельно вы тем более не сможете выделить подмножество потенциально выгодных предложений. Выявить перекупщика и развод на залог можно и по телефону, липовые цены — алгоритм не учитывает, считая за выбросы. Поэтому благодаря алгоритму вы будете двигаться по заранее выгодному пути к приобретению авто, попутно отбрасывая битые авто и авто со скрученным пробегом при личном осмотре, до той поры пока не найдете авто устраивающий именно Вас.
      • 0
        отброс выбросов — это хорошо. Ваш сервис неплохо дает ориентировочное представление о цене на рынке с примесью липы и скрученных пробегов, но иначе эту задачу сейчас и не решить.
        Такой еще вопрос, хочу посмотреть только частников, но попадаются и предложения площадок.
        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#
        что-то не то во входных данных?
        • 0
          drom.ru не разделяет объявления на частник/салон
          • 0
            Может стоит тогда откинуть дром при выборе частника — просто в салонах как правило совсем все плохо и они, как я понимаю, в 99.9% крутят пробеги, а то и с годом мудрят, а цена у них как правило ниже рынка. У Вас на первые позиции попадает много как раз салонных машин.
            • 0
              Я подумаю, честно говоря, надеюсь что дром прикрутит этот несложный фильтр
      • 0
        : Выявить перекупщика и развод на залог можно и по телефону

        а в чем проблема менять симку хоть под каждый авто, виртуальный телефонный номер итд итп?
        • 0
          Я про выявление при беседе по телефону)
  • 0
    Поставлена очень хорошая задача и осуществлено ее решение.
    Думаю данный сервис может пригодится многим автолюбителям. В том числе и для выбора цены продажи своей машины.
    Как-никак а вот она, золотая середина цены.

    Было бы классно, если бы аналогичный функционал был сделан для мототехники (возможно и еще для каких-то категорий.)
    • 0
      Насчет мототехники тоже были мысли.
      • 0
        Было бы супер.

        Если понадобится помощь — готов поучаствовать, правда пока только «руками»))
  • 0
    Имхо, сервис может быть полезен также при продаже своего авто, чтобы выставить адекватную цену.

    З.Ы. Хотелось бы увидеть поддержку мототехники :)
  • 0
    Математически всё красиво, но мало применимо в реальной жизни. Нужна машина с максимальным остаточным ресурсом, по адекватной цене. Пробег учитывать бесполезно, он с потолка в большинстве случаев. Коробку, наоборот, стоит разбить на типы (робот, вариатор, автомат), т.к. это существенный фактор, влияющий на цену и на ресурс.
    Для реальной жизни — http://av100.ru. Настроил поиск, получил уведомление, договорился, посмотрел, купил. Но специалиста с собой брать обязательно, для оценки состояния.
    • 0
      Не уверен, что человек который ищет авто для себя пойдет путем который Вы предлагаете) я бы точно не пошел
      • 0
        Согласен, что обычный человек по такому пути не пошёл бы, а стоило (особенно последний пункт). В объявлении мало данных, да ещё не все верные. Например, первые 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 исключать не планируете, в парсер бы добавил поиск по словам «мы», «кредит», и пр. с последующим выводом предупреждения о салоне, т.к. на салоны время тратить считаю лишним. Успехов в развитии.
        • 0
          То что 2 записи один и тот же автомобиль — не вижу тут криминала, просто человек на 2х сайтах разместил, в идеале можно прикрутить алгоритм классификации для фото, но зачем?
          Для дрома планирую сортировать частник/салон. Спасибо за критику, учту
    • 0
      Про пробег согласен, год важнее.
      Но сайт av100 удобен при «ловле» авто, если текущие машины в продаже уже отсмотрены и оказались ведрами. И совсем не гарантирует, что на рынок в «нормальном» горизонте событий выбросится подходящее авто.

      А сервис автора убирает рутинную работу, когда открыто 30-50 объявлений (по своей и соседним областям, а то и в радиусе до 1000км), которые потом вычитываются, отбираются, и обзваниваются.
      • +1
        >Про пробег согласен, год важнее.

        А я бы вот не отказался купить авто из «капсулы времени»…
        Менять там, конечно, много надо, но по крайней мере если машинка не коллекционная то за вменяемые деньги получается новое авто…
        ЗЫ если бы авто мне было нужно =) Пока мне на порядки дешевле выходит раз в неделю при надобности такси вызвать…
        • 0
          Капсула времени может и хорошо, но это как ее содержать надо. Сами знаете, что у стоячей машины все резинки сдыхают и иногда их приходиться менять вместе с узлом, так что ох не просто все это.
  • 0
    Хабраэффект или у меня проблемы с сетью\браузером? Поисковой выдачи нет, консоль говорит:
    net::ERR_CONNECTION_REFUSED
    • 0
      Да прилег слегка, уже поднялся)
  • 0
    Большое спасибо за полезный ресурс! Автор, твой продукт слишком актуален =) все полегло
    • 0
      спасибо, подняли)
  • 0
    Имхо, гораздо полезнее был бы сервис, который умел бы по показателям объявления предсказывать вероятность что машина плохая(как это сейчас делают перекупы в уме), но такое, к сожалению, очень сложно автоматизировать…
    • 0
      Довольно сложно формализовать такую задачу. На мой взгляд я и решаю частный случай этой задачи.
      • 0
        На самом деле просто как-то выделять слишком дешевые или слишком с большой разницей пробег/год
        Но тут можно попасть при большой удаче на «капсулу времени», когда владелец поставил авто в гараж, а через лет 10 решил продать… (или его наследники).
        Правда на такие машины сейчас цену чаще всего задирают больше, чем на новые… ;-(
      • 0
        Если реализовать возможность получать из объявлений телефоны, можно путем составления базы телефонов и частоты их повторения + соотносить код телефона и регион сделать некую шкалу риска по конкретному объявлению. В выдачу добавить подсказку по риску на каждый вариант с описанием что там подозрительное (телефон часто мелькает в др обявлениях, код не соостветсвует региону продажи и тд)
        • 0
          Примерно в таком направление сейчас и двигаюсь! Однако, как уже писали выше, перекупы зачастую имеют несколько симок, и тогда этот анализ не имеет смысла.
          • 0
            Такие люди жадные, и часто косметическую уборку не делают. Полагаю, больше половины не покупает новую симку на каждый 3-й авто ;)
  • 0
    цена (price)
    год выпуска (year)
    пробег (mileage)
    объем двигателя (engine.capacity)
    мощность двигателя (engine.power)
    тип двигателя

    Первая ассоциация — о нет, снова пример обработки данных на mtcars :)

  • 0
    Автор — молодец! Не понимаю опасений за линейную регрессию — функционал-то (в смысле функции, а не возможностей) можно выбрать любой, подобрать, кстати, можно попробовать при помощи Eureka, например.
    • 0
      Как раз о выборе алгоритма расскажу следующей статье
  • 0
    А я думал, что это я заморочился, когда спарсил iihs.org , чтобы посмотреть безопасные автомобили с привязкой к году выпуска.
    P.S. интересная вещь у Вас получилась!
    • 0
      Спасибо
  • 0
    Важная вещь — как давно товар на рынке. Было бы неплохо иметь возраст объявления в модели или как фильтр.
    • 0
      Я думал об этом, но после истечения срока публикации, если продавец продлевает публикацию, то дата первоначальной публикации не отображается.
      • 0
        Это да. На auto.ru она раньше (когда я машину искал) была на фото, там ее обычно народ не обновляет, можно оттуда доставать. Более хлопотно, правда.
      • 0
        Кстати, а у вас есть какой-то способ отсеивать клоны объявлений?
        На сайтах аренды/продажи квартир такое постоянно — предлагают по сути один объект, у которого немного варьируются параметры (неточный адрес, не все параметры прописаны, разное количество фотографий, цена немножко отличается).
        Ну и традиционное — фотки берут из чужих объявлений, создают копии объявлений, когда старое протухает.
        • 0
          Пример который вы описали вполне подходит под разные объявления от разных владельцев)
  • +1
    Может быть я пропустил эту информацию… Не увидел, как вы собираете базу машин?
    Планирую для своих нужд аналог av100.ru поднять на домашнем сервере, но пока уперся в отсутствие понимания как грамотно собрать базу объявлений. У вас эта задача, судя по всему, решена. Как?
    • 0
      Объявления собираются в реальном времени.
      • 0
        Это замечательно!
        А технически это как делается?
        Запросы в API каждого сайта? Парсинг html?
        • 0
          смешанный подход, за подробностями пишите в личку, тут писать будет очень длинно. Планировал по этому поводу написать отдельную статью
          • 0
            Зачем в личку? ИМХО тема достойная статьи. Впрочем, если лень оформлять — краткий обзор в комментариях тоже будет очень полезен.
  • 0
    Для недвижки, помнится, народ как-то отсеивал агенства. Не помню уже деталей — вроде на Хабре был пост. Может сюда такое же можно привинтить?
    • 0
      Посмотрю на хабре
      • 0
        https://habrahabr.ru/post/148782/
        https://habrahabr.ru/post/264407/
        https://habrahabr.ru/post/242085/

        В порядке убывания по релевантности (на мой субъективный взгляд)
        • 0
          не увидел чтобы отсеивали агентства.
          • 0
            Насколько я понял из комментов к первому посту, там вводился параметр «оценённость» квартиры, который для агенств обычно склонялся в сторону переоценки, а для частных — наоборот.
            Если говорить про прямой отсев — да, такого я тоже не нашёл
            • +1
              Вы не так поняли… переоцененность и недооцененность — это отклонение предсказанной с помощью алгоритма цены относительно цены в объявлении, не более того.
  • 0
    Идея хорошая, но не различает комплектации авто. Т.е. про вариант где порный фарш алгоритм будет говорить цена завышена, а про базовую версию — выгодное предложение. Т.е. кроме указанных переменных есть же еще и наличие парктроника, подогрева сидений, камеры заднего вида, ходовых светодиодных огней, климат контроля, панорамной крыши и прочих-прочих радостей жизни. Они влияют на цену, а алгоритм их отбрасывает как ненужный шлак.
    • 0
      Поддерживаю. Комплектация очень сильно влияет на цену. Не поленился, залез в конфигуратор на ford.ru. Ford Focus Titanium: базовая комплектация 1.185 млн.руб., тот же Titanium со всеми наворотами (только доп.оборудование!) стоит 1.510 млн.руб. Это +27% к базовой стоимости.
      • +1
        Это на новые машины только распространяется. С прошествием лет этот показатель убывает по экспоненте.
        • 0
          Т.е. через год покупателю становится все равно на все плюшки и хочется дешевле?

          Идея самого сервиса — найти лучший автомобиль за меньшие деньги. Каждая дополнительная плюшка чего-то стоит. Если продавец недооценил плюшки — надо помочь покупателю найти эту выгоду.
          • 0
            Возможно в чем-то Вы и правы.
  • +1
    Спасибо за сервис.
    Небольшой баг-репорт. Сделал поиск с параметром «Продавец=Частное лицо» (конкретно — искал «Mazda CX-5» 2015-2016 годов в Петербурге) и абсолютно все найденные машины были от официального дилера. Вот одна из ссылок, все остальные были от того же продавца: хттп://spb.drom.ru/mazda/cx-5/21418729.html

    Догадываюсь, что на том сайте, наверное, нет явного признака — частное ли лицо продавец, но в данном конкретном случае в объявлениях есть информация, по которой можно распознать автосалон. По крайней мере, есть ключевые слова, фразы, по наличию которых можно понижать вес параметру «частное ли лицо продавец?» при его вычислении.

    И еще, в качестве идеи: если сайт позволяет определить, есть ли у данного продавца другие активные объявления с продажей машин (а это можно выяснить и самостоятельно, если собирать с объявлений телефоны) — то по наличию у продавца более одного объявления, на мой взгляд, надо максимально понижать вес параметру «частное ли лицо продавец?». Поскольку даже если это перекупщик — по любому, он должен идти как Автосалон, а не как Частное лицо. Либо даже лучше — вводить дополнительное значение классификатора «Продавец=Серийный продавец (Перекупщик)», поскольку именно их и хотелось бы отфильтровать.

    Резюмируя: хотелось бы более надежного определения «Автосалонов» и «Частных серийных продавцов».
    • 0
      Все верно, дром не отличает частников от салонов, работаю над этим вопросом. Спасибо за советы.
  • 0
    Так же дополню баг: искал Хундай Сонату в Томске. Вчера находило все корректно, сегодня поиск выдал вагон объявлений. И 75% из них были в Москве. После беглого анализа выяснил, что drom.ru выдает корректно объявления из Томска. А вот auto.ru жульничает.
    • 0
      Спасибо за инфу сейчас посмотрел все верно — вот
      • 0
        Прошу простить мой слабый анализатор смысла: «все верно» это вы про то, что «баг подтвержден», или про то, «что теперь все работает как нужно»?
        Ибо перешел по вашей ссылке и сразу «одна Москва». Хотя на странице вашего сервиса написано, что Томск. И, опять же, грешит один auto.ru

        Если у вас все верно (т.е. ошибок не видите), то могу в ЛС кинуть более точные данные того, что видно у меня.
        • 0
          поправил — тыц
          • 0
            Фикс взлетел, спасибо. В августе воспользуюсь вашим сервисом по назначению.
            • 0
              Вам спасибо)
  • 0
    Решил поискать по Томской области Honda accord 6 поколения. Поиск выдал результаты. У каждого результата подпись, что это Томск. Открывая объявление видно, что это Москва или др. города.
    • 0
      Аналогично с Новосибирском
    • 0
      Спасибо за замечание, поправлено.
      • 0
        Видимо авто.ру не очень нравится поток людей)
  • +1
    Убрать с главной слайд шоу. Раздражает. Если хотите, выводите результаты одного из предыдущего запроса. Или какую либо статистику.
    Что чаще всего ищут или что-то ещё в ом же духе. Пропадет место зря.

    Мне вот интересен вариант

    Иномарка. АКПП. Левый руль. Цена.

    Не могу выбрать. А перебирать все марки… Дооолго… :(
    • +1
      Не могу выбрать. А перебирать все марки… Дооолго… :(
      Вы же телефон не выбираете «андроид» «4 гига оперативы» экран «амолед»? Тут тоже самое читать, выбирать, прикидывать по обслуживанию и прочим вещам. Слишком много моделей, слишком много нюансов, которые лучше изучить заранее.
      • 0
        Вы не поверите ;)
        Я, например, примерно так телефон и выбирал. Аналог «левого руля», — «я хоть что-то про фирму слышал».
        Выбирал-выбирал,… а потом увидел по акции сяоми за полтинник ;). Жаль, что с машинами всё сильно сложнее.
        • 0
          С телефонами вам проще, потому что вы возможно про них хоть что-то слышали. Вот и с машинами тоже самое, надо читать смотреть, прикидывать. От общего к частному. Сперва для чего машина, потом обслуживание и ремонт, потом читать отзывы по подходящим моделям. Все это с каждым разом сужает конечные варианты. К примеру если искать «андроид» «4 гига оперативы» экран «амолед», то самым дешевым будет китайский ноунейм. Но вы же прекрасно понимаете, что кроме цены тут есть и более важные параметры не так ли?
          • 0
            Про машины вы тоже «что-то слышали». Я не о том. Я о том, что есть люди, которые телефон выбирают как жену. Ну, видать делать нечего, нет более интересных занятий и можно убить три недели на выбор телефона. Большинство же своё время ценит гораздо больше и из них половина просто выбирает айфон, а вторая — ну, вот примерно как я — о фирме что-то слышал. Этим отсекаются совсем негодные китаефоны. А бОльшего и не надо. С автомобилями очень многие люди поступают приблизительно так же — отсекают, например автотаз и выбирают тип кузова. Окончательный выбор — по цвету :). Для общераспространённых целей такой способ даёт не самые плохие результаты и позволяет съэкономить время и нервы. В среднем сегменте всё примерно одинаково. Для каких-то специальных задач, да критерии другие и сложнее. Ну, и, как ниже написано, в зависимости от размера рынка широта критерия может очень сильно меняться. В Москве у каждой модели сотни предложений. В нашем городке у меня был критерий — «большой универсал с автоматом, год, цена». Это дало всего десяток вариантов. А многие вообще просто на авторынок приходят и там прямо покупают.
            • 0
              Для общераспространённых целей такой способ даёт не самые плохие результаты и позволяет съэкономить время и нервы.
              Отвечу простой фразой, чтобы купить что-то ненужное, надо продать что-то ненужное:) Самое вкусное с машиной начинается после ее покупки и если человек этого понимает, то голову на плечах никакой сервис не поможет:)
              • 0
                Тем не менее, способ прекрасно работает для 96% населения, а вот кроилово очень часто ведёт к попадалову.
      • 0
        В том-то и дело, что слишком много моделей. Нужен мне, к примеру, универсал с АКПП. Это в Москве можно просто взять конкретную модель и выбирать из сотен вариантов. В городах с меньшим рынком это уже не пройдет: единицы предложений, из которых большинство отсеиваются по фото и описанию, остальные — по звонку. Если бы можно было рассмотреть все модели, соответствующие критериям отбора, выбор был бы куда шире. Можно было бы также сравнить и медианные цены на определенные модели.
        • 0
          Именно поэтому есть возможность искать в области.
          • 0
            Я вот сегодня, только благодаря вашему сайту, узнал что у Ваз-а есть универсал с полным приводом и это не «Нива», а «Надежда».
            Но узнал я это только потому, что просто сидел минут 15-20 и игрался с настройками. Случайно выбрал ваз 2-чего-то там.
            И там раз, и «Надежда». :-( )

            Ещё раз, если возможно, сделайте пожалуйста выбор без указания конкретной модели. Ну или хотя бы конкретную модель но без указания модификации.
            К примеру просто MAZDA, или просто ВАЗ и пусть ищет во всех маздах левый руль, автомат, с фото, в такую вот цену.
            • 0
              Брать «уникальную» марку? Охххх
              1. Возможная проблема с з/ч
              2. Маленькая выборка. Из-за чего почти не понятно что будет ломаться чаще, какие проблемы у модели «с завода»,…
              3. В СЦ не всегда будут знать что именно у вас там сломалось по паре характерных вещей…
              Например знакомому на Калине (когда они только появились) поменяли стойки для начала, хотя виной была ослабевшая гайка на рулевом (как в 99й, причем знакомый долго был владельцем 99й, в СЦ уж тем более про гайку на рулевом знали, но о Калине такого сразу не подумали и начали с замены стоек…
              Да, ответ АСЦ «стучит, кажется стойки» — «ну как стойки развалятся _привозите_ поменяем...» (те не приезжайте, а привозите!!!!) Пришлось ехать в знакомый СЦ…
      • 0
        Воот! Именно так. Слишком много моделей. А денег кол-во ограниченное. Поэтому, считаю что сначала нужно посмотреть что
        ВООБЩЕ за эти деньги могу купить. И только потом смотреть, что из доступного на данный момент на рынке заслуживает внимание.
        Зачем зацикливаться на конкретной марке?

        Телефон я кстати именно так и выбираю. 8 ядер, 2 Гб, 16-32 гв, 2 симки FullHD и прочее.
        А дальше смотрю что попадает под данные характеристики. Читаю отзывы по моделям смотрю обзоры.
        Для меня главное технические характеристики и надежность, а какой это будет лейбл воощее без разницы. Хоть ZOPO! ;)

        Если для вас главное что-бы на телефоне было «яблочко», или гордая надпись «самсунгсамывсунг» то у нас разный подход к выбору. :)))
        • +1
          К сожалению я решал немного иную задачу. В моей постановке задачи я считал, что выбор производится из нескольких моделей, т.к. считал такую постановку оптимальной для меня. Ваша задача требует больше мощностей для обсчета, но вполне выполнима, я подумаю.
          • 0
            Дело ведь состоит в том, что для каждой модели авто, параметры (год, пробег и тд.) вносят разный вклад в формированием цены… поэтому осуществлять поиск просто по марке нет никакого смысла, если мы хотим найти выгодные (ниже рынка) предложения.
            • 0
              А если при анализе среди многих моделей выводить разницу не в рублях, а в процентах, просчитывая медиану для каждой модели отдельно?
              • 0
                Можно в цикле решать задачу для каждой модели с последующей общей сортировкой.
        • 0
          Я думаю, что подбор модели — задача не этого сервиса. Сначала дни и ночи чтений отзывов, форумов владельцев и видеообзоров, после чего определяется модель. А вот уже после этого — поиск выгодной цены для конкретной модели с помощью этого сервиса.
          • 0
            +1
          • 0
            Да, на данный момент этот сервис не может этого сделать. Но кто сказал что надо останавливаться на достигнутом? :)
            Я вот сразу предложил, исходя из реального опыта поиска авто, вариант развития сервиса.

            Поиск конкретной модели имеет смысл, когда у вас денег ЗАМЕТНО для того, что-бы купить именно эту машину.

            «Что толку зачитываться форумами по Лендроверу, если денег есть только на УАЗ?» (С)Знакомый.
            Случай из реальной жизни между прочим. Лендровер он потом всё таки купил, но это было заметно позже.

            У большинства, задача перемещаться из А в Б, за определённую сумму.
            • 0
              Ну так для этого разведочного анализа вполне подойдут автосайты в их чистом виде, ИМХО.
              • 0
                Ну да, ну да, зачем нам сервис что может это сделать за 5-10 секунд? Всегда лучше потратить значительно больше времени, на выполнение любой деятельности. :)

                Ладно давайте на этом остановися.

                Сервис замечательный! Я хочу что-бы он развивался и дальше. И предоставлял дополнительные возможности для людей!
        • 0
          Как и с телефонами цена цене рознь. Выставлять цену главным критерием при выборе модели автомобиля, означает сразу же огромный риск купить проблемный автомобиль, который не будет отвечать вашим потребностям и финансовым возможностям. Если вы больше ничего не знаете об обслуживании и ремонте автомобиля кроме замены масла через столько то тысяч километров, то вы попадаете в категорию обманываемых покупателей. Поэтому прежде чем-то что-то покупать почитайте отзывы, определите ваши требования к размеру, расходу, типу коробки, типу топлива, доступности на рынке, уже это существенно сузит выбор моделей из сотен до нескольких десятков.
          • 0
            Именно так. Потребности и финансовые возможности. Считаю что для большинства людей главным критерием является цена. Хотя если вы не стеснены в средствах, то вы можете выбрать что хотите.

            Если у вас в кармане 50 т.р. то Форд Фокус вам всё равно не светит. Ваш выбор российский автопром. Если у вас есть 500 т.р. то на новый Кашкай можно только полюбопытствовать в салоне.

            Поэтому становимся реалистами, отсекаем всё что выше бюджета и начинаем смотреть, а что же я за свои кровные вообще могу купит?
            • 0
              Чтобы купить что-то ненужное, нужно продать что-то ненужное. Авто мало купить, его содержать надо, особенно когда денег нет. Если человек идет покупать машину на рынок, зная только руль тут, 4 колеса там, то никакой сервис ему не поможет, только чудо и чудеса мы не будем рассматривать. А вот если у человека есть голова на плечах и желание потратить свои небольшие деньги с пользой, то такому человеку прямая дорога к отзывам и думам, что ему брать да покупать. Это богатые люди могут позволить покупать себе кучу ненужного в поисках нужного, те кто победнее должны быть поумнее что ли.
              • 0
                Это богатые люди могут позволить покупать себе кучу ненужного в поисках нужного, те кто победнее должны быть поумнее что ли.

                Ну! Наконец то! :) Вы меня поняли. Может это я конечно плохо раньше объяснял. :(
                Главное, для обычного человека, в покупке это цена! Вон у человека вверху, 2КК бюджет на покупку б/у машины. Да он может в 95% рынка копаться! И даже из за рубежа заказать авто. Завидно.

                Хотя… Сам я сделал всё наоборот. :))) Купил блин эксклюзив. Одна машина в городе. Даже ДПС-ники тормозили с вопросом, что это такое? И отдал дорого. Ну для её года и состояния.

                Главное на тот момент было, что она мне понравилась! :) И сейчас нравится. :)

                Нашёл я её именно таким способом. Отсёк все что сверху и начал просматривать всё подряд. На этом сервисе, я бы её не нашел. :(
                • 0
                  У Вас своеобразный подход к выбору авто, у подавляющего числа людей подход более взвешанный и рассудительный.

                  Главное на тот момент было, что она мне понравилась!
                  • 0
                    Я был взвешен и рассудителен. :) Выставил верхнюю планку, пересмотрел что было на рынке. В доступную мне цену.
                    Прочитал массу отзывов, зарегистрировался на десятках форумов. Пообщался живьём с автовладельцами.

                    Пересмотрел эннное количество машин. Как у хозяев так и у перекупов. Было один раз забавно. Я жду фольксваген поло, а приезжает что-то японское. И перекуп такой: «Что же ты не сказал что поло хотел?» Я: «В объявлении был фольксваген поло и номер телефона, откуда мне знать что вы ещё что-то продаёте?» :)

                    Потом увидел её…
                    Посмотрел, почитал, и как взрослый и ответственный человек купил то, что мне понравилось больше всего.
                    Хотя до сих пор, несколько жалею что переплатил…
                • 0
                  >Хотя… Сам я сделал всё наоборот. :))) Купил блин эксклюзив. Одна машина в городе. Даже ДПС-ники тормозили с вопросом, что это такое? И отдал дорого. Ну для её года и состояния.

                  У знакомого такая… штуки 2 на город-миллионник.
                  При первой же серьезной поломке местный АСЦ известной марки сказал что не знают что у него сломалось, везите в Москву…
                  А у нас эту модель никто не знает как чинить…
                  Плюс вечная проблема с з/ч — все под заказ…
  • 0
    Я когда-то занимался тем же самым — выбором авто с чисто математическим подходом.
    Но я, ограничившись глобально производителями, выбирал среди 7 моделей по 9 по-моему критериям: цена, габариты (полезный объем), стоимость содержания, проходимость, внешний вид, тип трансмиссии, клиренс, ликвидность на рынке… что-то там еще.
    Но использовал матричный алгоритм "помощи принятия решения", субьективно выбирая для каждой модели авто цифровые значения критериев, сравнивая модели друг с другом, по собственным ощущениям, отзывам знакомых и инфе в Сети. 6-7 итераций исправлений — и была более-менее понятна картина… но.
    Но как обычно — во всех моделях был компромисс, выбор одной из них все равно был непростым и я решил добавить модель, которая выбивалась из бюджета на +100 тыс. руб. на тот момент (к 600) — и баланс критериев сразу поменялся в пользу добавленной дорогой модели.

    О покупке после такого расчета, хоть и с дополнительным займом денег, — до сих пор не жалею, и сейчас бы сделал тот же выбор, если бы пришлось покупать авто снова :-)
    • 0
      достаточно субъективный анализ у Вас получился.
      • 0
        Да, но выбор уже изначально был ограничен моделями, и нужно было только принять решение, какой вариант больше мне лично подходит: чтобы и жаба не задушила, и на рыбалку по бездорожью среднему добраться, и семью возить со скарбом, и климат контроля бы ну и прочее. И результат расчета — полностью оправдался, чем и радует уже 3 года.
  • 0
    Как раз занялся изучение ML, поэтому было интересна ваша статья.
    Но, скажу прямо, выводы оставляют вопросы. Я взял график и растянул его по вертикали, чтобы масштаб по осям получился примерно одинаковый.

    image

    Вот здесь видится очень четкая линейная регрессия с параметром k чуть меньше 1, r не считал. Пересечение с осью абсцисс в точке 1 200 000. То есть вывод, с поправкой на то, что дорогие мешины дешевеют сильнее,

    ваша выгода равна тому, насколько машина дешевле средней машины.

    Но в данных есть одна проблема. Есть один очень важный скрытый параметр, назовем его ჰ-коэффицифиент, который отвечает за завышение цены перекупами. В случае с новыми машинами он равен 1, но для б/у до обследования машины узнать его невозможно. И по факту, это самый главный фактор влияющий на выгоду.
    если бы ML-алгоритами можно было его как-то оценить сверху, то это был бы супер-сервис. Всех остальных он бы в момент вынес с рынка.
    • 0
      Конечно, как Вы верно заметили, линейная регрессия не лишена проблем, о которых я прямо в статье и пишу.

      Хотелось бы обратить внимание, что коэффициенты линейной модели формируются по измерениям с исключенными выбросами, для уменьшения ошибки предиктивного анализа, в то время как, предсказываем цену мы для всех предложений на рынке, что несомненно увеличивает вероятность ошибки предсказания цены для выбросов (например, как в нашем случае, в выбросы могут попасть все машины с кузовом универсал, вследствие чего, поправка, которую должна вносит соответствующая индикаторная переменная, не учитывается), что является недостатком выбранной модели. Конечно, можно не предсказывать цену для предложений сильно отличающихся от общей выборки, но высока вероятность того, что среди них как раз и есть самые выгодные предложения.


      Существуют еще робастные методы, устойчивые к выбросам, например робастная регрессия Хубера, существует алгоритм основанный на деревьях решений (random forest), метод главных компонент, лассо регрессия, ридж регрессия и тд… сравнение которых я проведу в следующей статье.
      • 0
        А ваш коэффициент ჰ — это мера влияния конкретного измерения на коэффициенты модели ( т.е. на выгоду). Посмотрите раздел «Диагностика модели», там про выбросы и меры влияния измерений довольно подробно рассказано.
      • 0
        Вопрос немного не в этом. Универсал, Короба, Зимняя резина и прочее — это все видимые факторы. Вы их можете заложить в многомерную линейную регрессию и потом понижать размерность.
        Я говорю именно про оценивание выбросов — как понять, что выброс хороший? и как понять, что он плохой? По идее вся статистика — это борьба с выбросами. Как научиться их исключать и работать только с данными, хорошо укладывающимися в модель.
        Если смотреть по графику, то там выбросов практически не будет. Интересно посчитать по любому критерию, хоть Стьюденту, хоть χ2. Мне кажется, там почти ничего не отбросится.
        • 0
          см. раздел «Диагностика модели». Выбросы есть — 18 штук, хороший/плохой выброс определяется мерами влияния, которые в свою очередь бывают общие и специфические.

          Вот вы пишите:

          Интересно посчитать по любому критерию, хоть Стьюденту, хоть χ2. Мне кажется, там почти ничего не отбросится.


          А вот цитата из статьи:

          Итого, выбранный нами путь идентификации выбросов позволил исключить из общий выборки 18 наблюдений, что несомненно положительно скажется на точности определения коэффициентов линейной модели с помощью МНК.
          • 0
            Пардон, этот фрагмент я упустил. В любом случае предположение подтверждается — выбросов не очень много. Остальное отлично укладывается в модель.
    • 0
      Отличная идея в магазине на ценнике указывать себестоимость и накрутку перекупов вместо обычной розничной цены. Только кто на это пойдёт? )
      • 0
        Просто нужно сравнить и выбрать другой магазин)
      • +1
        Конечно, магазин это не будет указывать.
        Но, если собрать цены из разных магазинов в одном месте — то туда будут ходить и смотреть.
  • 0
    Удалено
  • 0
    1. Есть расширение хром, позволяющее понять, перекуп продавец или нет, и как давно перевыставляется конкретное объявление (чем дольше перевыставляется объява, тем хуже конкретно это авто продается, и скорее всего, этот экземпляр в плохом состоянии).
    Так что можете добавить как критерий оценки в ваш интересный сервис.

    2. Можно предоставить продвинутому пользователю самому решать «вес» того или иного критерия. Кому-то может быть более важен тип двигателя, например, чем возраст машины. И многим не так важен пробег (т.к. в 50% случаев он скручен), но очень важен год.
    • 0
      1)насчет определения перекупов — я подумаю как прикрутить к сайту, идея хорошая.
      А вот насчет авто которые долго продаются — не согласен что они обязательно в плохом состоянии… есть такой понятия неликвид — и для каждого человека свой неликвид.

      2) ничего хорошего из этого не получится на мой взгляд.

      Спасибо за советы!
    • 0
      2. имхо тут лучше собирать обратную связь и учить по ней модель.
    • 0
      Нашёл его же для FF. Судя по ссылке на сайт — последние 5 объявлений выдаёт бесплатно. У меня показывает только на avito.ru и drom.ru…
      Как-то не думал, что помимо av100.ru если другие сервисы. Кто ещё не знает, для Москвы и МО по VIN можно историю авто узнать.
      • 0
        Жалко что для авто.ру не показывает. Кстати, спасибо что напомнили, в статье не написал, что для проверенных автокодом машин показывается пиктограмма (галочка на зеленом фоне).
        • 0
          У меня на авто.ру работает тоже
          • 0
            Интересно. А какой у вас браузер?
      • 0
        Я использовал временный тел. номер за 2-10 рублей для повторной регистрации (например sms-activate) на этих сервисах.
  • 0
    Хотел уточнить несколько моментов, касающихся линейной модели
    1. какой получился уточненный коэффициент детерминации модели (Adjusted R-squared)?
    2. все указанные коэффициенты модели статистически значимы?
    Спасибо
    • 0
      1. Adjusted R-squared: 0.5484
      2. Да
  • 0
    А на каком язые вы писали ваш сервис? кстати круто сделан
    • 0
      php + R (Rserve)
  • +2
    Спасибо за классную тему, приложение и теорему Гаусса-Маркова.

    Хотел бы указать на пару неточностей.

    Данные стоит масштабировать. Тогда коэффициенты модели можно интерпретировать. Свободный член — как средний прогноз (в Вашей модели минус 1.76e+08 — бессмысленно, а с масштабированными переменными — 1201687, то есть прогноз для «средней» машины), а остальные коэффициенты — как значимость переменных. По коэффициентам Вашей модели не видно, например, что признак «mileage» — второй/третий по значимости. А при масштабировании так и получается (простая регрессия year: 73182, engine.power: 55295, mileage: -50211, Lasso, Ridge, случайный лес схожие результаты дают).
    Влияние 3 главных признаков на цену в картинках:




    И в формуле RMSE у Вас ошибка — число измерений надо бы под корень внести, и тогда все-таки около 120 тыс. руб. в среднем ошибка прогноза.

    Кстати, если интересно посравнивать модели, предлагаю сеять random seed для полной воспроизводимости.
    • 0
      Спасибо за грамотные замечания!
      1) В расчете среднеквадратичного отклонения действительно опечатка, поправил!
      2) Что касается масштабирования данных, то не делал этого осознанно, т.к. при работе приложения это дополнительная нагрузка, а само по себе соотношение величин коэффициентов линейной модели друг к другу не столь интересно ввиду того, что кардинально отличается даже для разных моделей, не говоря уж о других характеристиках. Я отталкивался от того, что интерес несет именно дельта между ценой в объявлении и предсказанной ценой (выгода). Хотя безусловно с точки зрения удобства интерпретации — Вы правы.
      3) Что же касается свободного члена линейной модели- то на мой взгляд это не «средняя» машина, т.к. машина «в среднем» имеет какой-то пробег, возраст и двигатель с некоторыми характеристиками, а некая «новая машина находящаяся на заводе и еще без двигателя».
      4) Что касается методов, то упомянутые Вами ридж, лассо регрессии и рандом форест — это далеко не все, есть еще, например, робастные методы, медианная регрессия, метод главных компонент и т.д… которые будут рассмотрены с следующей статье… и забегая вперед, скажу Вам, что при близкой точности (RMSE) линейной регрессии и того же случайного леса, есть веские причины для однозначно выбора одного из них.
  • 0
    Мне не приходилось разрабатывать сервисы, в которых надо каждый чих оптимизировать. Но, по «академическим» оценкам, масштабирование — это очень простая операция. Один раз для всей выборки посчитать mean и std по столбцам (O(n+m)), потом для каждого объекта вычесть и поделить (O(m)). При имеющейся выборке это миллисекунды. Но не знаю, может, даже это сказывается.

    >>> Я отталкивался от того, что интерес несет именно дельта между ценой в объявлении и предсказанной ценой (выгода) <<
    Прогноз остается тот же и при масштабированных признаках.

    Насчет свободного члена. Все-таки при масштабированных признаках это будет именно «средняя» машина, для которой значение каждого признака равно среднему по этому признаку (x_i — mean_i = 0). И прогноз цены в ~1.2 млн. руб. выглядит намного разумней, чем прогноз в минус 176 млн. руб для «нулевого» авто :)

    Да, у меня тоже обычный лассо лучше RF сработал. Но даже в тех случаях, когда RF лучше работает, понятно, какую модель выбирать, тут к гадалке не ходи :) Но рассказать об этом популярно стоит.
    Однако часто в тех случаях, когда нам суперскорости прогноза не нужны и RF работает лучше, все равно выбирают линейные модели из-за «статистической значимости». Мне это не очень понятно. Что лучше на кросс-валидации и holdout-выборке работает, то вроде и нужно выбирать. Интересно будет про это послушать. И если не лень, можно посмотреть еще, как Xgboost и Vowpal Wabbit справится. Хотя на такой маленькой выборке вряд ли будут существенные отличия.
    С Вашего позволения дам эти данные для анализа слушателям своего курса. Поанализируют, построят кучу картинок, много моделей сравнят, с помощью кривых обучения разберутся, как модели обобщаются и т.д. Вот пример проекта.
    • 0
      С Вашего позволения дам эти данные для анализа слушателям своего курса

      А что за курс? Онлайн/офлайн?
    • 0
      Мне тоже весьма странно когда выбирают линейные модели вместо rf, когда последний справляется лучше. Xgboost и Vowpal Wabbit тоже обязательно рассмотрю. А что касается выборки, то специально взял не большую, как наиболее приближенную к реальной жизненной ситуации.
      Да конечно, я не против чтобы Вы дали данные слушателям своего курса!
  • 0

    Не хотелось бы явно рекламой заниматься :) так что скажу, что этот курс упомянут в конце статьи с примером проекта, на которую я сослался выше.

  • 0
    В таких местах социальная инженерия рулит. Меня просто познакомили с «жучком» с автобазара, я ему описал примерные параметры и цену. Через неделю он завернул продавца просто на въезде в автобазар, мне машина досталась на 30% дешевле среднерыночной стоимости (учитывая оплату услуг посредника). Да, лоторея, но всегда есть люди, лучше тебя разбирающиеся в предметном вопросе.
  • 0
    Было бы круто если бы Вы прикрутили базы соседних стран, например Беларуси — ab.onliner.by

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