Введение

Наша команда — это группа студентов магистратуры по информационным технологиям и менеджменту Техасского университета в Остине. Нам дали заключительный проект в нашем курсе Business Data Science, чтобы раскрыть набор(ы) данных, и нам было поручено извлечь информацию, используя стратегии анализа данных, которые мы изучили в течение семестра.

Команда -
MADI GWYNN
GINA HUH
DHROV SUBRAMANIAN
VIKRAM GUPTA
CHUNXI LI

Наша стратегия

Наша команда состоит из заядлых путешественников, которые часто используют Airbnb для бронирования жилья во время путешествий. Мы все задавались вопросом, какие аспекты конкретного объявления влияют на цену за ночь. Это любопытство привело нас к обнаружению данных Airbnb в районе Нью-Йорка. Кроме того, нам нужно было определить, могут ли внешние факторы, такие как местоположение и население, влиять на цену. Итак, мы стремились найти наборы данных, основанные на Нью-Йорке, такие как данные переписи населения, транзит, преступность и даже наблюдения за крысами. Собрав и разработав методологию объединения этих наборов данных в один, мы начали отвечать на следующие вопросы:

  • Что влияет на цену листинга Airbnb в Нью-Йорке? Особенности листинга? Презентация Листинга? Особенности локации?
  • В каком районе Нью-Йорка лучше всего разместить Airbnb?
  • По какой цене листинг должен был давать определенный набор функций?
  • Какие факторы влияют на вероятность того, что Airbnb будет сдан в аренду?
  • Есть ли сильная корреляция между некоторыми из этих факторов в нашем наборе данных? Какова корреляция между плотностью населения (или демографией) и ценой? Какова корреляция между безопасностью района и ценой? Какая связь между ближайшим транзитом и ценой?

Сбор данных

Набор данных Airbnb

Первый открытый источник данных Airbnb, который мы нашли, был на Kaggle.com. Это был отличный набор данных, который содержал такие характеристики, как район, тип номера, цена и количество отзывов. Однако в наборе данных отсутствовало несколько функций, которые, по нашему мнению, также могут повлиять на цену и количество отзывов. Поэтому мы обнаружили еще один вид данных на InsideAirbnb.com, который включал в себя дополнительные функции, такие как количество спален и ванных комнат, удобства, описание и рейтинги отзывов. Поэтому мы решили выбрать этот набор данных. *Этот набор данных продолжает обновляться по мере добавления и удаления объявлений с сайта Airbnb. Нашей команде пришлось загрузить набор данных один раз и продолжать использовать этот плоский файл. Всего в нашем наборе данных было 106 функций и 48 377 объявлений.

Набор данных о преступлениях

Мы поняли, что фактором, который может серьезно повлиять на то, где люди хотели бы остаться в городе, может быть уровень преступности в данном районе. Для этого нам нужно было найти большой набор данных с относительно свежими данными о преступлениях. К счастью, город Нью-Йорк хранит легкодоступный набор данных (https://maps.nyc.gov/crime/) обо всех законных уголовных преступлениях, правонарушениях и правонарушениях, о которых сообщается Департаменту полиции Нью-Йорка (NYPD) для все полные кварталы до сих пор.

Набор данных переписи

Набор данных переписи содержал 38 объектов, разделенных на более чем 2000 переписных участков в районе Большого Нью-Йорка. Хотя полный набор данных переписи является общественным достоянием, мы чувствовали, что в нем слишком много измерений, с которыми мы не понимали, как обращаться, и поэтому использовали набор данных из Kaggle (https://www.kaggle.com/muonneutrino/new-york- город-перепись-данные). Владелец, в свою очередь, взял эти данные из (https://factfinder.census.gov/faces/nav/jsf/pages/index.xhtml) для функций и (https://www.fcc.gov/ general/census-block-conversions-api) для информации о блоке переписи. Особенности, очевидные в данных, касались таких тем, как расовая разбивка по районам, статистика доходов / бедности, то, как люди добирались до работы, и тип работы, преимущественно выполняемой в районе.

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

Набор данных Airbnb

Сначала мы подошли к нашим наборам данных, чтобы обобщить общие характеристики каждого из них. В наборах данных Airbnb было около 50 000 объявлений, которые включали информацию как о листинге, местоположении, так и о хозяине.

Мы удалили ненужные поля, такие как почтовые ссылки, подробные описания объявлений и страна/рынок. Затем мы создали тепловую карту, чтобы отобразить корреляцию между функциями, которые мы выбрали для анализа.

«Квадратные футы» и «цена» — это набор характеристик, которые имеют наибольшую корреляцию. На первый взгляд мы подумали, что это отличная функция для включения в нашу модель. Однако более половины списков не имеют нулевого значения для этой функции, поэтому мы решили не включать эту функцию в модель.

Еще одним набором характеристик с высокой степенью корреляции являются «спальни» и «помещения», которые можно легко обосновать. Чем больше спален, тем больше людей может разместить объявление Airbnb.

Наконец, один удивительно некоррелированный набор функций — это «район» и «тип_комнаты». Как правило, в районе есть похожие дома, где хозяин либо сдает в аренду весь дом, либо только одну комнату. Тем не менее, тип комнаты практически не связан с районом, в котором расположен объект.

Набор данных о преступлениях

В наборе данных было более миллиона жалоб, зарегистрированных полицией Нью-Йорка с 2013 по 2018 год. Они включали дату регистрации и разрешения, и каждое дело было разделено на уголовные преступления, проступки и нарушения. Кроме того, 96,9% жалоб имели точное местоположение, которое можно было определить по широте и долготе.

Набор данных переписи

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

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

Этапы предварительной обработки

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

Набор данных Airbnb

Удобства

Первой интересной особенностью была функция удобств. Его первоначальные значения были списками удобств, которые хозяин выбрал для своего списка. Мы изолировали каждый элемент в списке всех списков и подсчитали, сколько раз каждое удобство было выбрано во всем наборе данных. Изучив топ-30, мы объединили несколько похожих удобств (телевидение и кабельное телевидение) и создали двоичные столбцы со значением «1», означающим, что в списке есть это удобство, или «0» в противном случае. Удобства, которые мы включили в качестве функций, приведены в таблице ниже:

Название и резюме

Другими функциями, которые мы хотели использовать, были заголовок и сводка, созданные хозяином для листинга Airbnb. Нашей команде было любопытно посмотреть, как определенные прилагательные в заголовке и резюме могут повлиять на цену и количество отзывов для каждого листинга. Для этого мы сначала объединили столбцы заголовка и сводки вместе и создали столбец «текст». Затем мы использовали сценарий Python, чтобы разбить строки в столбце «текст» на отдельные слова, и провели частотный анализ отдельных слов. После того, как мы отсортировали слова от самой высокой до самой низкой частоты, мы просмотрели каждое слово и попытались найти соответствующие прилагательные или слова, которые упоминались чаще всего. Мы выбрали 18 прилагательных с наибольшей частотой упоминания. Выбранные слова и соответствующие им частоты включены в таблицу ниже.

После выбора этих 18 прилагательных мы создали 18 столбцов, по одному для каждого слова, в нашем наборе данных Airbnb. Если в заголовке или сводке списка было слово, то столбец помечался цифрой 1, а в противном случае — 0. Например, если в списке есть слово «современный» в столбце «текст» (заголовок и сводка объединены), то для этой строки современный столбец будет иметь 1.

Связывание наборов данных

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

Перепись

Данные переписи населения Нью-Йорка были объединены с данными списка на основе местоположения списка. В данных переписи были участки переписи, представленные каждой строкой, которая содержит подробную информацию об этом месте. Мы использовали Census Geocode API, который размещал каждый список на основе

координаты широты и долготы в пределах географической границы каждого переписного участка. Отсюда мы могли бы объединить данные с нашим airbnb по этим участкам переписи. Однако недостатком этого API была скорость обработки каждого запроса. Нам пришлось оставить API включенным на ночь, чтобы обработать около 50 000 объявлений. Первоначально мы надеялись объединить несколько наборов данных с данными переписи и, таким образом, еще больше расширить измерения, на которые мы могли смотреть. Однако это казалось неосуществимым, учитывая медленную скорость API в сочетании с размером интересующих нас наборов данных.

Преступление

Серьезным препятствием в нашей предварительной обработке был тот факт, что у нас не было естественной общей «коробки», в которую можно было бы поместить данные о преступлениях и наши списки Airbnb. Хотя 96,9 % преступлений были даны нам с точной широтой и долготой, единственным указанием на более крупную территорию, где было совершено каждое преступление, был участок. И, к сожалению, у нас не было удобного API для сопоставления географических координат листинга Airbnb с участком. Это оставило нас без метода сопоставления списков Airbnb с тем, сколько преступлений произошло поблизости. Пришлось творчески подойти к решению этой задачи.

Во-первых, мы разделили Нью-Йорк на сетку 50x50, чтобы сделать 2500 маленьких прямоугольников, чтобы сгруппировать преступные действия в зависимости от того, где они произошли. Затем мы подсчитали количество преступлений для каждой ячейки, отражающее количество преступлений, совершенных в этой ячейке, и тяжесть этих преступлений.

Оценка преступности = 5 * нет. уголовных преступлений + нет. проступков + 0,1 * кол. нарушений

У нас осталось около 900 ящиков (значительное количество наших ящиков упало за пределами Нью-Йорка или над морем, и, следовательно, в них не было зарегистрировано никаких преступлений). Затем мы поместили каждый список в каждое поле на основе координат широты и долготы. Функция, которую мы добавили в наш общий набор данных, — это оценка преступности в зависимости от того, в какой географический блок попадает листинг.

Наш окончательный набор данных

После нашего процесса разработки функций наш общий набор данных включал около 30 функций. Эти особенности и небольшое описание приведены ниже.

Метрика оценки

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

Выбор модели

Почему мы выбрали Light GBM?

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

Настройка гиперпараметров с использованием GridSearchCV

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

Другие гиперпараметры включают learning_rate и n_estimators. Learning_rate относится к тому, насколько медленно модель повышения градиента обучается, регулируя размер набора, который она создает на каждой итерации. Снижая скорость обучения, мы замедляем процесс обучения, чтобы достичь наилучшего оптимума. N_estimators — это количество бустинг-деревьев.

Чтобы настроить эти гиперпараметры, мы использовали GridSearchCV, который подбирает наши данные, используя все возможные комбинации параметров в нашей сетке параметров, и выводит набор параметров с наименьшим RSME. Во время каждой подгонки он выполняет 5-кратную перекрестную проверку наших данных. Мы запускали много GridSearchCV, корректируя нашу сетку параметров, пока не нашли модель с наименьшим RMSE.

Окончательные модели

Ценовая модель

После разработки признаков легкая модель GBM работала значительно лучше, чем в предыдущих испытаниях. Мы установили K-кратность на 5, и показатель RMSE стал намного ниже, чем раньше, и мы увеличили показатель R-квадрата до 0,484. Это было тогда, когда мы поняли, что простое добавление связанных функций здесь не может улучшить оценки. Но когда мы выбрали наиболее связанные, мы действительно могли улучшить модель.

Лучшие параметры и лучший показатель RMSE:

Важность функции:

Отзывы Модель

Чтобы предсказать, как часто бронируется жилье Airbnb, нам нужно было выяснить зависимую переменную, которую мы могли бы использовать, поскольку Airbnb не публикует данные о бронировании. Поэтому мы использовали число_отзывов в качестве нашей цели для разработки модели, которая предсказывает, как часто листинг бронируется. На сайте Airbnb отзыв может оставить только гость, который ранее забронировал проживание в этом конкретном жилье. Таким образом, мы можем предположить, что большее количество отзывов, оставленных для определенного объявления, является надежным показателем того, сколько раз это объявление было забронировано гостем. Кроме того, согласно сайту Inside Airbnb (с которого мы получили наш набор данных), было указано, что, как правило, количество отзывов, умноженное на коэффициент 5, имело тенденцию хорошо ассоциироваться с реальными показателями бронирования для списков.

Основываясь на том, что у нас было для ценовой модели, нам было легко запустить аналогичную модель для number_of_reviews. Мы также установили K-кратность на 5, и показатель RMSE был относительно низким. Это означает, что эта модель будет лучшей по количеству отзывов. И, наконец, мы довели показатель R-квадрата до 0,452.

Лучшие параметры и лучший показатель RMSE:

Важность функции:

Инсайты

Удобства

Что касается функций удобства, мы запустили две модели, чтобы определить важность каждой функции с точки зрения ее влияния на цену и количество отзывов. Сначала мы использовали модель Light GBM только с удобствами, чтобы увидеть важность каждой функции. Ниже приведены два графика, которые мы создали, чтобы проиллюстрировать важность каждой функции:

Цена и 21 удобство

Количество отзывов и 21 удобство

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

Цена и 21 удобство

Количество отзывов и 21 удобство

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

Название и сводка

Что касается названия и резюме, чтобы понять, как выбранные 18 прилагательных влияют на цену и количество отзывов, нам пришлось создать две отдельные модели, одну с использованием 18 прилагательных как X и цену как y, а другую с использованием 18 прилагательных как X и количество отзывов как y. Нашей целью было добиться двух вещей.

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

Рейтинг по важности функций с использованием LightGBM

Мы решили использовать GridSearchCV с LightGBM, чтобы ранжировать прилагательные по их влиянию на цену и количество отзывов.

Коэффициенты с использованием линейной регрессии

Мы попробовали как модель Linear_Regression Sklearn, так и модель Original Least Squares (OLS) Statsmodels.api, чтобы запустить линейную регрессию, используя эти 18 прилагательных в качестве независимой переменной. Однако мы увидели, что OLS statsmodel имеет более высокое значение R-квадрата, и поэтому решили использовать statsmodel.api вместо модели линейной регрессии sklearn.

Цена и 18 прилагательных

После запуска GridSearchCV с LightGB для 18 прилагательных как X и цены как y мы получили оценку RMSE 344,8. Затем, используя feature_importances_ и сортировку по убыванию, мы получили график 18 прилагательных в порядке убывания важности признаков.

Слова «уединенный, тихий, чистый и сердечный» были четырьмя наиболее важными прилагательными, влияющими на цену листинга. Такие слова, как «яркий, идеальный, солнечный и доступный», не были так важны для определения цены. Чтобы выяснить, оказали ли эти слова положительное или отрицательное влияние на цену, мы провели линейную регрессию и нанесли коэффициенты каждого прилагательного на график.

Из этого графика видно, что слово «сердце» оказало наибольшее положительное влияние на цену с коэффициентом 99,9. Тогда у «привата» был второй по величине положительный коэффициент 52,1. Глядя на отрицательные коэффициенты, было действительно интересно увидеть, что слова «яркий» и «солнечный» оказали наибольшее негативное влияние на цену. «Яркий» имел коэффициент -70,8, а «солнечный» — -101.

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

Количество отзывов и 18 прилагательных

Количество отзывов — это наш показатель для определения количества бронирований для конкретного объявления. После запуска GridSearchCV с LightGB для 18 прилагательных как X и количества отзывов как y мы получили оценку RMSE 46,9. Это было действительно неожиданно для нас, потому что оценка RMSE была намного ниже, чем когда 18 прилагательных использовались для прогнозирования цены. Просто сравнив эти две оценки RMSE (18 прилагательных с ценой и 18 прилагательных с количеством отзывов), мы обнаружили, что прилагательные, которые хост использует в своем заголовке или резюме, влияют на количество отзывов о листинге больше, чем на цену.

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

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

После запуска линейной регрессии мы нанесли коэффициенты каждого прилагательного на график.

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

В отличие от анализа, который мы провели по цене, количество отзывов, включая заголовок или сводку со словами «частный» или «тихий», соответствует большему количеству отзывов. Это может указывать на то, что наличие частного или тихого места для проживания важнее, чем местонахождение Airbnb, например, находится ли жилье в центре города, когда люди бронируют номер. Включение таких слов, как «яркий» и «солнечный», соответствует меньшему количеству отзывов. В заключение, мы рекомендуем, чтобы хозяева размещали свои объявления с такими прилагательными, как частный, тихий, сердечный, чистый и отличный либо в заголовке, либо в резюме, чтобы увеличить количество отзывов или количество бронирований их объявления Airbnb.

Мы хотели глубже изучить это прилагательное «сердце», поскольку оно входит в тройку лучших моделей, положительно коррелирующих как по цене, так и по количеству отзывов. Мы использовали столбцы долготы и широты в данных Airbnb, чтобы нанести объявления на карту Нью-Йорка. Вот карта, которую мы построили.

Размер кругов указывает на количество отзывов, а цвет кружков указывает на цену. Чем больше отзывов, тем больше круг. Чем теплее цвет круга, тем выше цена. Как мы и ожидали от приведенного выше анализа с использованием lightGGBM и линейной регрессии, мы обнаружили, что «сердце» Нью-Йорка, то есть область, отмеченная желтым кружком, имеет более крупные круги или большее количество отзывов. Таким образом, мы можем сделать вывод, что включение слова «сердце» в резюме или название, или расположение вашего объекта в центре Нью-Йорка соответствует более высокой цене и количеству отзывов.

Примечание.Важно отметить, что мы изолировали эти 18 прилагательных и 21 услугу от всех других функций в нашем наборе данных Airbnb, потому что мы хотели увидеть влияние только этих прилагательных на цену и количество отзывы. Модели, которые использовались для получения этих результатов и коэффициентов, имели только прилагательные или удобства в качестве зависимой переменной и цену или количество отзывов в качестве независимой переменной. Таким образом, коэффициенты и важный анализ характеристик, который мы провели выше, применимы к случаям, когда характеристики изолированы только от этих прилагательных и удобств. Когда мы создали нашу окончательную модель, мы создали набор данных со всеми лучшими предикторами из каждого набора данных (Airbnb, Census, Crime) и этими выбранными прилагательными и удобствами, чтобы определить общее влияние каждой из этих функций на цену и количество отзывов. .

Преступление

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

Более теплые цвета на этой карте обозначают более высокую плотность преступности, в то время как более холодные цвета (переходящие в ничто) означают низкий или нулевой показатель преступности. Легко понять, что в нижнем Манхэттене очень высокий уровень преступности, за ним следует район Гарлема и, в меньшей степени, Бруклин. Статен-Айленд исторически был одним из регионов с самым низким уровнем преступности, и это также отражено здесь.

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

На этом графике каждая точка соответствует переписному участку (https://en.wikipedia.org/wiki/Census_tract), а размер каждой точки соответствует численности населения в каждом из этих участков. Чем ближе большие точки друг к другу, тем выше плотность населения. Легко заметить, что в Квинсе и Статен-Айленде низкий уровень как преступности, так и плотности населения. Кроме того, в центральном Бруклине и Бронксе средний уровень как преступности, так и плотности населения. Кажется очевидным, что наша гипотеза оправдалась.

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

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

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

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

Результаты выбранных функций

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

host_is_superhost

На Airbnb есть два статуса хоста: базовый и суперхозяин. Суперхозяин — это опытный хозяин, который подает блестящий пример другим хозяевам и дарит невероятные впечатления своим гостям. (https://www.airbnb.com/help/article/828/what-is-a-superhost) Эта функция оказалась неожиданно бесполезной в нашей модели и не была сильной функцией, которая повлияла на нашу цену или количество отзывов. . Основываясь на нашем личном опыте, мы предполагаем, что опытные хозяева могут брать больше за свои объявления. Однако это не отражалось в метрике суперхозяина.

Доход на душу населения

A.k.a доход на душу населения. Эта функция исходит из набора данных переписи. На самом деле в наборе данных переписи есть 4 данных, связанных с доходом, включая доход, ERR дохода, доход на душу населения, ERR дохода на душу населения. Во время отбора мы действительно обнаружили, что доход на душу населения был лучшим среди всех четырех характеристик. Мы предполагаем, что, поскольку данные нашей переписи были получены на основе информации, полученной от всех жителей этой области, принявших участие в опросе правительства, доход на душу населения может показать это лучше всего.

Скорость ответа хоста

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

Вывод

Для этого проекта мы пробовали разные модели, включая XGBoost и линейную регрессию, но, в конце концов, решили использовать легкий GBM, поскольку наш набор данных был огромным, особенно после объединения всех имеющихся у нас наборов данных. После того, как мы много работали над проектированием признаков, полученный RMSE был значительно лучше, чем наше первоначальное испытание с нашим исходным набором данных. Это означает, что добавление данных извне, если наш набор данных, помогло нам улучшить модель. Кроме того, обнаружение ключевых особенностей подчеркивания из разных областей может оказать большое влияние на окончательную модель. Тем не менее, есть еще кое-что, что мы могли бы сделать, но не сделали из-за ограниченного времени. Модель, которую мы использовали, может быть наиболее разумной и применима только к Нью-Йорку. Поскольку города по всему миру были совершенно разными, не было бы необходимости строить единую модель для всех городов, поскольку модель либо переобучала бы, либо имела бы очень низкую точность. Кроме того, из-за нехватки времени мы могли строить модели только на основе имеющихся у нас данных, хотя они уже были огромными. Но в будущем мы все еще можем исследовать другие комбинации функций в нашей модели, чтобы увидеть, имеют ли они более высокий показатель точности.

использованная литература

Наборы данных

Этапы предварительной обработки

Census Geocode (Census API) - https://pypi.org/project/censusgeocode/

Репозиторий GitHub

https://github.com/abhi-vik/bds-proj