Вместо того, чтобы просыпаться от упущенной из виду таблички Не беспокоить, путешественники Airbnb обнаруживают, что поднимаются с птицами в причудливом домике на дереве, пьют утренний кофе на палубе плавучего дома или готовят общий региональный завтрак со своими хозяевами.
Новые пользователи Airbnb могут забронировать жилье в более чем 34 000 городов в более чем 190 странах. Точно предсказывая, где новый пользователь забронирует свое первое путешествие, Airbnb может делиться более персонализированным контентом со своим сообществом, сокращать среднее время до первого бронирования и лучше прогнозировать спрос.
В этом соревновании Kaggle Airbnb предлагает вам предсказать, в какой стране новый пользователь совершит первое бронирование.
Содержание:
- Бизнес-проблема
- Использование ML
- Источник данных
- Существующие подходы
- Мои улучшения
- EDA
- Первое решение
- Сравнение моделей
- Kaggle Скриншот
- Будущая работа
- использованная литература
- Github Repo
- Профиль в 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) Доля пользователей-женщин во Франции больше, чем пользователей-мужчин.
- Мы можем дифференцировать страны в зависимости от возраста пользователей.
- Мы можем различать страны на основе общего времени, затрачиваемого пользователями на выбор страны.
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. Ссылки
- Https://pdfs.semanticscholar.org/cbaf/ddba61d0ed622c0ace6c9c80ae4b2d6df58b.pdf
- 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/.