Практические руководства

Преимущества науки о данных: как я нашел свой новый дом в Дублине

Квест Data Scientist по поиску недвижимости на рынке с высоким спросом / низким предложением

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

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

Когда мы с женой решили купить наш новый дом в Дублине, я сразу же увидел возможность сделать себя полезным!

· High Demand, Low Offer
· Data Cravings
· From the Idea to the ToolBasic DataEnhancing the DataGoogle Data Studio
· Some Implementation Details (Before the Fun Stuff)Address GeocodingEstimating the Time-on-Market
· The analysisInsights
· Conclusion
· Follow me on LinkedIn and Medium

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

Высокий спрос, низкое предложение

Чтобы понять, на каком основании мне нужно было переехать, полезно ознакомиться с моим личным опытом работы на рынке недвижимости в Дублине. Я должен признать, что мне, как покупателям, было нелегко справиться с этим: на рынке сверхвысокий спрос (благодаря отличным экономическим показателям Ирландии в последние годы) и Жилье невероятно дорогое; отчет Евростата показывает, что в Ирландии была самая высокая стоимость жилья в 2019 году по сравнению с ЕС (на 77% выше среднего показателя по ЕС).

Последствия этой диаграммы?

  1. Очень мало домов для нашего бюджета, еще меньше в районах с высоким спросом (т. е. не совсем беспорядочно-ездить на работу).
  2. Качество бывших в употреблении домов иногда довольно низкое, поскольку владельцы не заинтересованы в ремонте перед продажей. Дома, выставленные на продажу, часто имеют низкое энергопотребление, плохую сантехнику и плохие электрические системы - перевод: покупатели должны добавить некоторые затраты на ремонт к и без того высокой покупной цене.
  3. Продажи основаны на системе ставок и почти каждый раз, когда ставки превышают начальную цену предложения. Насколько я понял, это неверно для новостроек, но они намного превышали бюджет, поэтому мы вообще не исследовали этот сегмент.

Я могу представить, что многие люди во всем мире могут относиться к этому, поскольку ситуация, вероятно, аналогична во многих больших городах.

Как и все, кто ищет недвижимость, мы хотели найти идеальный дом в идеальном месте по доступной цене. Давайте посмотрим, как Data Science помог нашему поиску!

Жажда данных

Любой проект Data Science требует некоторого этапа сбора данных, и для этого конкретного приложения я искал какой-то источник, содержащий все свойства, доступные на рынке. Для Ирландии это означает два типа веб-сайтов:

  1. Таковые каждого агентства недвижимости
  2. Агрегаторы

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

  • Сколько времени займет поездка на работу?
  • Сколько объектов недвижимости находится в определенном районе? - С классическими веб-сайтами можно сравнивать районы города, но они обычно покрывают несколько квадратных километров, что недостаточно детально, чтобы понять, например, если предложение на определенной дороге слишком высоко, чтобы быть хорошим. Большинство веб-сайтов предоставляют карты, но они менее информативны, чем они могли бы быть.
  • Сколько удобств в доме?
  • Какова средняя запрашиваемая цена для набора объектов?
  • Как долго недвижимость находится в списке? Эта информация, если таковая имеется, может быть ненадежной, поскольку агент по недвижимости мог удалить и воссоздать объявление.

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

От идеи к инструменту

Основные данные

Первым шагом было написание парсера для сбора базовой информации:

  • Необработанный адрес ресурса
  • Текущая цена продажи
  • Ссылка на веб-страницу объекта
  • Основные характеристики, такие как количество комнат, количество ванных комнат, рейтинг энергопотребления.
  • Количество просмотров объявления о доме (если доступно)
  • Тип дома - Дом? Квартира? Новое здание?

Это почти все данные, которые я смог получить из Интернета. Чтобы получить более глубокие знания, мне нужно было улучшить этот набор данных.

Улучшение данных

Когда дело доходит до дома, мое главное преимущество - это легкость поездок на работу, а для меня «легкая поездка на работу» означает время на дорогу от двери до двери меньше, чем равно 50 минутам. Чтобы рассчитать это, я решил использовать Google Cloud Platform:

  1. С помощью API геокодирования я получил координаты широты и долготы, используя адрес свойства.
  2. С помощью API маршрутов я рассчитал расстояние между домом и местом работы для пешеходов и общественного транспорта. (Примечание: время езды на велосипеде составляет примерно 1/3 времени ходьбы)
  3. С помощью Places API я получил информацию об удобствах вокруг каждого объекта размещения (в частности, нас интересовали аптеки, супермаркеты и рестораны). Примечание. API Адресов очень дороги; с БД из 4 000 домов вам потребуется выполнить 12 000 запросов, чтобы получить три типа удобства. По этой причине я удалил эти данные с моей последней панели инструментов.

Помимо географической информации, у меня возник еще один интересный вопрос: как долго недвижимость находится на рынке? Если владельцы слишком долго пытались продать недвижимость, это не положительный сигнал : возможно, что-то не так с территорией или самим домом, либо запрашиваемая цена может быть слишком высокой.
С другой стороны, если недвижимость только что выставлена ​​на продажу, вы должны принять во внимание, что владельцы не будут продавать ее, согласившись на первое полученное предложение. К сожалению, эту информацию довольно легко скрыть или «скрафтить». С помощью базового машинного обучения я рассчитал это количество, просто используя просмотры списка с некоторыми другими функциями.

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

Студия данных Google

Когда я был удовлетворен расширенным набором данных, я захотел создать мощную панель инструментов. Инструмент визуализации данных, который я выбрал для этой задачи, - Google Data Studio. У этого программного обеспечения есть некоторые минусы (например, у него очень очень ограниченные возможности), но некоторые плюсы заключаются в том, что оно бесплатное, работает в Интернете и может считывать данные из Google Таблиц. . Ниже приводится диаграмма, которая обобщает весь рабочий процесс.

Некоторые детали реализации (до забавных вещей)

Честно говоря, реализация была довольно простой, и на самом деле в ней нет ничего нового или особенного: просто набор скриптов для сбора данных и некоторые базовые преобразования Pandas. Единственные части, которые стоит выделить, - это взаимодействие с API Google и оценка времени, в течение которого объект недвижимости находился на рынке.

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

Давайте посмотрим на необработанные данные:

Как я и ожидал, файл содержит следующие столбцы:

  • id: идентификатор объявления.
  • _address: адрес собственности
  • _d_code: Код города Дублина. Каждая область Дублина обозначается кодом в формате D<number>. Если число <number> четное, адрес находится на юге Лиффи (река, которая пересекает город), а если число нечетное, адрес находится на северной стороне. реки.
  • _link: ссылка на исходную страницу, с которой был получен список.
  • _price: Запрашиваемая цена недвижимости в евро.
  • type: Тип собственности (HOUSES, APARTMENTS, NEW HOUSES).
  • _bedrooms: Количество спален.
  • _bathrooms: Количество санузлов.
  • _ber_code: Код, определяющий рейтинг энергопотребления, чем ближе к букве А, тем лучше рейтинг энергопотребления.
  • _views: просмотры, полученные с помощью листинга (если есть).
  • _latest_update: Когда объявление было обновлено или создано (если доступно).
  • days_listed: это вычисляемое поле, в нем разница между датой сбора данных и столбцом _last_update.

Геокодирование адреса

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

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

Оценка времени выхода на рынок

Давайте сосредоточимся на данных ниже:

Как вы можете видеть в этом примере, количество просмотров, связанных с недвижимостью, не отражается в количестве дней, в течение которых объявление было активным: например, дом с id=47 имеет ~ 25 тысяч просмотров, но, по-видимому, был внесен в список точная дата загрузки данных.

Однако эта проблема присутствует не для всех свойств; в приведенном ниже примере количество просмотров больше соответствует указанным дням:

Как мы можем использовать вышеизложенные знания? Легко: мы можем использовать второй набор данных в качестве обучающего набора для модели, который затем мы можем применить к первому набору данных!

Я пробовал два подхода:

  1. Возьмите «согласованный» набор данных и рассчитайте среднее количество просмотров в день, затем я применил это среднее к «неизвестному» набору данных. Это решение не является полностью необоснованным, но у него есть проблема, заключающаяся в том, что все дома помещены в одно ведро: вполне вероятно, что дом стоимостью 10 миллионов евро может иметь меньше просмотров в день, поскольку этот бюджет зарезервирован для небольшого ниша людей.
  2. Обучение модели случайного леса на втором наборе данных и применение ее к первому.

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

Анализ

Дамы и господа: последняя панель управления. Если вы хотите поэкспериментировать с этим, просто перейдите по этой ссылке.

Примечание. Google Data Studio позволяет встраивать отчеты на Medium (как вы можете видеть в другой статье, которую я написал). К сожалению, модуль Google Maps не работает при встраивании в статью, поэтому мне пришлось вернуться к скриншотам.

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

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

И, наконец, таблица с необработанными данными (DL RF означает «случайный лес в списке дней»).

Insights

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

Набор данных содержит около 4000 домов и квартир: конечно, мы не можем организовать просмотр для каждого из них, поэтому наша задача - определить подмножество записей, которое должно содержать одно или несколько объектов недвижимости, на которые мы хотели бы сделать ставку. .

Во-первых, нам нужно уточнить критерии поиска. В качестве примера предположим, что мы хотим сопоставить эти характеристики:

  1. Тип недвижимости: Дом
  2. Количество спален: 3
  3. Время до работы: менее 60 минут
  4. Рейтинг BER: A, B, C, или D.
  5. Цена: от 250 000 до 540 000 евро

Давайте применим все фильтры, кроме фильтра цены, и посмотрим на карту (отфильтровывая только то, что стоит больше 1 миллиона и меньше 200 тысяч евро).

В целом, запрашиваемая цена на юге от Лиффи намного выше, чем запрашиваемая на севере, за некоторыми исключениями на юго-западе. Даже выше Лиффи «внешние районы», то есть северо-восток и северо-запад, кажутся менее дорогими, чем «чистый север». Одна из причин заключается в том, что главная трамвайная линия в Дублине (LUAS) пересекает город по прямой с севера на юг (есть еще одна линия LUAS, которая идет с запада на восток, но не достигает все деловые районы).

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

Ситуация становится еще более интересной, если мы отфильтруем в соответствии с нашим бюджетом (напомним, что на карте ниже показаны дома с 3 спальнями, время в пути менее 60 минут, и карта ниже добавляет фильтр только по запрашиваемой цене):

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

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

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

  • Дома, не входящие в группу - дом, который изолирован на карте, может указывать на то, что в этом районе не так много предложений, поэтому, возможно, владельцы не хотят легко продавать.
  • Дома, расположенные в дорогом кластере. Если все остальное вокруг дома дорогое, это может указывать на то, что это место пользуется большим спросом. Я просто оставлю это здесь в качестве примечания, но мы могли бы количественно оценить это явление с помощью пространственной автокорреляции (например, вычислив I Морана] ).

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

Давайте более подробно проанализируем, что может предложить область ниже:

Мы уже сократили наши варианты с 4000 элементов до менее 200, теперь нам нужно немного лучше разбить точки и сравнить кластеры.

Автоматизация кластерного поиска не добавит слишком много к этому анализу, но давайте все равно применим DBSCAN; мы выбираем DBSCAN, потому что некоторые группы могут быть неглобулярными (например, k-means не будет работать должным образом в этой базе данных). Теоретически нам нужно рассчитать географическое расстояние между точками, но мы будем использовать евклидову систему, так как это хорошее приближение:

Алгоритм работал довольно хорошо, но я бы пересмотрел кластеры следующим образом (с некоторыми «бизнес-знаниями» о Дублине):

Мы хотим отменить приоритет районов с более низкими запрашиваемыми ценами, так как мы хотели бы максимально повысить качество проживания и добираться на работу в рамках нашего бюджета; по этой причине мы можем отфильтровать кластеры 2, 3, 4, 6 и 9. Обратите внимание, что кластеры 2, 3 и 4 являются одними из самых бюджетных районов Северного Дублина (это вероятно, из-за плохого покрытия общественного транспорта). Кластер 11 стоит дорого и находится далеко, поэтому мы можем удалить его.

Если посмотреть на более дорогие агрегаты, номер 7 - один из лучших с точки зрения поездок на работу. Это Драмкондра, красивый жилой район на севере Дублина; хотя Драмкондра не обслуживается трамвайной линией (LUAS), он хорошо связан с автобусами; Кластер 8 имеет те же расходы и поездки, что и Drumcondra. Еще одна группа, которую стоит проанализировать, - номер 10: похоже, что эта группа находится в области с меньшим предложением, что означает, что это, вероятно, место, где люди с меньшей вероятностью будут продавать, и это все еще имеет хорошее сообщение благодаря железной дороге (мы предполагаем, что все районы имеют одинаковую плотность населения).

И последнее, но не менее важное: Кластеры 1 и 5 находятся очень близко к парку Феникс крупнейшему закрытому общественному парку в любой столице Европы.

Большой! Мы определили около 26 объектов, которые, по нашему мнению, стоит посмотреть в первую очередь. Теперь мы можем начать вникать в каждый дом и, в конце концов, организовать просмотры с агентами по недвижимости!

Заключение

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

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

Эти данные больше не могут помочь, некоторые интеграции могут улучшить анализ. Несколько идей:

  • Мы не интегрировали набор данных об услугах (тот, который мы могли получить через API Адресов). Имея дополнительный бюджет на облачные сервисы, мы могли бы легко добавить эту информацию на панель управления.
  • Ирландия публикует много интересных данных на веб-сайте статистики страны: например, можно загрузить количество звонков в каждый участок Гарда (ирландская полиция) по кварталу и по типу. преступления; таким образом мы могли узнать, в каких зонах наблюдается наибольшее количество краж со взломом. Поскольку можно получить данные переписи для каждого избирательного участка, мы могли бы также подумать о том, чтобы рассчитать уровень преступности с учетом населения! Обратите внимание, что для таких расширенных функций нам потребуется соответствующая геоинформационная система (например, QGIS) или база данных, которая может обрабатывать географические данные (например, PostGIS).
  • В Ирландии есть база данных с предыдущими ценами на жилье, известная как Реестр жилой собственности. С их веб-сайта: [Реестр жилой собственности] включает дату продажи, цену и адрес всех приобретенных жилых объектов. в Ирландии с 1 января 2010 года. Наличие исторических цен на дома может помочь понять, как со временем менялся спрос.
  • Страхование жилья сильно зависит от местоположения дома, чтобы получить расценки. Приложив некоторые усилия, мы могли бы очистить страховые веб-сайты, чтобы интегрировать в нашу панель управления их «модель риска».

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

С помощью этого инструмента мы с женой в итоге потратили меньше времени (и времени агентов): мы посетили 4 просмотра, сделали ставки на 3 дома, выиграли 1.

Следуйте за мной в LinkedIn и Medium

Если вам понравилась статья, не стесняйтесь обращаться в LinkedIn (я приветствую персональные запросы на подключение) и подписывайтесь на меня в Medium!