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

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

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

Содержание:

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

1. Деловая проблема

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

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

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

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

Мы будем использовать методы машинного обучения, чтобы предсказать, где новый пользователь забронирует свой первый пункт назначения, а также 4 других наиболее вероятных пункта назначения, используя оценку NDCG - https://www.kaggle.com/c/airbnb-recruiting-new- бронирования / обзор / оценка .

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

Набор данных взят со страницы конкурса kaggle - https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings/data.

  • В этой задаче нам дается список пользователей с их демографическими данными, записями веб-сеансов и некоторой сводной статистикой. Вас просят предсказать, в какой стране будет первое место для бронирования нового пользователя. Все пользователи в этом наборе данных из США.
  • Существует 12 возможных исходов страны назначения: «US», «FR», «CA», «GB», «ES», «IT», «PT», «NL», «DE», «AU», «NDF» (пункт назначения не найден) и «другое». «NDF» отличается от «other», потому что «other» означает, что бронирование было, но относится к стране, не включенной в список, а «NDF» означает, что бронирования не было.
  • Набор данных состоит из: Train_users.csv, Sessions.csv, Country.csv, Age_gender_bkts.csv.

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

  • Данные сеансов имеют журнал веб-сеансов для пользователей - как для поездов, так и для тестовых наборов.
  • user_id: присоединяется к столбцу «id» в таблице пользователей
  • действие
  • action_type
  • action_detail
  • тип устройства
  • secs_elapsed

Но проблема в том, что только 35% пользователей поезда имеют данные сеанса вместе с 99% пользователей из тестовых данных.

Теперь либо мы могли бы использовать только данные поезда без использования данных сеанса, либо отбросить 65% данных поезда и использовать данные сеанса.

Люди, которые использовали первый подход, получили относительно низкую оценку по сравнению со вторым подходом.

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

  • Используйте данные Train.csv и Session.csv для извлечения функций и разработки функций.
  • В сеансе csv есть несколько записей для каждого идентификатора / пользователя, где каждая запись фиксирует действия пользователей и время, потраченное на их выполнение на airbnb.
  • Я сопоставил все действия в одном поле и использовал векторизатор TF-IDF, чтобы зафиксировать распространенность и редкость каждого действия.
  • Инженерные функции в столбцах возраста и даты.

6. EDA

Одномерный анализ

1) Набор данных сильно несбалансирован.

2) Большинство пользователей не бронировали билеты или ездили только в США.

1) Большинство пользователей регистрируют приложение через Интернет.

2) iOS занимает второе место по популярности.

2) "Moweb" и "Android" имеют самую низкую долю.

1) Большинство пользователей используют Mac или рабочий стол Windows в качестве первого устройства для бронирования.

2) Следующими по популярности идут iPhone и iPad.

1) Популярность Airbnb с 2010 по 2014 год росла в геометрической прогрессии.

2) Провал в 2014 году означает, что данные испытаний были взяты с 2014 года.

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

1) Большинство пользователей едут в «другие страны» после NDF и США.

2) Доля пользователей-женщин во Франции больше, чем пользователей-мужчин.

  1. Мы можем дифференцировать страны в зависимости от возраста пользователей.

  1. Мы можем различать страны на основе общего времени, затрачиваемого пользователями на выбор страны.

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

  • В моем первом сокращенном решении я сначала преобразовал данные сеанса из нескольких записей для каждого пользователя в одну запись для каждого пользователя.
  • Извлечение функций, таких как час, день, неделя, месяц и год, из столбцов date_account_created и first_active для каждого пользователя.
  • Создание 5-летних интервалов для столбца «Возраст».
  • Преобразование всех категориальных переменных в одну функцию с горячим кодированием.
  • Наконец, TF-IDF векторизация текстовых столбцов.

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

  • Протестировал набор данных на 3 моделях ML -
  • С помощью логистической регрессии я получил оценку поезда ndcg 0,8157.
  • С Random Forest я получил оценку поезда ndcg 0,9511. Но на тестовом наборе он не работал так хорошо, как дал мне - 0,88107 из-за переобучения на наборе поездов.

  • Наконец, с Xgboost я получил оценку train ndcg 0.9066.

  • Из графика важности функции модели мы видим, что за исключением timestamp_first_active_hour, age и date_account_created_day, все остальные функции взяты из данных сеанса.

9. Скриншот Kaggle

  • Модель Xgboost дала лучший частный результат - 0,88429, что составляет 13% от рейтинга.

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

  • Более строгая настройка гиперпараметров.
  • Функции Bigram и Trigram используют векторизатор TF-IDF, который значительно увеличит размерность и сложность модели, но может дать лучший результат.
  • Использование методов глубокого обучения, таких как LSTM, для сбора информации о временных рядах из столбцов действий.

11. Ссылки

  1. Https://pdfs.semanticscholar.org/cbaf/ddba61d0ed622c0ace6c9c80ae4b2d6df58b.pdf
  2. Https://www.divaportal.org/smash/get/diva2:1108334/FULLTEXT01.pdf

3. https://athena.ecs.csus.edu/~shahb/docs/report.pdf

4. https://pdfs.semanticscholar.org/ca3f/b5f8615a777be4126d75e2dc28d3bee69eee.pdf

5. https://www.appliedaicourse.com/

12. Репозиторий Github

Ссылка на мой репозиторий на github - https://github.com/pc90/Airbnb-New-User-Bookings---Kaggle-Competition.

13. Профиль Linkedin

Ссылка на мой профиль в Linkedin - https://www.linkedin.com/in/puneet-chandna-050486131/.