Пользователь
0,0
рейтинг
31 июля 2012 в 06:31

Разработка → Как я покупал квартиру

Я хотел написать статью про линейную регрессию, но потом подумал, да ну её, лучше куплю квартиру. И пошёл искать, что предлагают. А предлагают, как оказалось, много чего. В подходящий мне ценовой диапозон попало больше 500 квартир. И что, мне теперь все это просматривать? Ну нееет, программист я в конце концов или не программист. Надо это дело как-то автоматизировать.

Сбор данных


Прежде чем что-то решать, было бы неплохо взглянуть на общую картину, увидеть некую выжимку из данных. А для этого данные нужно сначала собрать. Меня интересовали квартиры в Минске до $60k (надеюсь, москвичи не подавились слюной, узнав, что за такие деньги реально купить квартиру?). Google сразу выдал несколько сайтов о недвижимости, среди которых наибольшее количество нужных мне настроек поиска оказалось на irr.by. Дизайн у него, конечно, не фонтан, но и я не девочка блондинка, чтобы выбирать сайт недвижимости по цвету. Да и данные в виде HTML-страниц меня в любом случае не устраивали.

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

  • цена (далее — переменная price)
  • возраст (age)
  • расстояние до метро (dist_to_subway)
  • этаж (storey) и этажность дома (storey_no)
  • наличие балкона или лоджии (balcony)
  • общая (total_space) и жилая площадь (living_space), а также площадь кухни (kitchen_space)
  • количество раздельных комнат (room_no)
  • тип санузла (restroom_com для общего, restroom_sep для раздельного)


Единственное, что вызвало вопросы, — это расстояние до метро. Сайты недвижимости обычно не предоставляют такой информации. Есть только название улицы, номер дома и ближайшая станция, а вот сколько до неё идти — об этом ни слова. К счастью, оказалось, что проблема определения координат по адресу не нова, и называется соответсвующий процесс не иначе как геокодирование, а Корпорация Бабла даже предоставляет бесплатный сервис для этого доброго дела. После получаса программирования с перерывом на кофе и печеньки модуль определения расстояния до метро по адресу был готов. (Следует отметить, что результаты оказались весьма точными — из примерно 50 проверенных адресов только 2 указали на улицу, но не на дом; остальные же были полностью корректны. Также стоит обратить внимание на то, что сервис лучше не DDOS-ить — если не делать небольшие перерывы между запросами, могут возникать ошибки.)

Поскольку продавцы далеко не всегда тщательно и аккуратно заполняют поля для описания квартиры, данные были неполны. По-хорошему, незаполненные поля нужно было отмечать как NA (Not Available) и передавать их дальше в таком виде. Но дело было вечером, а делать ещё было чего, поэтому я решил пойти по упрощённой схеме и ещё на этапе сбора данных забивать значения по умолчанию. При отсутствии информации о годе постройки я забивал 1980 (соответственно, возраст — 32 года), расстояние до метро — 2000 метров, этаж — 4, этажность — 7. Очень просто и почти наугад. Количество комнат, площадь и цена были обязательными параметрами, и при их отсутствии квартира просто отбрасывалась (хотя в итоге ни одного случая отсутствия хотя бы одного из этих параметров выявлено не было).

Отдельно нужно рассказать про тип санузла. Предвидя числовые вычисления я понимал, что работать со значениями «общий/раздельный» гораздо сложней, чем с числами, поэтому пришлось завести 2 отдельные переменные, по одной на каждый тип. При этом если одна переменная была равна 1, то вторая обязательно равнялась 0. В статистике это называется фиктивными или индикаторными переменными.

Но хватит про туалеты, пора посмотреть на данные.

Первый взгляд на данные


Одним из самых популярных средств анализа данных является проект R. R представляет собой среду разработки и язык программирования с широкими возможностями для манипулирования и визуализации данных, а также статистического анализа и машинного обучения. Существует несколько сред разработки для удобного редактирования скриптов, таких как RStudio и плагин для Emacs, но для большинства задач достаточно обычной консоли. Всё это кроссплатформено и совершенно бесплатно, то есть даром. R несомненно заслуживает отдельной развёрнутой статьи, здесь же я ограничусь описанием тех функций и конструкций языка, которые непосредственно буду использовать.

Парсер объявлений, который я описывал выше, сохранял полученные данные в виде CSV файла на диске. Чтобы загрузить его в R достаточно вызвать следующую функцию:

  > dat <- read.csv("/path/to/dataset.csv")

Первое, что бросается в глаза, это необычный оператор присваивания `<-`. Вместо него можно использовать и привычный символ `=`, однако это не приветствуется. Кроме того, стрелочный оператор может быть и инвертирован, т.е. предыдущую строку можно было эквивалетно переписать как:

  > read.csv("/path/to/dataset.csv") -> dat

Объект dat (имя «data» уже используется для функции загрузки встроенных наборов данных) имеет тип `data.frame`. Пусть вас не смущает точка в имени типа — в R точки являются абсолютно легальной частью идентификатора, как, например, `_` в C или `-` в Lisp (имена с точкой часто встречаются в старом коде, сейчас, по крайней мере для функций, их стараются не использовать из-за введения систем объектно-ориентированного программирования, интерпретирующих точки по своему). Фрейм данных напоминает собой таблицу в реляционных БД: колонки могут иметь разные типы, а доступ к ним можно осуществлять как по индексу, так и по имени колонки. Например, чтобы получить все данные из колонки price (6-ой по счёту) достаточно написать:

  > dat[6]  

или

  > dat["price"]       # есть также специальный синтаксис - dat$price

Синтаксис доступа к отдельным элементам фрейма данных похож на синтаксис доступа к элементам матрицы в традиционных языках программирования:

  > dat[3, 6]          # 3 запись из 6 колонки

Однако есть и несколько нестандартных функций:

  > dat[1:10, 1:6]     # подфрейм, образованный из первых 10 строк и первых 6 колонок
  > dat[1:10, c(3, 5)] # первые 10 строк и колонки 3 и 5 
  > dat[, 6]           # все строки 6-й колонки (аналогично dat[6])
  > dat[, -6]          # все строки всех колонок, кроме 6
  > dat[,]             # все строки всех колонок (аналогично dat)

Как я уже говорил, R предоставляет прекрасные средства визуализации данных. Одним из них является функция plot(). Эта функция полиморфна и может быть использована для объектов разных типов, но в простейшем случае она принимает просто 2 вектора (или любых типа, которые можно привести к вектору) одинаковой длины и отображает их точечную диаграму (scatter plot). Больше информации о функции plot() можно получить, напечатав в консоли R следующее:

  > ?plot

Для начала меня интересовало, на сколько комнат я могу рассчитывать за такие деньги. Следующая команда отображает точечную диаграмму зависимости цены от количества комнат:

  > plot(dat$room_no, dat$price)

Результат:

Ого! Есть 3-хкомнатные и даже 4-хкомнатные квартиры! Но всё не может быть так просто. Обычно на цену сильно влияет расстояние до метро. Посмотрим на значение переменной dist_to_subway для этих квартир:

  > dat[dat$room_no == 4, ]$dist_to_subway
   [1] 2000.000 2000.000 2000.000 2000.000 4305.613

В первой строке мы вначале фильтруем данные, оставляя только квартиры с 4 комнатами (`dat[dat$room_no == 4, ]`), а затем бёрем значения интересующего нас атрибута (`$dist_to_subway`). Во второй строке — результат в виде вектора. Как можно видеть, все квартиры имеют либо значение по умолчанию (2000 метров), либо больше. В любом случае это значит, что топать до метро придётся долго. Возможно, кого-то это устраивает, но не меня. С трёхкомнатными та же ситуация. А вот среди двухкомнатных оказалось много квартир со вполне приемлимым расстоянием до метро. На них я и решил остановиться, выбросив из данных 1-, 3- и 4-хкомнатные, а также отбросив колонки с количеством комнат (оно у нас фиксировано) и с URL страницы с описанием квартиры (для вычислений он нам ни к чему). Также, как оказалось, все из отфильтрованных квартир имеют раздельный санузел, а значит колонки restroom_sep и restroom_com для всех записей одинаковы, а значит брать их в расчёт также нет смысла.

  > dat2 <- dat[dat$room_no == 2, -с(7, 8, 9, 13)]

На этом этапе мы уже можем чётко сформулировать задачу: выделить из всего набора квартир те, которые имеют наилучшее соотношение цена/качество.

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

  > cor(dat2)
                       age     balcony dist_to_subway kitchen_space living_space
 age             1.0000000  0.23339483     0.23677636   -0.30167358  -0.18938523
 balcony         0.2333948  1.00000000    -0.06881481    0.05694279  -0.03505876
 dist_to_subway  0.2367764 -0.06881481     1.00000000    0.22700865  -0.21201038
 kitchen_space  -0.3016736  0.05694279     0.22700865    1.00000000   0.10018058
 living_space   -0.1893852 -0.03505876    -0.21201038    0.10018058   1.00000000
 price          -0.2246434  0.18848129    -0.11713353    0.35152990   0.22979332
 storey         -0.1740015  0.12504337    -0.03107719    0.22760853   0.09702503
 storey_no      -0.4683041 -0.28689325    -0.15872038    0.10098619   0.02122686
 total_space    -0.3732784  0.02748897     0.03466465    0.62723545   0.61874577
                     price      storey   storey_no total_space
 age            -0.2246434 -0.17400151 -0.46830412 -0.37327839
 balcony         0.1884813  0.12504337 -0.28689325  0.02748897
 dist_to_subway -0.1171335 -0.03107719 -0.15872038  0.03466465
 kitchen_space   0.3515299  0.22760853  0.10098619  0.62723545
 living_space    0.2297933  0.09702503  0.02122686  0.61874577
 price           1.0000000  0.35325897  0.24603010  0.51735302
 storey          0.3532590  1.00000000  0.26811766  0.18082811
 storey_no       0.2460301  0.26811766  1.00000000  0.14940533
 total_space     0.5173530  0.18082811  0.14940533  1.00000000


Как видно из матрицы, большая корреляция (> 0.6) наблюдается только между общей и жилой площадью, а также между общей площадью и площадью кухни. Это позволяет нам пренебречь ещё 2-мя атрибутами — living_space и kitchen_space — положившись на total_space.

Визуализация зависимостей


Здравый смысл подсказывает, что цена линейно зависит от общей площади. До формального определения линейной зависимости мы ещё дойдём, сейчас же ограничимся визуальным аспектом: если одна переменная (например, цена) линейно зависит от другой (например, площади квартиры), то на точечной диаграмме их зависимости должна просматриваться прямая линия. Ну что ж, проверим это предположение:

  > plot(dat2$dist_to_subway, dat2$price)



Да уж, с таким разбросом это больше похоже на облако. Тем не менее, если и проводить линию, отражающую зависимость, то она будет прямой, а не какой-нибудь параболой.

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

  > plot(dat2$dist_to_subway, dat2$price)



  > plot(dat2$age, dat2$price)



Как видно, если отбросить точки, соответсвующие значениям по умолчанию, то можно заметить вполне чёткую зависимость, однако эта зависимость обратная — чем больше расстояние до метро, тем меньше цена, и то же самое с возрастом дома.

Линейная модель


Основываясь на информации, полученной при визуализации данных, можно сделать вывод, что цена линейно зависит от параметров квартиры. Также можно выдвинуть гипотезу, что среднестатистическая цена квартиры с некоторым набором параметров является показателем её «хорошести». В этом случае мы можем вывести функцию зависимости качества квартиры от её параметров. А имея такую функцию, легко посчитать, какие из имеющихся на рынке квартир переоценены их хозяевами, а какие сильно недооценены. Именно последние нас и будут интересовать — ведь заплатить за товар меньше, чем он реально стоит, всегда приятней, чем наоборот.

Так всё-таки, что такое линейная зависимость? И почему она так называется? Чтобы понять это, вспомним школьный курс математики, а именно уравнение линии на плоскости:

                                              y = k * x + b


Знакомо? Думаю, да. Именно это уравнение и выражает линейную зависимость переменной y от переменной x, и именно его (хотя и с большим количеством «шума») мы видели на графиках зависимости цены от таких параметров как площадь, возраст и расстояние от метро. k здесь показывает угол наклона графика функции к оси X, а b — смещение по оси Y относительно начала координат.

А что, если у нас 2 свободные переменные? Тогда речь уже идёт об уравнении плоскости в пространстве:

                                      z = k1 * x + k2 * y + b


Если обобщить эту идею до n свободных переменных, то мы получим уравнение так называемой гиперплоскости в гиперпространстве:

                      h(X) = k0 + k1 * x1 + k2 * x2 + ... + kn * xn


Здесь x1..xn — это измерения гиперпространства, а h(X) — положение зависимой точки на гиперплоскости при заданных значениях переменных вектора X.

В случае нашего (уменьшенного) фрейма данных уравнение имеет вид:

      price = k0 + k1 * age + k2 * balcony + k3 * dist_to_subway + k4 * storey + k5 * storey_no + k6 * total_space

Ну что ж, осталось только найти коэффициенты k0..k6 и формула готова! Однако, как подобрать эти коэффициенты так, чтобы вычисленная цена наиболее точно соответствовала реальным данным? Здесь в ход и идёт линейная регрессия. Линейная регрессия пытается подобрать коэффициенты так, чтобы минимизировать квадрат разности между предсказанным значением зависимой переменной (цены, в нашем случае) и его реальным, известным из статистических данных. Более подробно про вычисление коэффициентов можно послушать по ссылкам в конце статьи, а здесь же я воспользуюсь средствами R, а именно функцией lm() (сокращение от Linear Model):

  > model <- lm(price ~ age + balcony + dist_to_subway + storey + storey_no + total_space, data = dat2)

Здесь символ ~ указывает на то, что мы передаём в функцию lm() аргумент типа «формула». Формула описывает общий вид уравнения, для которого мы хотим вычислить коэффициенты, в данном случае R понимает, что мы хотим получить уравнение, аналогичное указанному выше. Второй аргумент (в данном случае именованный) показывает, в каком фрейме данных искать указанные переменные (age, balcony, etc.). То же самое можно записать и короче:

  > model <- lm(price ~ ., data = dat2)

Здесь точка указывает, что левая часть уравнения зависит от всех переменных указанного фрейма данных (кроме как от себя сомой, разумеется).

Что же мы можем делать с построенной моделью? Ну, в первую очередь, мы можем посмотреть значения вычисленных коэффициентов:

  > coef(model)
     (Intercept)            age        balcony dist_to_subway         storey 
   21601.0057018     31.7479138   1981.3750585     -0.3962895    529.9350262 
       storey_no    total_space 
     594.3711746    523.7914531


(Intercept) соответсвует коэффициенту k0 и может быть интерпретирован как минимальная стоимость квартиры при всех параметрах равных нулю (сложно, конечно, представить квартиру площадью ноль квадратных метров, но идею, я думаю, вы поняли). Названия остальных коэффициентов говорят сами за себя. Коэффициент при переменной total_space показывает реальную стоимость квадратного метра (в отличие от той, которую обычно расчитывают риэлторы, не учитывающие коэффициента сдвига — intercept). Наличие балкона прибавляет квартире сразу 2 тысячи долларов, а вот расстояние до метро уменьшает стоимость на 40 центов с каждым метром. Единственный параметр, который вызывает сомнения, это возраст. По логике, чем старше квартира, тем дешевле она должна быть. Однако коэффициент при этой переменной положительный, хотя и не очень большой. Объяснений для такого феномена может быть несколько. Во-первых, как можно было видеть из графиков, разброс цен очень сильный, а это добавляет огромное количество шума. Во-вторых, способ сбора данных далеко не совершенен, а значит многие квартиры, которые мы пометили как 32-летние (значение по умолчанию) на самом деле могли быть гораздо старше. Ну и в-третьих, мы просто не учитываем множества других факторов, таких как проведение капитального ремонта в доме, который сильно поднимает цену и который мы вообще не брали в расчёт.

Однако наиболее важным для нас вариантом использования построенной модели является расчёт реальной стоимости квартиры. И в этом нам поможет полиморфная функция predict(), которая принимает на вход модель и фрейм данных, и возвращает вектор «предсказанных» значений зависимой переменной:

  > predicted.cost <- predict(model, dat2)

Ещё немного уличной магии для визуализации результата:

  > actual.price <- dat2$price         # сохраняем вектор цен в отдельную переменную для удобства 
  > plot(predicted.cost, actual.price) # предсказанная стоимость vs. цены из имеющихся данных
  > par(new=TRUE, col="red")           # параметры графика: рисовать на той же конве, использовать красный
  > dependency <- lm(predicted.cost, actual.price)  # ещё одна модель, на этот раз вспомогательная
  > abline(dependency)                 # отображаем вспомогательную модель в виде линии


Точки, оказавшиеся над красной линией — это переоценённые квартиры. Оказавшиемя под линией — недооценённые. Причём чем дальше от линии, тем более недооценены эти квартиры. Из графика видно, что есть довольно много квартир с ценой гораздо ниже предсказанной стоимости. Именно с них и следует начинать происк.

Можно даже пойти дальше и посчитать коэффициенты недооценённости квартир. Для этого достаточно разделить

  > sorted <- sort(predicted.cost / actual.price, decreasing = TRUE)
  > sorted[1:10]
       343      233       15      485      326       81      384      279 
  1.182516 1.154181 1.145964 1.144113 1.132918 1.132496 1.132098 1.129221 
       385      175 
  1.126982 1.115920

Как можно видеть, 343-я по счёту (в изначальном фрейме данных) квартира недооценена почти на 20% (а это около $10k, как никак), следующая за ней 233 — на 15% и т.д. Неплохая может получится экономия, не так ли?

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

Заключение



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

Оформление документов на новую квартиру уже началось. Пора бы задуматься о ремонте. Так, где у нас там сайт стройматериалов?..

Ссылки:

1. Исходники парсера. Для использования парсера достаточно скачать flatparser.jar (нажать на соотсветствующую ссылку, затем на View Raw) и запустить в соответствии с README.
2. Курс по машинному обучению на Coursera, где, в частности, подробно рассказывается про линейную регрессию.
@ffriend
карма
204,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • +36
    Занятно.
    Только вы упустили 3 важных ценообразующих момента:
    1. Состояние квартиры. За ремонт, да не «евро», обычно накидывают 2-3 процента.
    2. И значительно более существенный параметр — тип дома. То есть структура: монолит, кирпич, панельный, монолит-кирпич,… Причём разница между кирпичной двушкой и панельной может быть чуть ли не в полтора раза.
    3. Планировка.

    Особенно без второго параметра невозможно говорить об адекватности данных.
    Если честно, я бы к риэторам обратился, особенно в Минске, ибо что-то мне подсказывает что они не такие офигевшие как в Москве. В моем городе услуги риэлтора с юр. сопровождением сделки (предварительный договор + договор купли-продажи) в среднем 1-2 килобакса, в зависимости от стоимости квартиры.
    • +4
      Насчёт типа дома, честно говоря, не заметил сильной разницы. Возможно, просто не обратил внимания, возможно, это отражено в возрасте дома — у нас как-то типы домов сменялись волнами: какой вождь пришёл к власти, такие дома и строятся.

      В остальном согласен: как я и написал в заключении, подход довольно наивный и не учитывающий кучи факторов. Это скорее был proof-of-concept и средство автоматизации разбора данных — просто переходить со страницы на страницу, изучая все подряд предложения, это довольно таки утомительно :)

      В общем-то, оформляем как раз через агентство, хотя изначально агента нанимали продавцы. Обещают взять с нас вообще немного — меньше $500. А нанимать риэлтора именно для поиска квартиры не хотелось принципиально — ни один агент не будет знать, что мне действительно нужно. Да и я сам бы не понял, если бы не просмотрел достаточное количество предложений.
      • 0
        > Насчёт типа дома, честно говоря, не заметил сильной разницы.
        панель — монолит — монолиткирпич — кирпич.
        Каждый шаг это условно +10%.
        Ну да, связь с возрастом дома прямая, дома 20+ лет почти на 100% панельные.
        • –7
          А чем одно хуже другого? Имхо, стены и стены.
          • +2
            От вида стены зависит естественный микроклимат квартиры (например, как она нагревается от лучей солнца). Также нужно учесть риски при землетрясении, наводнении и т.д.
          • +1
            Считается, что панельки холодные. + различные сроки службы у домов.
          • +3
            А вы в этих разных стенах жили? :-) Если жили и разницы не ощущали — то я в шоке. :-) Панельки мало того, что холодные, так еще и сырые (на нижних этажах черная плесень на стенах внутри квартиры — вещь типичная, нужно заморачиваться на покрытие стен спец.составами и т.п.). Перепланировку там сделать нереально. Из-за своей бюджетной сущности потолки почти всегда низкие (до 2.7м и то 2.7 — редкость), а подъезды частенько обшарпанные и убогие. Слышимость соседей опять же…
            В общем, теоретически, квартиры нормальные могут быть, но слишком много «но»: изначально должна нравится планировка, этаж не низкий, дом новый (старые панельки это ж вообще ад!) и т.п. Но с такими условиями и ценник растет и уж лучше нормальную «сталинку» взять с ж-б перекрытиями и потолками 3м. :-)
            • 0
              О, вот со слышимостью актуально.
              • 0
                плюс ещё перекрытия (например в кирпичных «сталинках» — деревянные или железобетон) от них тоже сильно зависит слышимость, пожаробезопасность и долговечность. Ах да, ещё расположение окон по сторонам света. есть риск жить во мраке всю жизнь. айтишнику приятно, но семье не всегда.
                • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              А еще вай-фай плохо ловит даже за одной стеной, за двумя совсем гаснет сигнал, даже с модной beamforming технологией и двухчастотным передатчиком. И вместо дрели в хозяйстве приходится покупать перфоратор :) (благо они есть бюджетные).
              А вот насчет холода и планировок не согласен. С нормальными окнами зимой не холодно, даже наружная стена без всяких утеплений не сильно холодная.
              Планировка целиком и полностью зависит от поколения дома, хоть в панельках хоть в кирпичных домах были говенные планировки, чем старше тем хуже (довоенные это отдельная история).
              • +3
                вместо дрели лучше купить перфоратор в ЛЮБОМ доме.
                • 0
                  Как часто вам требовалось именно функция перфоратора?
                  Мне например всего пару раз, во всех остальных случаях стояла насадка для режима дрели.
                  • 0
                    если стены не из дерева, то перфоратором с вращением стены сверлятся легче и проще. и сдс+ мне больше нравится, чем патрон.
                    • 0
                      Да это так, мне тоже SDS+ по нраву, и сверлить стены быстрее с перфорацией.
                      Но стоит ли выйгрыш 10-20 секунд на отверстие своих денег, при условии того что эти отверстия будут делаться 1-2 раз в месяц?
                      Перфоратор, как правило, в 2-3 раза дороже дрели аналогичного уровня.
                      Я купил перфоратор с полгода назад, теперь думаю что вполне подошла бы и дрель.
                      • 0
                        Зависит какие у Вас стены. Имел удовольствие сверлить достаточное количество отверстий с помощью обычной дрели в панельном доме. Имитировал перфоратор круглым зубилом. То еще удовольствие.
                      • 0
                        я тоже купил перфоратор несколько месяцев назад, и думаю что зря покупал 3 дрели до этого. единсветнную живую дрель использую в качестве шуроповерта
                      • 0
                        «ВыЙграть» — peace death.
                        • 0
                          Вам сюда, глазам станет немного легче.
                  • +1
                    Ни разу не пожалел, что купил перфоратор. Именно в те редкие моменты, когда надо гардину подвесить к бетонному потолку или пару дырок сделать, я каждый раз жалею, что вначале купил дрель, а не перфоратор
                • +15
                  [Перфоратор]
                  +7 к бурению стен
                  -20 к репутации с фракцией «соседи»
                  • 0
                    только если к вам не ходят соседи «а ты не повесишь нам полку?»
                    • 0
                      на «повесить полку» очень неплохо идёт победитовое сверло-лопаточка «по кафелю».
                      Вдобавок к сверлу — обычный аккумуляторный шуруповёрт/дрель.
                      Отверстие получается быстро — и — главное — бесшумно для соседей.
                      • 0
                        это если стены монолитные. хотя мне жалко сверло.
                        а если стены из говна — сверлом удобнее
                  • +9
                    [Ударная дрель]
                    +3 к бурению стен
                    -130 к репутации с фракцией «соседи».

                    То что человек с перфоратором сделает за несколько секунд, человек с дрелью будет мусолить очень долго и слышно будет не хуже.
              • 0
                1) Ну, это не только у панелей… Если монолит не «столбами», а сплошняком — тоже самое будет… Арматура-с…
                2) И холод, и планировки от серии зависят — согласен. Новее — лучше. Собственно, меня самого в новых (несколько серий смотрел) планировки вполне устраивают, но только высота потолков — все равно 2.6м. :-( Мало мне, мало… Заколебало уже, что встаешь на цыпочки и трогаешь рукой потолок… О люстрах и не говорю — только плоские «блины» использовать остается… :-( Применительно к Москве, учитывая, что точечной застройки почти не осталось, а новые дома с нормальными потолками в основном черте где — остается только на сталинки и рассчитывать…
            • +1
              Бетон бетону рознь. Жил у родителей в бетонном военном доме типа «голубая мечта», слышно было соседей периодически, потом переехал в кирпичную хрущевку 1960 года — и по-настоящему был в шоке, от того, насколько сильная слышимость через несколько этажей, слава богу, ремонт с шумоизоляцией решает все подобные проблемы, а то от разговоров про путена по ночам было совсем не по себе
            • 0
              Надо заметить, что качество дома очень сильно зависит от качества постройки, а не от типа стен. Безусловно качественный кирпичный дом будет лучше панельного, но реальность такова, что хорошая панель может быть в разы лучше и теплее некачественной народной стройки из кирпича.
              Моя личная жизненная ситуация это подтверждает. В кирпичных домах, где я жил, зимой было холодно всегда, а вот сейчас живем в типовой панели, с батареями в стенах и намного теплее! А все потому, как отец говорит, у них в доме между кирпичами забыли утеплитель положить и там тупо воздух сейчас.
              Друг живет вообще в хрущовке, но кооперативной. Они дом утеплили, окна в подъездах пластиковые. Чисто и аккуратно, тепло.
          • +2
            Прочность, долговечность, шумоизоляция, морозостойкость, теплопроводность + приспособленность к «ремонту».
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            В Минске тоже такие вещи встречаются, но гораздо реже, поэтому на цену особо не влияют.

            Собственно, да, как я уже говорил в комментариях, этот метод — скорее фильтр, или алгоритм ранжирования, позволяющих сильно сократить количество ручной работы. Конечных ответов он не даёт. Причём не столько из-за таких факторов, как внутреннее состояние квартиры — его то теоретически ещё можно как-то вычленить — сколько из-за субъективности выбора. Может получится так, что вот эта большая квартира с фактором недооценённости 1.5 субъективно кажется жутко некомфортной, а вот та маленькая и немного переоценённая — то, что надо. И вот этот фактор уже учесть ну никак не получится.
          • 0
            Самое обидное, что такие вещи не часто пишут в объявлениях, но по опыту 8 из 10 «недооцененных» квартир имеют низкую цену как премию за риск. Поэтому описанный метод риски с документами оценивать не сможет.

            Этот уровень риска решён уже давным давно. Называется титульное страхование недвижимости.
            • НЛО прилетело и опубликовало эту надпись здесь
            • +1
              Это теория.
              Практика гораздо богаче. Страховая не захочет деньги отдавать.
              Все может закончиться все тем, что вы будете судиться со страховой пару лет.
      • 0
        Не знаю, не знаю. Как минчанин минчанину — выберите для себя район, где вам хотелось бы жить, и ищите на реалт.бай по базе данных в том районе и с сортировкой по цене, + во многих предложениях фото или же планы квартир. В Минске от места расположения зависит очень многое. А когда вы по десятку-другому домов проедете — то отсеете еще варианты с забитыми автомобилями детскими площадками и скученными панельными высотками, с вонючими мусорками под окном, отсутствием детских садов и школ поблизости или полным асфальтопокрытием территории. Мы выбирали квартиру именно так, начиная с места, в котором было бы приятно жить
    • –3
      в Москве тоже можно найти недорогого риэлтора за 1-1.5% от стоимости квартиры, за сопровождение сделки по однушке (подбор и проверка варианта, заключение сделки) отдадите 60-100 тысяч рублей.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          Это правда.
          Мне риэлторы «втюхивали» квартиру, у которой были очень серьезные проблемы с документами. И даже договорились со страховой, что она застрахует. К счастью, банк не пропустил. А то был очень серьзный риск остаться без денег и квартиры и долго-долго судиться.

          Теперь прикиньте: в этой сделке банк самая защищенная сторона. Потому что выгодоприобретателем по страховке является он. То есть чуть что — он свои деньги назад вернет. А вот что будут делать страховая, покупатель и продавец? И тем не менее банк не захотел рисковать.
          А теоретики рекомендуют «титульное страхование».
  • +31
    Не смотря на мелкие недочеты, статья просто супер. Никак не ожидал такого анализа когда заходил сюда видя лишь название топика.
    • +3
      Спасибо!
      • +47
        Вам спасибо!
        Такой подход сгодится как основа, например в системе оценки залогов, как оценка недвижимости…

        С нетерпением жду статью: Как я выбирал жену )
  • +7
    очень занимательно.
    2 момента:
    — для Москвы можете такое посчитать? Если да- то пора открывать бизнес.
    — не знаю как в Минске, но на сайтах обычно не учитываются приукрашивания, уменьшение расстояния до метро(ни раз не смог дойти так быстро как указано в объявлениях). Просто в данных есть погрешность и эта недооцененная квартира может оказать просто развалюхой или наоборот после подсчета, окажется что это квартира едва ли не в польше находится.
    • +6
      Делайте стартапец за несколько дней. И продавайте тому же яндексу с их сервисом Недвижимость за 15M$. Спасибо за классную статью.
      • +1
        Если серьёзно заморочаться, то нужно добавлять обработку естественного языка, сегментацию рынка квартир с построением отдельных моделей для каждого сегмента (хотя, возможно, достаточно будет алгоритма M5'), а также кучу логики. Это уже работы на несколько месяцев, а ещё бизнес часть продумывать и согласовывать. Так что я пока не спешу с монетизацией этого дела :)
        Спасибо за комментарий!
        • +4
          Если таки надумаешь серьёзно делать, то вполне можешь взорвать рынок недвижимости. Как в фильме «Человек который изменил всё». Блин всё ещё не могу уложить в голове недооценку квартиры на 20 килобаксов.
          • +21
            А вы сходите в эту квартиру, посмотрите.

            Вместо 5 минут от метро, она будет в 20. Вместо хорошего состояния, вы уведите, что разве что свиньи по квартире не бегают. Будет неузаконенная планировка, в собственниках квартиры будут несовершеннолетние дети, квартира покупалась менее трех лет назад по доверенности и продавать ее вам тоже будут по доверенности. Окна на помойку. Второй этаж, который написан в объявлении — это если считать с подвалом. Соседи — алкаши те еще, 3 раза за последние полгода сжигали свою квартиру. Ну и тд и тп
            • 0
              > в собственниках квартиры будут несовершеннолетние дети, квартира покупалась менее трех лет назад по доверенности и продавать ее вам тоже будут по доверенности

              Это всё ерунда, разруливается довольно легко.
              • +1
                И насколько легко разруливается? Если можно — пример.
                • 0
                  С несовершеннолетними собственниками единственное препятствие это органы опеки, но в моей практике практически всегда они удовлетворялись тем, что куплено или в процессе оформления новое жилье. Было пару случаев когда пришлось открывать счет в банке и разбивать сумму на 2 части — одну родителям, вторую — ребёнку.
                  Однако ни разу органы опеки не запретили продажу.
                  Насчет квартиры до 3х лет в собственности — есть такая практика, что указывают 1млн в качестве стоимости квартиры в договоре купли-продажи.
                  • +1
                    А, да, точно, про 1 млн — стоимость квартиры я совсем забыл. И это — далеко не разруливание
                    • +1
                      Простите, но что это за волшебный миллион?
                      • +1
                        Это размер налогового вычета. Т.е. при указании суммы до 1 млн. продавец не заплатит налогов. Если покупатель берет за нал и ему самому возврат НДФЛ не нужен — то по фиг. А вот если ипотека и хочется НДФЛ вернуть (таки мелочь, а приятно, а кому-то очень даже не мелочь — ту же мебель в квартиру купить...) — то уже сложнее…
                        • +9
                          + при в случае расторжения сделки, продавец вернет вам ваш миллион, который указан в договоре, а себе заберет квартиру. И не важно, что вы ее за 5 покупали, документально это не подтверждено.
                          • 0
                            Спасибо за оперативный ответ.
                          • +1
                            Расторгнуть сделку совсем не просто, особенно со стороны продавца.
                            Проблемы могут возникнуть в том случае, когда договор хочет расторгнуть покупатель. К примеру, выявились скрытые недостатки, а-ля за шкафом дыра в Нарнию :)
                            Но здесь уже собственно и нужно понимать свои риски как покупателя и уделять осмотру квартиры немало времени, и только убедившись что всё 100% ок — покупать её.
                            В общем не вижу особых проблем, кроме возможных траблов с налоговой.
                            • 0
                              Например, вылезли юридические проблемы — сделка может быть расторгнута.
                              Вот ситуация: хозяин квартиры развелся 10 лет назад, сейчас связи с женой нет (по его словам то она за рубежом, то на даче). Банк решил, что сделка очень рискованная и не пропустил. Даже несмотря на согласие страховой.
                              Потому что даже такое можно оспорить. Ну и что, что срок давности 3 года давно прошел. Есть такая вещь как восстановление срока давности.
                • 0
                  Самый лучший способ «разрулить» подобную ситуацию — никогда туда не звонить и не связываться с этим.
              • 0
                Может разруливается и легко для кого-то, но не факт что в этой ситуации это вообще разруливаемо.

                + столько нюансов, что я предпочитал не связываться и отсекал такие квартиры при звонке по объявлению
                • 0
                  Ну вообще нюансов при оформлении сделки очень много, и не только с проблемными квартирами.
                  Вполне стандартная ипотека может принести стока факапов что мама не горюй.
                  К примеру, ВТБ обязывает в договоре ипотеки указывать определенные слова.
                  То есть буквально в памятке пишут список keyword'ов.
                  Не зная этого и оформляя как обычно доки, вы просто будете отвергнуты банком.
                  Или, опять же по ипотеке, некоторые банки обязывают работать только с собственными «сертифицированными» оценщиками.
                  Сторонние эксперты опять же посылаются лесом, и офрмляется отказ в ипотеке.
                  • +5
                    Невыдача ипотеки — это максимум факапчик. А вот потеря квартиры в результате сомнительной покупки — это факап тот еще.
                    • 0
                      Как сказать.
                      То, что это просто факапчик — не соглашусь, ибо часто в предварительном договоре есть возможность пролонгации с единоразовым повышением стоимости.
                      То есть затянули с ипотекой -> предварительный срок договора истек -> пролонгация -> +50-100k к стоимости.
                      Конечно с потерей квартиры не сравнить, но 100к тоже немалые деньги.
                      • +1
                        Я брал в сбере. Там нет никакого предварительного договора. Заявка, решение о выдаче, 2 мес на поиск квартиры, подача документов на квартиру, проверка договор. Не успел за 2 мес, переходим к пункту заявка.
                        • +1
                          Предварительный договор между продавцом и покупателем.
                          Так сказать, договор о намерениях.
                          Закрепляется договор частенько задатком, а полная сумма отдаётся при заключении договора купли-продажи. Ну или обговаривается порядок расчета детально с долговыми расписками и т.д.
                          То есть workflow в агентстве недвижимости такой:
                          1. Заключается договор об оказании услуг м/ду риэлтором и клиентом.
                          2. Находится квартира мечты.
                          3. Предварительный договор м/ду продавцом и покупателем.
                          4. Подготовка доков/денег с обеих сторон.
                          5. Договор купли-продажи.

                          Предварительный договор нужен для того, чтобы не упустить квартиру, так как между окончательным решением о покупке конкретной квартиры и самой покупкой могут пройти 2-3 месяца.
                          Просто потому что: деньги будут через N дней, доки продавца (дети, пары, долги), выписка из квартиры продавца, 3хсторонние сделки (A покупает у B, B покупает у C), открытие счетов в банках, и прочее-прочее.
                          Поэтому дабы не ловить журавля в небе, продавец соглашается на обязательства продажи перед покупателем. Тем более он получает задаток, как гарантию покупки.
                          • 0
                            Ещё одна небольшая деталь, с которой как раз недавно столкнулся: если продавец решает соскочить и не продавать квартиру, когда предварительный договор уже заключён, то он обязан выплатить обратно и залог, и ещё такую же сумму. Так что продавец, получается, тоже связывается обязанностями.
                            • 0
                              Угу, в этом и смысл задатка.
                              Кто разрывает договор в одностороннем непредусмотренном порядке, теряет величину задатка.
                            • 0
                              Поэтому продавцы не любят задаток, а предпочитают залог, который просто возвращается без штрафа.
                            • 0
                              это не залог, это ЗАДАТОК, и это прописано в ГК РФ. Главное, правильно это оформить: вместо ЗАДАТКА могут написать АВАНС.
                              Так вот при отказе от продажи продаваец возвращает просто АВАНС и ничего больше не должен, а вот в случае ЗАДАТКА — его двойной размер.
                          • 0
                            Странно.
                            Обычно договаривались на проверку квартиры. Если квартира проверку не проходит — то продавец возвращает залог.
                      • 0
                        Что за предварительный договор?
                        • 0
                          Скорее всего договор о намерениях.
            • +1
              Ну так и никто не заставляет брать первую подходящую под критерии квартиру. Посмотрел, не подошла — следующая по списку.

              Ну и на этом этапе, было бы здорово добавить социальности, например, чтобы состояние квартиры мог уточнить покупатель. Можно просто отзывами, можно прямым изменением описания, но в этом случае нужна защита от недобросовестного пользователя.
    • +5
      — Всё упирается в методы сбора данных. Если покажете сайт, на котором для большинства квартир заполнены хотя бы основные поля, то я просто ради интереса дополню парсер. Но, как правило, сайты весьма демократичны в плане заполнения полей. А связываться с московскими риэлторами будет довольно проблематично :)
      — На самом деле проблема с расстоянием до метро элементарно решается с помощью того же геокодинга. Правда, тут ещё нужно учитывать расстояние до центра (в Москве и на метро до центра можно ехать довольно долго), а также другой транспорт.

      Любую недооценённую квартиру всё равно нужно проверять. Анализ данных в данном случае больше похож на поисковики: на первой странице находятся страницы с высоким рейтингом соответствия запросу, но ещё не факт, что эти страницы действительно релевантны, так что всё равно приходится походить по ссылкам, но уже по гораздо меньшему их количеству.
      • +5
        Даже если на сайте агенства все красиво расписано, то по факту выясниться что той самой квартиры уже нет, но у нас есть много других…
        • 0
          В таких случаях отчего-то думается, что изначально этой квартиры-конфетки и не было — а всё это делалось исключительно с целью привлечь внимание потенциального клиента.
      • 0
        ну вот например поиск по питеру — bn.ru
        • 0
          Спасибо, посмотрю, если подойдёт — накидаю парсер. Тем более, что Питер для меня тоже стратегически важный город.
    • +3
      Главная проблема всех сайтов о недвижимости — это не обработка данных и разные интеллектуальные поиски. Это самое простое.
      Проблема — риэлторы, которые создают информационный шум, приукрашивают свои объекты, подкоректируют все данные, рекламируют несуществующие объекты, лишь бы получить входящий звонок. Если вы решите эту проблему на московском рынке, то получите намного больше чем $15М.
  • +3
    Еще немного и стартап!
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Да, помогла: в итоге выбрал квартиру из первой двадцатки в отсортированном массиве коэффициентов недооценённости. Правда, я ещё добавил фильтр по районе при сборе данных.

        Ну не знаю, у нас как-то всё довольно честно получается. Хозяева ещё могут преврать (да и то по субъективным параметрам, типа законченности ремонта, но не по задокументированным, таким как площадь кухни), а агенты — вообще самые честные люди в мире :)
      • 0
        > После общения в маклерами у меня осталось впечатление, что прикоснулся к грязи.
        Вероятно вам просто не повезло, мне наоборот встречались только адекватные и честные риэлторы.
        А вот собственники бывают в полном неадеквате.
  • +2
    Прям «Человек, который изменил всё» =)
  • +1
    Хоть не отношусь, но предположу, что «москвичи не подАвились слюной» ;)
    • 0
      Таки надо поставить себе MS Office на виртуалку, чисто, чтобы проверять орфографию.
      Спасибо.
      • +2
        Зачем такие жертвы? Плугины проверки орфографии к популярным браузерам давно существуют. Например, спросите у гугла firefox russian check spell.
        • +6
          >Плугины
          Плагины они.
          plug — [plʌɡ]
          • +1
            мне показалось что те кто немецкий в школе учил — говорят плУгин
      • +5
        А лучше выучить правила русского языка. Виртуалку с собой не потаскаешь. Да и престижно — знать свой язык.
        • +2
          КО подсказывает, что в Белоруссии белорусский язык.
          • +7
            КО подсказывает что в Беларуси два госязыка: белорусский и русский.
          • 0
            На только своём языке мы бы не выплыли, маленькие слишком :) Так что приходится учить два.
        • +2
          Одно дело — знание правил, другое — чувство грамотности. При написании длинных текстов вы не будете для каждого слова вспоминать подходящее правило. Если забыли, как пишется, тогда да: вспомнили правило — написали грамотно. А если на слове вовремя не сконцентрироваться, то довольно просто пропустить ошибку.
  • 0
    А итог? Какую квартиру и с какими параметрами покупаете?
    • 0
      55k, 47кв.м. (хотя обычно за такие деньги предлагают не больше 40), 3 минуты до метро в зелёном районе. Минус — отсутствие кап ремонта (вроде в этом году должны сделать), но жить уже можно. Часть «недооценённости» идёт как раз из-за ремонта, однако это уже дело наживное, в отличие от места и количества квадратных метров.
  • 0
    Ждем похожую статью по приобретению автомобиля.
    • +1
      Аналогия, конечно, не совсем подходит, ибо при покупке автомобиля никогда не бывает больше 40-50 предложений, которые можно просмотреть вручную. Только единицы покупают автомибиль по принципу: «у меня есть 800.000 рублей, вот и буду смотреть все, что стоит от 100 рублей и до максимального лимита». Обычно человек имеет достаточно четкие представления о том, какая ему нужна марка, какой модельный ряд, какой нужен двигатель, какой год и какой цвет — все это отсекает 90% предложений.

      Но есть и общий момент, который называется «есть нюансы» и который, как уже сказали выше, ставит под сомнение адекватность входных данных и, следовательно, адекватность данных на выходе. И с машиной значительно легче напороться на «не бита, не крашена, ездила бабушка, в соседний магазин», т.к. большинсво людей просто не могут оценить состояние автомобиля — у меня таких историй мильен.
      • 0
        Толщинометр ЛКП — наш выбор!
        При первичном осмотре можно и не разбираясь совсем в автомобилях выявить возможные поврежденные и перекрашенные места.
        Ну а затем, отсеяв совсем уж врунов, заехать с владельцем на осмотр к знакомым механикам.
        • +1
          У каждого прям знакомые механики есть. Знаете, это ведь целая проблема: найти приличный сервис, причем близко к месту осмотра авто. А кто платит за осмотр? А если в сервисе скажут что авто убитый — кто будет платить за осмотр? А если переносить осмотр на другой день — тачку могут перекупить. И еще куча если.

          В общем, если сам не в состоянии корча выявить — покупай новый в салоне или бери опытного человека с собой.
          • –1
            Всё это решаемо. Если машина убитая — то продавец, если всё ок — то покупатель.
            Кто из продавцов не согласен — лесом.
            Брать опытного человека с собой не всегда вариант, так как очень многие проблемы не заметить с ходу, только в яме.
            • +1
              >> Кто из продавцов не согласен — лесом
              Вы видимо ни разу не продавали машину.
              • +1
                Ваша правда, не продавал.
                Только покупал.
          • +2
            О да!
            Вспоминаю веселую хохму.
            Хотел я как-то купить б/у авто. Нашел салон с интересным предложением, договорился, что можно будет проверить. Нашел сервис неподалеку от салона. Договорился с ними на проверку.
            Продавец клялся и божился, что «машин нэ бит нэ крашен», с абсолютно уверенным видом — мне даже захотелось ему поверить на слово. Но решил проверить. В сервисе сразу сказали: бито и в морду и в зад, причем сделано крайне криво — диагонали у машины кривые.
            Поговорил с ара-продавцом, мол как так. Он раскололся, что купил эту машину год назад себе за одну сумму, серьезно стукнул в аварии, подлатал и продает еще дороже. Нормально?

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

          В любом случае, если вернуться к изначальной теме, то идея слабо подходит для оценки предложений по автомобилям. Вот, например, взять задачу определить класс автомобиля за данные деньги (т.е., по аналогии, количество комнат в квартире) — на рынке будут представленны почти все классы, даже если это будет скромная сумма в 500.000 рублей. И на цену будет влиять только техсостояние и «чистота» доков, а не пробег (это вобще не характеристика для б/у автомобиля) или, скажем, наличие кожи в салоне («расстояние до метро»).
          • 0
            Толщинометр — это просто первичный фильтр, уменьшающий количество осмотров в гараже, ибо времени занимает полдня фактически.
          • 0
            >> Сейчас на рынке очень много хорошо сделаных машин, реально хорошо сделанных, поэтому еще нужно представлять, куда прикладывать прибор

            А все почему-то ищут не битый некрашеный и за 3 копейки. Ну не бывает такого. Более того, как бывалый автолюбитель, могу сказать что 90% машин старше 3 лет хоть раз да побывали в аварии. Пусть в мелкой, но побывали. Если уж ищите неновую машину, ищите хорошо сделанную а не «небитую, некрашенную». Конечно перевертыши и корчи брать не стоит. Но перекрашенное крыло или замененный бампер совсем не повод слать продавца лесом.
            • 0
              Дело не в том, что перекрашенное крыло или заменённый бампер, это, само по себе, конечно, не повод, повод — когда при этом говорят, что «не бита, не крашена».
              • 0
                Всегда есть отмазка про «предыдущего хозяина»
                • 0
                  Ну ПТС-то я же попрошу посмотреть, пусть даже копию.
                  • 0
                    Ну это если 1 хозяин у машины был, что встречается тем реже чем старше автомобиль.
                    • 0
                      Вообще, да, вы правы относительно возраста. Но я просто для себя не могу придумать причину покупки б/у автомобиля более чем с 1 хозяином :)
                      • 0
                        ну если машине более 5-10 лет ты высока вероятность что ее перепродавали несколько раз… и никто уже доподлинно не знает сколько хозяев у нее было =)
                        Если машины по всем критериям подходит то какая разница сколько у нее было хозяев?)
                        • 0
                          Каждый хозяин записывается в ПТС, посчитать н есложно.
                      • +1
                        А почему бы и нет? Если машина по всем критериям подходит? Моей первой машине было 11 лет и хозяевами весь ПТС исписан. Тем не менее самые теплые воспоминания. Хотя с первой машиной всегда так…
        • 0
          Почти половина новых машин на стоянках дилера уже подкрашены или проходили полировку. Их же на автовозе везут, при погрузке-разгрузке тоже возможны повреждения, да и на стоянке дилера тоже. 2 истории сходу про мэйджор: на 1 машину уронили башмак, который под колёса подкладывают, вторую задели углом копировального аппарата, который тащили из одного помещения в другое через стоянку.

          И, самое главное, если машина покрашена — это ещё не значит, что она была бита. Довольно часто красят морду из-за сколов. У одного знакомого на капоте 5 слоёв краски — перекрашивали из-за сколов, не могли попасть в цвет, за что он выносил им мозг и они перекрашивали. Это официалы, если что.
          • 0
            Знавал одного дядечку, который в собственном гараже, завешивая все тряпочками, красил так, что никто отличить от оригинала не мог.
            Официалы же не попадают в цвет постоянно. Есть подозрение что они тупо берут заводскую краску по номеру. А на машине она уже выгорела, и не совпадает.
      • 0
        Мне вот было достаточно неважно, какой марки машина, и уж тем более цвета, с достаточно широкими рамками по цене и возрасту, только с предпочтениями по некоторым параметрам. Дождался пока кто-нибудь хоть отдаленно знакомый будет продавать.
        Таким образом, мне многофакторный анализ автомобилей был бы интересен.
        • 0
          По моему опыту, таких людей очень и очень мало, буквально единицы. Обычно у человека есть более-менее четкие требования, зачастую список из нескольких наиболее приглянувшихся вариантов, ну или «пофигу какая, но чтобы под цвет сумочки и на автомате», но в этом случае редко смотрят на остальные параметры.
  • +1
    Мне кажется если доработать данную программу, то можно сделать хороший B2B проект для агентств недвижимости. Надеюсь вами заинтересуются нужные люди и вы сделаете свое дело.
    • 0
      они я думаю «на глазок» определяют недооцененность.
      хотя для начинающих риэлтеров (коих в Москве множество, если не большинство) могло бы быть действительно полезно и наглядно.
      Вообще, сама идея же проста и лежит на поверхности — может, у всех кому по делу надо, такие штуки уже есть :)
  • –2
    Я надеюсь, что вы выберите квартиру душой и не будите об этом жалеть, хоть она и не вошла в топ 10 вашей умной программы.
    • +8
      У меня друг выбирал квартиру с девушкой- брали с собой кота в заходили в кваритру. Он там убегать пытался, фырчал, нервничал. В итоге выбрали квартиру в которой их кот чувствовал себя хорошо. И живут радуются.
      • +3
        Ну это суеверие. Он мог например чувствовать себя хорошо где есть мыши или крысы. Кот им тут никак не помог.
        • +10
          Главное — чтобы коту было хорошо ;)
      • +28
        Вот так 5 рублей на пузырёк валерьянки и знание народных суеверий помогли продавцу сбагрить квартирку.
      • +9
        Так, коту квартиру купили, можно теперь и себе поискать…
    • +2
      Душой вы не просмотрите 500 объявлений :) Тут суть в том, чтобы уменьшить количество вариантов для рассмотрения до разумных, чтобы можно было спокойно походить и выбрать из достойных вариантов, а не проверять всё подряд и в итоге выбрать наугад.
  • 0
    Так и не понял, как вы разруливали ситуацию, что 95% объявлений на сайтах — булшит от агентств?
    • 0
      • +1
        Эх. В Мск/СПб не прокатит. Тот же bn.ru засран агентами до неузнаваемости в разных ценовых категориях. Сортируй, не сортируй — всё едино.
        • 0
          можно попробовать отбрасывать объявления по сильной корелляции с другими объявлениями, семантической или фактической.
          В общем, научить парсер отделять булшит от интересного.
          Я вот не покупал квартиру, но когда хочешь снять — хорошие объявления как раз обычно от агентств, иногда их много на одну и ту же квартиру, и это еще не значит, что она плохая.
          Но с арендой часто другая задача: как можно ближе к работе, это обычно сводит количество рассматриваемых квартир до минимального.
  • НЛО прилетело и опубликовало эту надпись здесь
  • –10
    Баян! И это ещё игрушечки. Я также выбирал лучший ноутбук, и параметров там было не какая-то дюжина, а порядка 60, и парсил я целый сайт магазина, и решал в N раундов M СЛАУ, и усреднял целые 11 мегабайт коэффициентов, и получал таблицу из порядка 500 ноутбуков со всеми соотношениями цена-качество и прочее. Жаль, времени нет об этом писать тут.
    • +4
      Вы наверно будете думать, что вас заминусовали потому что не оценили, но я вам сразу скажу — это не так. Вас заминусовали потому что вы написали глупые, бесполезные понты.
  • +1
    Отличная статья, очень понравилось. Есть несколько мыслей, которые хотелось бы упомянуть.
    Недавно вышла книжка как раз на эту тему — amzn.com/1449315151 Та же идея, о которой вы пишите — применение стат анализа и machine learning для сравнительно небольших, бытовых задач.
    Когда я брал квартиру лет 8 назад, самым актуальным ресурсом был nb.by/realty/proposal/ Сейчас чуть меньше табличных данных дают, но все же должно быть более удобно чем irr. Чем мотивировались выбирая источник, и почему не объединяли данные из разных для большей выборки?
    Уверен, что риэлторы тоже используют некую методику для рассчета адекватности цены, не только «средний метр умножить на общую площадь». Интерсно услышать от кого-то знающего, что и как.
    В Штатах есть несколько авторитетных ресурсов, которые не только собирают данные об актуальных продажах квартир и прочей недвижимости, но и проводят оценку, выдают ориентировочную оценку текущей стоимости объектов, которые вообще еще не продаются, применяя все те же алгоритмы ML. Самый известный, наверное, это Zillow. С самим алгоритмом не знаком, но один из ключевых факторов — это расположение и цена на аналогичную недвижимость в том же районе. Если у вас будет еще интерес заниматься этой темой, я бы посоветовал покапать в этом направлении, выделить геокластеры аналогичных квартир, и уже среди них поискать выделяющихся. Но вы и так отметили в комментариях, что добавили выборку по районам…
    И последняя реплика. Вспомнилось как год назад на одном выступлении Martin Omander из Гугла описывал на аналогичном примере их Prediction API, который позволяет проводить как распознование (язык, спам-не спам, настроение текста и т.п.), так и скалярное прогнозирование. В качестве примера он загрузил в это открытое API базу из нескольких сотнях записей о продаже домов, в том же csv — 5 параметров вроде использовалось для наглядности. API позволяет проанализировать эти данные в том же ключе, что и вы делаете, и выдать ориентировочную стоимость по заданным параметрам. Такой вот публичный сервис, однако.
    • 0
      Спасибо за отзыв, и пардон, что так долго добирался до вашего комментария :) Судя по описания, книга действительно интересная, даже просто с точки зрения идей применения статистики в быту. Источник данных выбирал практически наугад. Поначалу я ещё пробовал искать на hata.by, но там настроек гораздо меньше. Чтобы объединить данные из разных источников, нужно как минимум написать парсеры для каждого из них и согласовать формат данных. А учитывая, что и на irr.by предложений хоть отбавляй, для своего маленького эксперимента я посчитал это излишним.

      Честно говоря, из общения с риэлторами я так понял, что цену они определяют «на глаз». Ну, т.е., средняя цена за метр квадратный в этом районе умножается на площадь, а затем просто применяются оценки: хороший ремонт — ага, прибавим пару тысяч, 5-й этаж без лифта — скинем тысячу, рядом нет школ и поликлиник — замнём, но если клиент заметит, предложим небольшую скидку.
      В других странах, таких как США, вполне вероятно, что используются более автоматические и точные средства определения цены.

      Про геокластеры тоже думал. На Udacity, кстати, в курсе по статистике как раз приводился пример про разные средние цены в разных регионах. Очень наглядно. В Минске, насколько я могу видеть, цены для квартир в разных регионах отличаются не так сильно (не считая некоторых элитных мест), а вот для той же Москвы, думаю, расслоение будет значительным.

      Я когда-то колупал Prediction API, но насколько я помню, там внутри всё те же классификаторы и регрессионные модели, доступные и в любой open source библиотеке. Поэтому для серьёзных проектов я бы всё-таки предпочёл библиотеки, которые к тому же ещё можно кастомизировать под себя. Хотя для простых сайтов, наверное, Prediction API — вполне неплохой выбор.
  • +6
    Покупать никогда не покупал (и не собираюсь покамест), а на съём у меня за 11 лет выработались крайне нематериальные критерии. Отчасти они от работы дома. Это все в Китае, но имхо часть из них можно и в России применять. Площадь не меньше 100 м2, окна до пола, потолок от 3 м, этаж от 10 а лучше от 25, паркет или ламинат, зелень вокруг и отсутствие магистралей и вообще крупных дорог. Автобус / метро от дома на расстоянии *не меньше* 1 км (ходить полезно, и существенно тише) и не больше 3 км. Велодорожки. У соседей нет собак. Соседи не делают ремонт и не увлекаются музыкой и игрой на инструментах. Нет детей. Бассейн и спортзал в моем комплексе или в соседних прилегающих. Рестораны не менее 20 ближе 2 км. Кофейни и чайные. Парки и велодорожки. Отсутствие парковки под окнами. Отсутствие определенных видов деревьев, чтобы не было цикад. Хороший вид из окна. Желательно квартира на три стороны, если на две — то юго-запад на северо-восток (иначе слишком жарко). В общем, ни один из этих критериев, кроме площади, не автоматизируется :)
    • +11
      Хорошие у вас критерии. Видно бизнес идет хорошо=)
    • 0
      Отчего это Вы думаете, что не автоматизируются:
      -высота потолков
      -этаж
      -расстояние до крупных дорог
      -количество кафе в округе
      -расстояние до метро\автобуса

      Хотя соглашусь, субъективные параметры очень важны. Но автор же не предлагает выбирать квартиру только по коэффициентам, с помощью его методики можно отбросить явный шлак и выбирать уже только среди подходящих по числовым параметрам квартир.
      • 0
        Этаж да. Высоту редко где указывают. С расстояниями сложно до *крупных* дорог сложно, ведь бывают крупные дороги почти без трафика, или надо пробки подключать, это уже довольно сложный расчет. С количеством кафе тоже все непросто, это могут быть стандартные макдаки и старбаксы, надо ходить смотреть, где правда можно будет кушать (тут в Китае дома готовить невыгодно и муторно).
    • 0
      И в итоге оказывается, что лучше покупать/строить дом.
      • 0
        В вашем случае — может быть. Я пока придерживаюсь варианта снимать квартиры по полгода максимум. Помогает от накопления кучи ненужного барахла, плюс смена декораций. И пока на каждой квартире какие-то косяки да находились. Дом может быть, если где-то в центре города, на берегу озера или реки. Дом как в Питере или Москве, до которого надо еще час ехать, это вообще не мой вариант — очень люблю центры крупных городов.
        • 0
          в центрах крупных городов бывает >1км до метро и автобуса?
          как «зелень вокруг» согласуется с 25 этажом? в окнах в большинстве случаев будут такие же 25 этажи соседних домов (если это не Москва, где выше 22-24 этажей пока не принято)
          Как вы выясняете вопросы о соседях?
          Товарищ в Москве менял квартиру из-за детей у соседей сверху.
          Тут это будет очень сложно выяснить, придется обойти всех соседей и со всеми поговорить, а не дай Бог кто в отпуск уехал, прихватив собаку и детей, а потом вернется…
          • +2
            Про соседей спрашиваем через «обратные» вопросы (делаешь радостно-удивленное лицо и говоришь — я такой собачник! правда-правда тут есть соседи с собаками? а полюбоваться как вечером под окном танцуют тут можно? а моим детишкам будет с кем поиграть? а на пианино есть кто играет? — так хочу научиться! — агенты все бросаются сразу выяснять и рассказывать).

            Зелень вокруг — это вид из окна, да и выходим мы все же иногда из дома. :)

            С центрами и расстояниями — бывает, но надо искать. Я не говорю про самый-самый даунтаун, но надо, чтобы в него было легко дойти или доехать (в идеале — на велосипеде). Опять же, китайские города имеют достаточно просторную и размазанную структуру, часто «центры» вытянуты на километры вдоль основных улиц или набережных, а чуть поодаль вглубь начинаются кварталы с жильем.
    • +1
      В России, к сожалению, большая часть этих критериев (обо всех речи не идет) автоматом переводят недвижимость в класс сверх-элитной
      • +1
        Здесь тоже с этим нелегко. Особенно китайцы, совершенно невосприимчивые к шуму, любят воткнуть какой-нибудь крайне приличный во всех других отношениях комплекс — всеми окнами на пятиэтажную развязку. :)
  • +5
    В полном восторге. Именно на таких примерах нужно студентам объяснять статистику.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Честно говоря, как человек, пришедший из машинного обучения, я больше привык полагаться на другие показатели точности, такие как accuracy, F1 и т.п., а о t-статистиках имею весьма смутное представление (сказывается в т.ч. разница в терминологии). Зависимости остатков от индекса не вижу:

        > plot(residuals(model))
      


      Но тут мы ещё делаем неявное предположение, что данные были считаны в хронологическом порядке (или вы что-то другое имели ввиду?), а это может быть и не так. А если всё-таки есть зависимость, то как тут применить MLE (опять же, у меня есть несколько предположений, но все они могут расходиться с вашим методом)?

      Собрать сезонную статистику мгновенно тоже не получится: предложения по немногу удаляются, так что найти что-то старше пары месяцев было бы сложно. А так, конечно, зависимость будет. Если заниматься серьёзно, то неплохо было добавить в модель ещё по фиктивной переменной на каждый месяц года, а заодно отслеживать общее повышение/понижение цены.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Сначала гистограмма, чуть позже на всё остальное отвечу.

          Гистограмма остатков:


          И, наверное, немного более удобный для восприятия график плотности вероятности:


          Для сравнения — график сгенерированного нормального распределения:
          • НЛО прилетело и опубликовало эту надпись здесь
  • +2
    По-хорошему, это должен делать сервис объявлений. Правильно построенное сообщество с приятным интерфейсом, грамотной анкетой — и большинство сделок закрывалось бы качественнее и без посредников. Но такого сервиса пока нет.

    Рынок недвижимости у нас дикий. Несмотря на то, что сделки там огромные. Сталкивался несколько раз, когда снимал квартиру.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      У нас это обычно называют «цепочка». Да, весьма неприятная штука.
      Спасибо за отзыв :)
  • 0
    Я люблю свою работу ;) вижу, что вы тоже!
  • +1
    Отличная статья!

    Да, есть пара недочетов и неучтенных параметров, но это все мелочи. Главное, что прямо вдохновляет самому попробовать :)
    • 0
      Спасибо. Одним из мотивов для написания статьи как раз и было желание показать, что анализ данных — это не только большие корпаративные БД и стратегические решения, но и самые обычные бытовые задачи.
  • +1
    Ах, как мне нравятся, когда находятся люди, способные показать, как применять сложные технологии к бытовым проблемам.
    • –2
      А что в этих технологиях сложного?
      • 0
        Сложного действительно ничего нет, но у нас люди как-то ещё не привыкли использовать систематический подход к решению проблем. У нас всё ещё чаще всё делается на глаз, исходя из опыта и собственных ощущений, которые часто врут.
  • +2
    Курс на coursera даже пример приводит тот-же — недвижимость. Все кому понравилась статья — советую посмотреть.
  • +2
    Я хотел написать статью про линейную регрессию, но потом подумал, да ну её, лучше куплю квартиру

    Тонко… ))
  • +4
    В своё время Ирэн Адлер из современного Холмса говорила, что мозги — это нынче сексуально (Brainy is the new sexy), не знаю, даёт ли это преимущество при размножении — но преимущество при поиске квартиры однозначно предоставляет )))
    • 0
      Я бы об этом вспомнил:

      image
  • 0
    Отдельно нужно рассказать про тип санузла. Предвидя числовые вычисления я понимал, что работать со значениями «общий/раздельный» гораздо сложней, чем с числами, поэтому пришлось завести 2 отдельные переменные, по одной на каждый тип. При этом если одна переменная была равна 1, то вторая обязательно равнялась 0

    если бы вы затолкали эти переменные в регрессию, у вас была бы мультиколлинеарность: ru.wikipedia.org/wiki/%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BA%D0%BE%D0%BB%D0%BB%D0%B8%D0%BD%D0%B5%D0%B0%D1%80%D0%BD%D0%BE%D1%81%D1%82%D1%8C
    • 0
      Не совсем: есть ещё вариант, когда тип саузла не указан, тогда обе переменные равны 0.
      • 0
        Так вы находите закономерности на придуманных данных. Интерпретация полученных таким образом коэффициентов не имеет смысла и будет сильно меняться при незначительной смене модели.
        • 0
          Тут зависит от получившихся коэффицинетов. По логике коэффициент при переменной раздельного санузла должен быть положительным, а при совмещённом — отрицательным. Тогда нули для обеих переменных как раз будут давать некоторое среднее значение, что и показывает отсутствие данных об этих переменных. К счастью, линейную модель довольно легко интерпретировать и при ошибках в коэффициентах всегда можно её доработать, использовав, например, одну переменную со значениями 1 (для раздельного), -1 (для совмещённого) и 0 при отсутствии информации или, что более правильно, просто использовать среднее значение по данным, возможно c лапласовским сглаживанием. Однако, в рамках простой POC модели, как мне кажется, на этом не стоит заморачиваться. В конце концов, в получившейся модели есть гораздо более серьёзные погрешности.
          • 0
            1, -1, 0 нормально, но модель должна быть в логарифмах. Иначе получится, что раздельный санузел прибавляет одну и ту же сумму к квартире за 30 и 130 тыщ баксов, а он скорее действует пропорционально
            • 0
              Мне кажется, если рассматривать такие диапазоны цен, то нужно вводить дополнительный параметр («класс» или что-то вроде), ибо там не только санузел будет прибавлять в цене. А для небольшого диапазона разница между разными раздельными санузлами будет незначительна.
      • +1
        Я вообще не понял зачем вводить две булевых переменных, когда можно одну? 0 — совмещённый, 1 — нормальный и всё. Не?
        • +1
          Во-первых, если сделать как вы говорите, то при совмещённом санузле эта переменная вообще никак не будет учитываться — 0, умноденный на любой коэффициент k всё равно даст 0. В принципе, регрессионный анализ должен подстоиться и под такую ситуацию, но интерпретировать модель уже станет сложней. А во-вторых, с одним булевым атрибутом вы уже не сможете расширить логику для 3 и более состояний. Переменные, которые могут принимать строго фиксированный набор значений (как enumerations в языках программирования) в статистике/машинном обучении называют номинальными или категориальными. Например, категориальной переменной является день недели. Представьте, что вы продаёте лимонад в парке и хотите спланировать, сколько его нужно закупать. При этом вы знаете, что в субботу и воскресенье в парке полно народу и лимонада нужно гораздо больше, чем например, в понедельник или среду. Как использовать день недели в уравнении линейной регрессии? Вы не можете просто назначить дням с понедельника по воскресенье числа от 1 до 7, иначе получится, что в воскресенье будет всегда продаваться в 7 раз больше лимонада, чем в понедельник. Переменная дня недели является категориальной, а для значений этого типа не существует арифметических правил. Наиболее простой способ использовать информацию из категориальных переменных — это разложить их на индикаторные. Тогда вместо 1 переменной «день недели» у вас появится 7 — «понедельник», «вторник» и т.д. Зато теперь регрессия позволит найти «вес» каждого дня недели отдельно и построить гораздо более точную модель.
          • 0
            Во-первых, если сделать как вы говорите, то при совмещённом санузле эта переменная вообще никак не будет учитываться — 0, умноденный на любой коэффициент k всё равно даст 0. В принципе, регрессионный анализ должен подстоиться и под такую ситуацию, но интерпретировать модель уже станет сложней

            Регрессионный анализ достаточно мудр, чтобы интерпретировать эту ситуацию: положительный коэффициент будет обозначать премию за раздельный санузел.
            В случае с парком нужно не 7 переменных, а 6, иначе будет мультиколлинеарность, о чём вам уже написано выше. День, не покрытый dummy-переменной, считается днём по умолчанию. В модели должна быть константа.
            • 0
              Тогда это уже будет другая логическая модель санузла :) В общем-то, ничего плохого для данного случая, но в потенциале лишает систему возможности расширения (невозможно добавить более тонкую градацию санузлов).
              Про 6 дней для 7 переменных — верно, это я уже разогнался, извиняюсь. Хотелось показать именно сам принцип замены категориальных переменных индикаторными.
  • 0
    Респект за статью. Только зачем столько знаков после точки?
    • 0
      Если вы про вывод чисел, то это стандартный формат в R. При желании можно отформатировать и иначе, например, с помощью функция formatC() или prettyNum().
  • –1
    Интересная статья, спасибо большое! Жду продолжения «как я покупал штаны» и «как я выбирал жену» :))
  • 0
    Супер :) Ждем статью о том как вы выбирали себе девушку :D
  • 0
    Вы не в курсе не появилось ли сервисов с подобными функциями?:)

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