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

Новые пользователи Airbnb могут забронировать жилье в более чем 34 000 городов в более чем 190 странах. Точно прогнозируя, где новый пользователь забронирует свое первое путешествие, Airbnb может делиться более персонализированным контентом со своим сообществом, сокращать среднее время до первого бронирования и лучше прогнозировать спрос.

В этом конкурсе kaggle Airbnb предлагает вам предсказать, в какой стране новый пользователь сделает свое первое бронирование.

Содержание:

  1. Бизнес-проблема
  2. Использование машинного обучения
  3. Источник данных
  4. Существующие подходы
  5. Мои улучшения
  6. Исследовательский анализ данных
  7. Решение для первого разреза
  8. Сравнение моделей
  9. Каггл Скриншот
  10. Будущая работа
  11. использованная литература
  12. Репозиторий Github
  13. Профиль Linkedin

1. Бизнес-проблема

Airbnb, Inc. — американская компания, занимающаяся онлайн-рынком аренды жилья для отдыха, базирующаяся в Сан-Франциско, Калифорния, США. Airbnb поддерживает и размещает торговую площадку, доступную для потребителей на своем веб-сайте или через приложение. С помощью сервиса пользователи могут организовывать жилье, в первую очередь дома, и туризм или размещать свою недвижимость для сдачи в аренду. Airbnb не владеет ни одним из перечисленных объектов; вместо этого он получает прибыль, получая комиссию с каждого бронирования.

Новые пользователи Airbnb могут забронировать жилье в более чем 34 000 городов в более чем 190 странах. Точно прогнозируя, где новый пользователь забронирует свое первое путешествие, Airbnb может делиться более персонализированным контентом со своим сообществом, сокращать среднее время до первого бронирования и лучше прогнозировать спрос.

В этом конкурсе kaggle Airbnb предлагает вам предсказать, в какой стране новый пользователь сделает свое первое бронирование.

2. Использование машинного обучения

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

Мы будем использовать оценку NDGC в качестве метрики для оценки эффективности модели — https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings/overview/evaluation.

3. Источник данных

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

Возможны 12 вариантов страны назначения: «США», «FR», «CA», «GB», «ES», «IT», «PT», «NL», «DE», «AU», «NDF» (пункт назначения не найден) и «другое». Обратите внимание, что «NDF» отличается от «другое», потому что «другое» означает, что бронирование было, но в страну, не включенную в список, а «NDF» означает, что бронирования не было.

Наборы для обучения и тестирования разделены по датам. В тестовом наборе вы предскажете всех новых пользователей с первыми действиями после 01.07.2014 (примечание: это обновлено 05.12.15, когда соревнование возобновилось). В наборе данных сеансов данные датируются только 01.01.2014, а набор данных пользователей датируется 2010 годом.

4. Существующие подходы

  • Набор данных сеанса содержит журналы истории пользователей и содержит как обучающие, так и тестовые пользовательские данные. Только 30% пользователей являются общими между наборами данных «train_users» и «session», остальные все пользователи принадлежат к тестовому набору данных.
  • Из-за недоступности данных сеанса для максимального количества пользователей некоторые люди обучали модель, рассматривая только набор данных «train_users» (специфический для пользователя набор данных-train_users_2.csv).
  • Некоторые обучали модель, рассматривая всех пользователей поезда и соответствующие данные сеанса. Но этот подход дает окончательный набор данных с большим количеством значений ячеек как нулевой.
  • Люди, использовавшие вышеуказанный подход, получили относительно более низкие баллы по сравнению с более поздними подходами.

5. Мои улучшения

  • Разработка базовых функций в области, связанной с датами, например, извлечение дня, даты, месяца и года.
  • Разделение пользователей по возрасту на молодые, средние, старые и неизвестные категории.
  • Как мы знаем, набор данных сеанса имеет несколько записей для одного и того же пользователя. Поэтому мы сначала преобразуем его в одну строку для каждого пользователя путем объединения полей «action», «action_type», «Device_type» и суммирования «sec_elapsed» для каждого пользователя.
  • Рассчитайте перекос, эксцесс, стандартное отклонение, дисперсию, максимум, минимум, среднее значение «sec_elapsed» для каждого пользователя.

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

  • Как показано на приведенных выше графиках, поле набора данных «train_users»: «date_first_booking», «age» и «first_affilate_tracked» содержат нулевые значения.

→ Функция «date_first_booking»: ~ 58% нулевых значений

→ Функция «возраст»: ~ 41% нулевых значений

→ Функция «first_affilate_tracked»: ~ 2% нулевых значений

  • Как показано на приведенных выше графиках, максимальное значение признака возраста — 2014, а минимальное — 1, что не соответствует допустимому возрасту. Это может быть либо год рождения, либо текущий год.
  • Функция возраста имеет 41% нулевых значений.
  • На приведенной выше диаграмме «ES» и «PT» могут быть разделены на некотором уровне. Пользователи в возрасте от 30 до 34 лет предпочитают их в качестве страны назначения.

  • На приведенном выше графике распределение «Метод регистрации пользователя» почти одинаково для всех пользователей, где «Базовый» самый высокий для всех стран.

  • На приведенном выше графике мы заметили, что почти 95% пользователей предпочитают английский как язык, поскольку максимальное количество путешественников из «США».

  • Данные сильно несбалансированы, поскольку большинство путешественников предпочитают «США», а наименее предпочтительным является «Португалия».

  • Airbnb начал быстро расти в период с 2010 по 2014 год.

  • Большинство клиентов предпочли «Windows» или «Mac» в качестве первого устройства для бронирования.

Двумерный анализ:

  • На приведенном выше графике пользователи в возрасте от 25 до 30 лет из категории «Другие» предпочитают посещать страны «CA» и «NL», а возрастная группа от 45 до 50 лет предпочитает посещать «IT».
  • Женщины в возрасте от 25 до 30 лет предпочитают посещать «PT» и «NL».

7. Первое решение

  • Первая задача — преобразовать данные сеанса с несколькими записями в 1 запись для каждого пользователя.
  • Это можно сделать, сгруппировав идентификаторы пользователей и преобразовав несколько записей полей «action», «action_type», «action_details» в текстовую форму.
def conv_to_strings(items):
 items = [ str(i) for i in items ]
 items = [ re.sub('nan','',i) for i in items ]
 items = ' '.join(items)
 return items
def conv_to_strings_unique(items):
 items = [ str(i) for i in items ]
 items = [ re.sub('nan','',i) for i in items ]
 items = ' '.join(set(items))
 return items
#Below code is for sec_elapsed field replace null to 0.
def replace_nan_to_0(items):
 items = [ 0 if math.isnan(i) else i for i in items ]
 return items
  • Применил TFIDF и метод набора слов для лучшего проектирования функций.
  • Извлеките день, дату, год, месяц и примените метод «горячего кодирования».
  • Учитывайте допустимый возраст в диапазоне от 15 до 95 лет, а остальным значениям присваиваются нулевые значения. Разделение возраста на категории «старый», «средний», «молодой» и «неизвестный» (нулевые значения) с учетом интервалов 20.
def set_age_group(x):
 if x < 40:
 return 'Young'
 elif x >=40 and x < 60:
 return 'Middle'
 elif x >= 60 and x <= 95:
 return 'Old'
 else:
 return 'Unknown_age'

8. Сравнение моделей

  • Я обучил модель с использованием логистической регрессии, случайного леса, XGBoost и CataBoost и получил следующую оценку NDGC. Приведенная ниже оценка указана с учетом минимальных потерь нескольких журналов, и модель была обучена путем разделения фактических данных поезда на поезд, тест и CV, чтобы получить лучшую модель. Позднее представление будет выполнено путем обучения модели всему фактическому набору данных поезда, указанному в наборе данных kaggle:

  • Из приведенной выше модели наивысшая оценка NDGC была дана моделью CataBoost.

9. Скриншот Kaggle

CataBoost дал лучшую частную оценку NDGC 0,88402

10. Будущая работа

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

11. Ссылки

12. Репозиторий на Гитхабе

Ссылка на мой репозиторий Github — https://github.com/swadesh46/Airbnb/tree/main

13. Профиль в LinkedIn

Профиль Linkedin — https://www.linkedin.com/in/swadesh-kothari-59934b128

Почтовый идентификатор — [email protected]