Анализ цен и прогнозирование объявлений в 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 на основе их характеристик, таких как номера, ванная комната, отзывы, удобства.
В следующей части этой статьи я собираюсь развернуть эту модель в веб-приложении. Потому что модельный проект, который еще не развернут, еще не завершен.