Учитесь на данных о недвижимости.

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

В этой статье мы рассмотрим, что нужно для создания Zillow Zestimate.

Повестка дня:

  • Сбор данных и предварительная обработка
  • Машинное обучение
  • Анализ входных характеристик оценщика

Сбор данных и предварительная обработка

Большинство данных о недвижимости общедоступны для тех, кто хочет их найти. Однако многие компании, собирающие ее в удобном для восприятия формате, ограничивают доступ таких исследователей, как мы. Таким образом, чтобы собрать данные для создания оценщика стоимости дома, такого как Zestimate, у вас есть три варианта: найти онлайн-наборы данных (например, наборы данных), купить данные (например, datarade) или очистить свои собственные данные.

Я выбрал третий вариант и создал парсер недвижимости, который собирает информацию о продаже домов с веб-сайта Zillow (подробнее об этом в следующей статье).

После очистки данных я создал CSV-файл с 1000 проданными объявлениями из 28205 в Шарлотте, Северная Каролина:

В дополнение к этим функциям я включил информацию о средней рыночной стоимости домов на одну семью (SFH) до даты продажи для каждого почтового индекса (исследование Zillow). Также были включены год постройки, текущая стоимость жилья Zestimate и арендная плата Zestimate:

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

Машинное обучение

Машинное обучение, представленное в этой работе, использует python, scikit-learn, seaborn и pandas. Каждый столбец данных из нашей таблицы представляет собой функцию данных. Цель состоит в том, чтобы использовать набор столбцов данных x для сопоставления с исходным значением y с помощью линейной регрессии.

В дополнение к ранее упомянутой предварительной обработке мне пришлось удалить столбцы данных «Zestimate» и «Rent Zestimate».

Конечные столбцы x: "Широта", "Долгота", "Дата продажи", "Кровати", "Ванны", "Площадь дома", "Участок в акрах", " Год постройки», а также записи о средней стоимости дома в SFH.

Последний столбец y: "Цена продажи"

Есть несколько параметров, о которых следует помнить. Я отсортировал данные по дате и использовал 95% поезд, 5% тестовое разделение на 1000 проданных объявлений. Помните, что разделение используется, потому что мы используем прошлые списки для прогнозирования будущих с оценкой стоимости дома. Было бы бессмысленно проводить обучение на данных о жилье только за 2019 год, чтобы прогнозировать цены на жилье с 2020 года и далее, так что это разумное разделение. Я также использовал StandardScaler() из scikit-learn для масштабирования данных для модели линейной регрессии в качестве последнего шага предварительной обработки. Масштабирование данных имеет основополагающее значение для модели линейной регрессии. Подробнее об этом здесь.

Пришло время подогнать наши данные и сравнить их с Zillow Zestimate. По данным Zillow, Zillow Zestimate имеет среднюю частоту ошибок 1,8% для активных списков в штате Северная Каролина. Другими словами, Zillow очень точен. Наша модель линейной регрессии имеет среднюю частоту ошибок 18,6%. Это может звучать плохо, но выбросы искажают ошибку. Смотрите прогнозы нашей модели ниже.

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

Анализ входных характеристик оценщика

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

Матрица корреляции:

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

Например, ниже имеет смысл, что широта и долгота имеют низкую степень корреляции, -0,3. Широта дома ничего не говорит вам о долготе дома. Тем не менее, кровати и ванны имеют высокую степень корреляции, 0,69, потому что в большом доме с большим количеством кроватей, вероятно, также есть много ванн.

Мы узнаем пару вещей о наших данных из этой корреляционной матрицы. Во-первых, наши значения «SFH Avg» во времени являются избыточными из-за их высокой степени корреляции друг с другом, от 0,89 до 1,0. Если «SFH Avg» в почтовом индексе 28205 был очень низким 1 месяц назад, он, вероятно, будет очень низким и 3 месяца назад. Это будет область, в которой мы можем обрезать жир в нашей модели и убрать некоторые входные функции. Во-вторых, функции «Участок в акрах» и «Год постройки» предоставляют уникальную информацию для нашей модели линейной регрессии. Их низкое значение корреляции со всеми другими признаками, менее 0,59, указывает на то, что это уникальные признаки.

Весовые коэффициенты линейной регрессии:

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

В качестве быстрого примера весового коэффициента предположим, что у нас была модель линейной регрессии, в которой в качестве входных признаков использовались только кровати и ванны. Затем у нас есть дом с 3 спальнями и 2 ванными стоимостью 350 тысяч долларов. Пара весовых коэффициентов (без смещения) будет aдля кровати и bдля ванны ниже:

350000 = a * 3 + b * 2

Весовые коэффициенты a и b могут иметь несколько разных значений. Если бы a равнялось 100 000, а bбыло 25 000, мы бы сказали, что кровати являются более важной функцией. Если бы a равнялось 50 000, а bбыло 100 000, мы бы сказали, что ванна является более важной функцией. Какие весовые коэффициенты являются наибольшими для нашей модели линейной регрессии стоимости дома?

Ранжирование коэффициентов позволяет сделать несколько выводов о наших входных характеристиках. Из приведенного выше рисунка видно, что наиболее влиятельной характеристикой стоимости дома является средняя цена дома с тем же почтовым индексом в предыдущем месяце, также известная как «SFH Avg 1 Month». Второй наиболее влиятельной функцией является «House Sqft». Эти выводы согласуются с тем, что мы знаем о рынке жилья.

Еще интереснее то, что долгота, или то, как расположен дом на восток/запад, является важным показателем стоимости дома. Почтовый индекс 28205 находится к востоку от центра города Шарлотт, что предполагает изменение стоимости домов в зависимости от их долготы относительно центра города.

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

Заключение

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

Спасибо за чтение и, пожалуйста, оставляйте комментарии с любыми вопросами или рекомендациями для будущей работы!

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

Полезные ссылки: Коэффициентная интерпретация ; Корреляционная матрица с PCA