Вместо того, чтобы просыпаться от незамеченных табличек «Не беспокоить», путешественники Airbnb просыпаются с птицами в причудливом домике на дереве, пьют утренний кофе на палубе плавучего дома или готовят общий региональный завтрак с хозяевами.
Новые пользователи Airbnb могут забронировать жилье в более чем 34 000 городов в более чем 190 странах. Точно прогнозируя, где новый пользователь забронирует свое первое путешествие, Airbnb может делиться более персонализированным контентом со своим сообществом, сокращать среднее время до первого бронирования и лучше прогнозировать спрос.
В этом конкурсе kaggle Airbnb предлагает вам предсказать, в какой стране новый пользователь сделает свое первое бронирование.
Содержание:
- Бизнес-проблема
- Использование машинного обучения
- Источник данных
- Существующие подходы
- Мои улучшения
- Исследовательский анализ данных
- Решение для первого разреза
- Сравнение моделей
- Каггл Скриншот
- Будущая работа
- использованная литература
- Репозиторий Github
- Профиль 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. Ссылки
- https://www.appliedaicourse.com/
- https://towardsdatascience.com/predicting-destination-countries-for-new-users-of-airbnb-eb0d7db7579f
- https://towardsdatascience.com/a-machine-learning-approach-building-a-hotel-recommendation-engine-6812bfd53f50
- https://medium.com/sfu-cspmp/recommendation-systems-user-based-collaborative-filtering-using-n-nearest-neighbors-bf7361dc24e0
- https://www.diva-portal.org/smash/get/diva2:1108334/FULLTEXT01.pdf
- https://datascience.stackexchange.com/questions/36862/macro-or-micro-average-for-imbalanced-class-problems
12. Репозиторий на Гитхабе
Ссылка на мой репозиторий Github — https://github.com/swadesh46/Airbnb/tree/main
13. Профиль в LinkedIn
Профиль Linkedin — https://www.linkedin.com/in/swadesh-kothari-59934b128
Почтовый идентификатор — [email protected]