Анализ цен и прогнозирование объявлений в Airbnb с помощью набора данных Airbnb Istanbul

Людям всегда что-то интересно. Иногда это просто любопытство, иногда любопытство к действию, чтобы удовлетворить это любопытство.

1 неделю назад я подумал, что AirBnb принимает решения о ценах, местонахождении домов и что-то, что связано с их недвижимостью в Стамбуле. Для этого я сделал проект, цель которого - прогнозировать стоимость листингов в AirBnb. Все коды этого проекта в моем GitHub

Вот мой план проекта:

1. Введение и вопросы

2. Моделирование и оценка моделей

3. Резюме

Введение и вопросы

В Турции AirBnB работает с 2010 года. Никогда не пользовался им в связи с тем, что живу в Стамбуле. Однако у меня есть несколько вопросов, прежде чем я начну свой проект.

· Сколько хостов имеют более 1 объявлений?

· Связана ли цена листинга с континентом или нет?

· Мой дом находится в европейской части Стамбула. Пригодно ли выставлять свой дом на Airbnb?

· Могу ли я предсказать цены листинга?

Обзор набора данных

С любопытством я нашел набор данных на официальном веб-сайте AirBnb (Получить данные - внутри Airbnb. Добавление данных к дискуссии).

Есть много городских данных, которые совершенно бесплатны. Когда я проанализировал данные Стамбула, которые были извлечены в октябре 2020 года, этот набор данных AirBnb предоставил 74 столбца с 22328 строками (списками). В строках представлены объявления (комната, вся квартира и т. Д.).

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

Я не буду говорить о технических деталях. Если вы хотите проверить мой проект, вот мой GitHub

Исследовательский анализ данных

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

В наборе данных AirBnb Istanbul насчитывается 12 651 уникальный хост. Один хост может иметь несколько объявлений. Давайте посмотрим на количество хостов в объявлениях:

· Как вы можете видеть выше, почти 80% хостов имеют 1 объект в Стамбуле. 10% хостов имеют 2 объявления и 10% хостов имеют более 2 объявлений. Это ответ на один из моих вопросов.

· 90% объявлений представляют собой весь дом и отдельные комнаты

· AirBnB имеет около 70% объявлений в Бейоглу, Шишли, Фатих, Кадыкёй и Бешикташ.

· Эти места - самые известные районы Стамбула. Если вы планируете посетить Стамбул, вам следует отправиться в Бейоглу, который находится в европейской части Стамбула. Здесь есть площадь Таксим, проспект Истикляль, винные дома, клубы, рестораны, кафе, церкви, исторические переходы и здания… Подводя итог, Бейоглу - это гармония истории и сегодняшнего дня. Для получения дополнительной информации: Бейоглу - Википедия.

После некоторого одномерного исследования давайте посмотрим на супер-хосты. В AirBnB Istanbul 2 819 (22% уникальных хостов) супер-хостов. Скорее всего, люди, которые предпочитают AirBnB, найдут суперхозяев более надежными, чем другие.

· Левая диаграмма вверху показывает процентное распределение по континентам и указывает на то, что хосты не супер. 80% объявлений на европейской стороне (10% Superhost, 70% другое)

· Правый график выше показывает это процентное распределение по центрам. Я отметил центры вручную, а именно: Бейоглу, Шишли, Фатих, Бешикташ, Сарыер, Кадыкёй, Ускудар, Адалар, Бейкоз.

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

После некоторого расследования суперхозяина я собираюсь поговорить о ценах на объявления

· К сожалению, цена сильно искажена вправо и имеет крайние точки. Давайте увеличим масштаб.

· Средняя цена листинга составляет 511 турецких лир, а стандартное отклонение - 1904 турецких лир. Стандартное отклонение очень велико. В следующих частях я собираюсь разобраться с этой проблемой перекоса.

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

· Однако я могу обнаружить мультиколлинеарность в независимых переменных. Я ненавижу мультиколлинеарность и удалил некоторые атрибуты.

· Я проделал эту операцию для всех атрибутов, но не собираюсь показывать ее здесь. Если вас интересуют операции, давайте заглянем на GitHub.

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

· Цена может зависеть от типа номера. Целые дома / апартаменты и отдельные комнаты составляют 90% списка Airbnb, и их цены распределены по-разному. Это может быть хорошим атрибутом для моделирования цены.

· В телекоммуникационном секторе срок пребывания в должности определяет время жизни клиента в компании, поэтому я создал эту функцию и дал название «Срок полномочий». Он представляет собой месяцы жизни хозяина на Airbnb в качестве хозяина.

· Владение недвижимостью не дифференцирует цену, но в распределении владения, похоже, есть 2 почти нормальных распределения. Я улавливаю это и собираюсь поместить эти атрибуты в ›= 40 Tenure и‹ 40 Tenure, это может быть полезно для моделирования.

· Большинство хозяев находятся в диапазоне от 0 до 40 лет владения

Моделирование и оценка

После некоторого понимания следует этап моделирования. Как я уже сказал, цена сильно искажена. Это плохо для регрессионных моделей.

· Если логарифмировать цену, мы поймем нормальное распределение. Так что я считаю, что лучше создать модель с логарифмической ценой.

Модель регрессии случайного леса

После предварительной обработки у меня есть 35 независимых переменных для прогнозирования цен на листинги. Сначала я создал модель RandomForestRegressor из пакета Scikit-Learn без разделения набора данных. Эта модель дала мне 0,59 балла R2, но она могла быть переоснащенной. Моя цель - обнаружить выброс, если он есть.

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

· Я собираюсь отказаться от простого просмотра прямоугольной диаграммы и обрезать от -1,7 до +1,7 пункта. Я потерял 237 объявлений в этой операции. Извини за это…

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

После моделирования вы можете увидеть выше результат тренировочного набора с оценкой 0,63 R2.

В наборе тестов у меня получилось 0,56 r2. Это означает, что наша регрессионная модель объясняет 56% изменчивости цены. Важность функций:

Регрессия XGBoost:

· Когда я пробую регрессор xgboost, оценка 0,60 R в квадрате и 0,28 MSE на тестовом наборе немного лучше, чем у RandomForestRegressor. Наша модель XGBRegressor объясняет почти 60% изменчивости данных.

Вот важность функции модели XGB:

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

Резюме

Потому что во время этого проекта очистка и обработка данных занимают почти 70% всего времени проекта. Я ответил на все свои вопросы. Подведем итог:

· Сколько хостов имеют более одной записи в компании?

o 20% хостов более 1 объявлений

· Связан ли континент с ценами?

Согласно прямоугольной диаграмме вы можете увидеть распределение цен для 2 континентов, и очевидно, что европейская цена распределяется выше, чем азиатская.

Мой дом находится в европейской части Стамбула. Пригодно ли выставлять свой дом на Airbnb?

o Я собираюсь арендовать свой весь дом в Европе. У меня высокий шанс получить высокий доход от моего дома

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

· Могу ли я предсказать цены на листинге?

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

Что дальше?

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

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