Привет!! Приятно видеть Вас снова! Я надеюсь, что все хорошо, хотя не все будет хорошо✌️! Сегодня я расскажу об отмене бронирования отеля. Знаете ли вы, что отмененные заказы могут привести к тому, что отель потеряет 15% выручки? Это действительно большое влияние! Один из способов свести к минимуму это — заранее предсказать, какие клиенты отменят свои заказы, а какие нет, с помощью моделей машинного обучения. Используя модель машинного обучения, отель может проводить маркетинг для клиентов, которые, по прогнозам, будут отменять заказы, чтобы отель не терял клиентов, что может привести к снижению доходов. Давайте углубимся в сегодняшнюю статью!

Понимание бизнес-проблем

1. Контексты
Есть компания, занимающаяся гостиничным бизнесом, в частности отелями, и расположенная в Португалии. У нее есть набор данных, который был извлечен из базы данных отелей Property Management System или сокращенно PMS. Индустрия гостеприимства больше ориентирована на удовлетворение потребностей клиентов. Согласно Большой четверке, существуют различные индустрии гостеприимства, такие как еда и напитки, путешествия и туризм, жилье и отдых. Гостиничный бизнес входит в гостиничный бизнес, одна из проблем, которая часто возникает в гостиничном бизнесе, — это отмена заказов клиентами. Один из способов забронировать номера в этом отеле — сделать бронирование заранее до даты пребывания.

2. Заинтересованные стороны проекта
1. Отдел маркетинга и продаж: этот отдел отвечает за максимизацию дохода за счет реализации нескольких маркетинговых стратегий (например, рекламных акций/скидок) для клиентов, так что с помощью этой модели отдел маркетинга и продаж может найти подходящих клиентов, которым будут предоставлены рекламные акции. /discounts.
2. Финансовый отдел. Одной из обязанностей финансового отдела является управление финансовыми доходами и расходами компании, одна из которых связана с рекламными акциями/кампаниями. осуществляется отделами маркетинга и продаж.

По сути, эти два отдела взаимосвязаны и решают один и тот же вопрос: как максимизировать доход компании.

3. Постановка проблемы
Есть несколько проблем, которые часто возникают в гостиничном бизнесе, одна из которых — отмена сделанных заказов. На основе приведенной ниже ссылки глобальный коэффициент отмены составлял 33% в 2014 г. и 40% в 2018 г., в то время как в этом наборе данных уровень отмены составляет около 37%. Это показывает увеличение количества отмен в те годы и, конечно же, негативно сказывается на доходах компании. Потери дохода из-за отмененных заказов могут достигать 15 %.

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

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

5. Аналитический подход
Итак, я проанализирую данные, чтобы найти шаблоны, которые отличают клиентов, которые отменяют заказы или нет.

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

6. Оценка метрики
Цели анализа можно разделить на следующие категории (is_canceled):
1: отмененные заказы (положительные)
0 : неотмененные заказы (отрицательные)

Ошибка типа I: ложное срабатывание
Состояние, при котором ожидается, что клиент отменит заказ, хотя на самом деле он этого не сделал.
Последствие: рекламная акция не соответствует цели, поэтому доход не максимизируется. Без маркетинга отель может получить 101 доллар США.

Ошибка типа II: ложноотрицательный результат
Состояние, при котором предполагается, что клиент не отменит заказ, а фактически отменит заказ.
Последствия: отель теряет потенциальных клиентов и Конечно, это влияет на потерю дохода. Основываясь на приведенной ниже ссылке, средняя стоимость маркетинга составляет 7%-11%. Таким образом, в худшем случае отель получает доход в размере 90 долларов США после вычета 11% расходов на маркетинг.

Поэтому, основываясь на вышеизложенном, мы сделаем все возможное, чтобы создать модель, которая сможет предсказать как можно больше правильных положительных и отрицательных классов и свести к минимуму ошибку типа I и ошибку типа II. Таким образом, основной используемой метрикой будет Balanced Accucary.

Понимание данных

Набор данных, который я использую, доступен здесь! Я также предоставить оригинал здесь!

Набор данных состоит из 83573 строк и 11 столбцов. В столбце страны 0,42% пропущенных значений и 73371 повторяющаяся строка.

Числовые столбцы:
 – Дискретные: предыдущие_отмены, изменения_бронирований, список_дней_ожидания, требуемые_места_парковки_автомобилей, общее_из_особых_запросов
 – Непрерывные: –

Категориальные столбцы:
- Номинал: страна, сегмент_рынка, тип_депозита, тип_клиента, тип_зарезервированного_номера, is_canceled
- Порядковый номер: -

  1. Числовые переменные

Во всех столбцах дискретных переменных значение 0 доминирует над другими значениями. Для дальнейшей обработки будет выполнена дискретизация. В столбце required_car_parking_spaces есть двумерные (указывающие на многомерные выбросы) выбросы, есть клиенты, которые запрашивают 8 парковочных мест в списке ожидания 0 и 100 дней (не подтверждено отелем). Столбец booking_changes не будет использоваться в процессе моделирования, поскольку это не подходит, если модель будет развернута позже, поскольку при поступлении данных у клиента не должно быть внесла изменения в бронирование.

2. Числовые переменные

В каждом столбце есть категории, которые доминируют, а некоторые категории составляют меньшинство или доля данных невелика. В столбце market_segment преобладает категория Online TA. Это означает клиентов, которые размещают заказы в онлайн-турагентствах. В столбце deposit_type преобладает категория «Без депозита», многие клиенты не вносят депозит первыми. В столбце customer_type клиентов, размещающих заказы, не входящие в группу или договор, больше, чем остальных. Многие клиенты бронируют номер типа А.

Количество клиентов, чья страна происхождения не Португалия и которые не отменили заказ, больше, чем клиентов, чьей страной происхождения является Португалия. Количество клиентов, родиной которых является Португалия, и отменённых заказов больше, чем количество клиентов, родиной которых не является Португалия. НО столбец страны — это страна происхождения клиента, и если это учитывать при моделировании, то оно будет субъективным. Страна происхождения в этом случае не является страной постоянного проживания клиента. Таким образом, возможно иметь клиента из страны А, но не проживающего в стране А.

3. Проверить ярлык дисбаланса

В этом наборе данных есть метка imbalance, поэтому один из способов преодолеть это — использовать показатель оценки, устойчивый к дисбалансу набора данных. В этом случае я использую показатель оценки Сбалансированная точность. Уровень отмены в этом наборе данных составляет 36%, или можно сказать, что 4 из 10 заказов отменяются.

Основываясь на приведенных ниже ссылках, существует несколько факторов, которые могут повлиять на то, чтобы клиент отменил заказ, в том числе:

  • Тип места, забронированного клиентом
  • Платформа, используемая для размещения заказа или через которую клиент разместил заказ
  • Тип клиента (группа или индивидуальный)
  • Ранее отмененные заказы
  • Разница между временем бронирования и датой прибытия

Вышеупомянутые данные уже содержатся в наборе данных, например, customer_type, зарезервированный_тип_комнаты, предыдущие_отмены и рыночный_сегмент. Таким образом, можно сказать, что этот набор данных может решить бизнес-задачу, которая была определена в начале. Следующим шагом является подготовка данных, а затем создание модели машинного обучения для поиска моделей клиентов, которые отменяют заказы, и клиентов, которые не отменяют заказы. В данном наборе данных столбец, содержащий значение разницы между временем бронирования и датой прибытия, не был предоставлен, поэтому я взял данные из исходной статьи. .

Подготовка данных

  1. Добавлен столбец lead_time
# drop duplikat pada dataset asli berdasarkan dengan subset kolom yang sudah disediakan
data_full = pd.read_csv("../data/raw/hotel_bookings.csv")
data_full = data_full.drop_duplicates(subset=list(data.columns))

# proses merge untuk pengambilan kolom lead_time
data = pd.merge(data, data_full, on=list(data.columns), how='left')
data = data[['country', 'market_segment', 'previous_cancellations','booking_changes', 'deposit_type', 'days_in_waiting_list', 'customer_type', 'reserved_room_type', 'required_car_parking_spaces', 'total_of_special_requests', 'lead_time','is_canceled']]
data.shape

2. Удалить столбец "страна" и "booking_changes"

# membuat DataFrame untuk outlier detection tanoa kolom country dan booking changes, 
# karena kedua kolom tersebut nantinya tidak dipakai

# drop kolom country
data = data.drop(columns=['country', 'booking_changes'], axis=1)
data.shape

3. Обработка данных о выбросах
Один из способов обнаружения многомерных выбросов — использование алгоритма DBSCAN. DBSCAN — это алгоритм иерархической кластеризации, в котором результаты прогнозирования представляют собой кластеры, и если в нашем наборе данных есть шум или выбросы, кластер шума или выброса будет помечен -1.

model = DBSCAN(min_samples=11, eps=1.8)
model.fit(data_out)
cluster = model.labels_

# DataFrame dengan Cluster
data_out['Cluster'] = cluster

После выполнения итерации, чтобы найти наилучшее минимальное значение выборки и значение эпсилон, чтобы получить высокий показатель silhoutte и calinski harabasz — где, если значение метрики высокое , это означает, что один кластер с другим кластером можно четко отличить — , тогда минимальное значение выборки 11 и значение эпсилон 1,8 получаются с показателем силуэта 91 % и балл по калинскому харабасу 6860,55.

Количество сформированных кластеров равно 2 кластерам, где 1 кластер — это выброс данных на уровне 4,54%, который отмечен черным цветом. Затем эти выбросы удаляются из набора данных.

4. Дискретизация
Используется граница для дискретных переменных 5%, поэтому значения ниже 5% будут считаться редкими значениями. Дискретизировать, чтобы уменьшить кардинальность данных и сделать модель более общей.
a. Дискретизация числовых переменных

  • В столбце previous_cancellations будет дискретизировано → когда-либо отмененный заказ до (1) или никогда (0).
  • В столбце required_car_parking_spaces будет дискретизировано → нет запросов на парковочные места (0) и запросы (1).
  • В столбце total_of_special_requests будет дискретизировано → нет запроса (0) и есть как минимум 1 запрос (1) (пример запроса: две односпальные кровати, высокий этаж и т. д.).
  • В столбце days_in_waiting_list будет дискретизировано → подтверждено непосредственно отелем (0) или нет (1).
  • В колонке lead_time распределение данных смещено вправо → будет происходить перемасштабирование при моделировании.

б. Дискретизация категориальных переменных

  • В столбце market_segment дискретизируйте, изменив его на «Другие», если значение, введенное позже, является дополнительным, авиационным, неопределенным, а не онлайн-TA, Direct, Offline TA/TO, Groups и Corporate.
  • В столбце disabled_room_type дискретизация выполняется путем изменения на «Другие», если значение, введенное позже, является комнатой с типом C, H, P, L, а не A, D, E, F, G, B.
  • Остальное не нужно дискретизировать.

5. Удаление повторяющихся данных
Поскольку после дискретизации появляются повторяющиеся данные, повторяющиеся данные будут удалены из набора данных.

# drop duplicat kolom setelah didiskritisasi (karena menurunkan cardinalitas, sehingga kemungkinan duplikat menjadi lebih besar, dan ternyata memang ada duplikat)
data = data.drop_duplicates(keep='last', ignore_index=True)

Моделирование

  1. Конвейер

  • Приведенный выше процесс показывает конвейер процесса от необработанных данных до готовых к обработке данных, состоящий из 3 шагов.
  • Шаг 1: Дискретизация числовых и категориальных переменных.
  • Шаг 2: Выполните одно горячее кодирование для категориальных столбцов.
  • Шаг 3. Изменение масштаба столбца lead_time с помощью StandardScaler.

2. Тестирование модели
Здесь я тестирую модель с помощью библиотеки pycaret.

Существуют 3 лучшие модели на основе оценки сбалансированной точности, а именно логистическая регрессия, машина повышения градиента и машина усиления градиента света со сбалансированным показателем точности 63,14%, 62,47% и 61,76%. Затем я выполнил настройку гиперпараметров этих трех лучших моделей.

3. Настройка гиперпараметров
Выполняйте настройку гиперпараметров с помощью библиотеки поиска scikit-learn и используйте метод Randomizer из-за ограниченности инструментов. Затем выполните метод теплого старта, при котором модель обучается на основе предыдущих лучших параметров и повторно обучается с использованием обучающих данных. Не обучать модель с нуля снова.

Наилучшей полученной моделью является логистическая регрессия со сбалансированным показателем точности 74,54 % для данных обучения и 74 % для данных проверки.

4. Оценка метрики логистической регрессии

Сбалансированная точность – это среднее арифметическое чувствительности (истинно положительный показатель) и специфичности (истинно отрицательный показатель). Сбалансированная точность уместна при работе с дисбалансом меток и считает как положительные, так и отрицательные классы одинаково важными.

  • В положительном классе отзыв дает значение 81%, а точность дает значение 47%, что означает, что из общего числа положительных наблюдений 289 клиентов, 81% или 234 клиента, по прогнозам, фактически отменят заказ (прогнозируемый истинно положительный результат). ) и из всех клиентов, которые, по прогнозам, отменят заказ (прогнозируемый истинный положительный результат + ложный положительный результат), что составляет 497 клиентов, на самом деле 47% или 110 клиентов действительно отменят заказ.
  • В отрицательном классе отзыв дает значение 68 %, а точность дает значение 91 %, что означает, что из общего числа отрицательных наблюдений 823 клиентов прогнозируется, что 68 % или 560** клиентов не отменят заказ (предсказанная истина). отрицательный) и от клиентов, которые, по прогнозам, не отменят заказ (прогнозируемый истинный отрицательный + ложный отрицательный), на самом деле прогнозируется, что 91% или 510 клиентов не отменят заказ.

4. Интерпретация логистической регрессии
а. Формула логистической регрессии
Поскольку существует 25 функций (после прохождения данных через конвейер), если я покажу формулу, она будет слишком long, вы можете нажать здесь, чтобы увидеть формулу.

б. Особенности Важность

5 наиболее важных функций:

  • required_car_parking_spaces: запрашивает ли клиент парковочное место.
  • deposit_type_Non Refund: клиенты, которые размещают заказ, но если клиент отменяет заказ, возврат средств клиенту не производится.
  • previsous_cancellations: отменял ли покупатель заказ раньше.
  • deposit_type_Refundable: клиент, который разместил заказ, но если клиент отменил заказ, клиенту будет возвращена сумма.
  • days_in_waiting_list: будет ли клиент немедленно подтвержден отелем или нет.

в. Модель Cara Bekerja
Логистическая регрессия работает на основе сигмоидальной функции, вводя значения, содержащиеся во всех функциях, используемых для построения модели. Если переменная является категориальной, она будет введена как 1 или 0 (после кодирования). Тогда результаты значения модели будут предоставлять диапазон значений от 0 до 1 (вероятность), где значение представляет значение вероятности того, что клиент отменит заказ или нет .

д. Интерпретация модели

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

  • required_car_parking_spaces: любое изменение в столбце уменьшитвероятность отмены заказа клиентом в 14,46 раза.
  • deposit_type_Non Refund: любое изменение с deposit_type со значением Non Refund на deposit_type со значением Refundable или Non Deposit увеличитвероятность того, что клиент отменит заказ в 2,78 раза.
  • previsous_cancellations: любое изменение в столбце увеличитвероятность того, что покупатель отменит заказ в 2,208 раза.
  • deposit_type_Refundable: любое изменение с deposit_type со значением Refundable на Deposit_type со значением Non Refund или Non Deposit увеличитвероятность того, что клиент отменит заказ в 1,658 раза.
  • days_in_waiting_list: каждое изменение в столбце повышаетвероятность того, что клиент отменит заказ в 1538 раз.

5. Ограничение логистической регрессии

  • столбец market_segment
    Для сегментов рынка, отличных от прямой, онлайновой TA, офлайновой TA/TO и групп, он будет включен в категорию Другие.
  • reserved_room_type
    Для типов забронированных номеров, отличных от A, B, D, E, F и G, они будут включены в категорию Другие.

Заключение

Если затраты на маркетинг одного клиента составляют около 4,77 долл. США и когда мы теряем одного депозитного клиента, предполагается, что мы потеряем потенциальную прибыль в размере 46,5 долл. США (согласно бизнес-задаче). Есть 2342 клиента, из которых 1223 клиента, которые не хотят открывать депозитный счет, и 1119 клиентов, которые хотят открыть депозитный счет.

Основываясь на построенной модели логистической регрессии, мы можем сделать вывод, что если отель использует ее для прогнозирования того, отменит ли клиент заказ или не отменит заказ, модель может правильно предсказать на 74% со стандартным отклонением 0,0203 или на 2,03%, что иллюстрирует диапазон производительности модели от 71,97% до 76,03%.

Если затраты на маркетинг одного гостиничного номера составляют около 11 долларов США и когда клиент отменяет заказ, можно предположить, что отель теряет доход в размере 101 доллар США. Если есть 1391 клиент (тестовые данные), которые бронируют отели, то:

  • Без модели:
    Если без использования модели, потому что отель не знает, какие клиенты отменят заказ или нет, и не хочет терять клиентов, отель проводит маркетинг для всех клиентов:
    А. Ошибка типа I (ложноположительный результат), когда предполагается, что клиент отменит заказ, хотя на самом деле это не так (маркетинг не соответствует цели):
     – общие маркетинговые расходы, понесенные всеми клиентами → 11 долл. США x 1391 = 15 301 долл. США
     — доход без учета маркетинга → 101 долл. США x 1391 = 140 491 долл. США
     – чистая прибыль, полученная отелем после проведения маркетинга:
    чистая прибыль = доход без учета маркетинга — понесенные расходы на маркетинг
    нетто прибыль = $140491 — $15301
    Чистая прибыль = $125190
    Таким образом, гостиница получит чистую прибыль только в размере $125190.
    Б. Ошибка типа II (ложноотрицательный результат), при которой предполагается, что клиент не отменит заказ, а фактически отменит заказ:
     – в этом случае отель потеряет чистую прибыль в размере 125 190 долл. США.
  • С моделью:
    При использовании модели отель сможет правильно прогнозировать на 74%.
    A. Ошибка типа I (ложноположительный):
    Ложноположительное значение: 263 клиента
     – Общие затраты на маркетинг = 263 x 11 долларов США = 2 893 долларов США
     – Разница между моделью без модели и с использованием модели = $15301 — $2893
    Итак, отель по-прежнему экономит $12408.
    Б. Ошибка типа II (ложноотрицательный результат):
    Ложноотрицательное значение: 55 клиентов
     — общая потеря чистой прибыли = 55 * 101 долл. США = 5555 долл. США
    Итак, если отельиспользует модельотель потеряеттолько чистую прибыль в размере 5555 долларов СШАвместо 125 190 долларов США (без модели).

Рекомендация

а. Бизнес:
Если вы уже знаете, какие клиенты отменят заказ (из-за использования модели), можно сделать несколько вещей, чтобы клиенты не отменили заказ:

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

б. Модель:

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

Для полного блока кода и анализа вы можете посетить мой репозиторий здесь, в моем профиле GitHub, или, если вы хотите увидеть мой эксперимент, когда я выполняю бенчмаркинг моделей, вы также можете посетить мой dagshub!

Очень приятно видеть, что вы читаете мою статью до конца, так что спасибо вам за это, и я надеюсь, что у вас все отлично! Увидимся на моем следующем!!!

ССЫЛКИ
Hospitalitytech.com, 23 апреля 2019 г., Глобальный показатель отмены бронирования отелей достигает в среднем 40%, 01 августа 2023 г., https://hospitalitytech.com/global -коэффициент отмены-бронирования-гостиниц-достигает-40-средний

resources.emerchantpay.com, Как отели могут бороться с растущими показателями отмены, 01.08.2023, https://resources.emerchantpay.com/how-hotels-can-combat-rising-cancellation-rates

доход-хаб.com, Три наиболее распространенных тенденции, влияющие на количество отмен, 01.08.2023, https://revenue-hub.com/three-most-common-trends-impacting-cancellation-rates/

Фальк, М., и Виеру, М. (2018). Моделирование поведения гостей отеля при отказе от бронирования. МЕЖДУНАРОДНЫЙ ЖУРНАЛ СОВРЕМЕННОГО МЕНЕДЖМЕНТА ГОСТЕПРИИМСТВА, 30(10), 3100–3116. https://doi.org/10.1108/IJCHM-08- 2017–0509

Антонио, Н. М., Алмейда, А. Д., и Нуньес, Л. (2017). Прогнозирование отмены бронирования отелей для снижения неопределенности и увеличения дохода. Туризм и менеджмент, 13 (2), 25–39. https://doi.org/10.18089/tms.2017.13203

Антонио Н., А. Алмейда и Нуньес Л. (2018). Наборы данных о спросе на бронирование отелей. Кратко о данных, 21, 1033–1035. https://doi.org/10.1016/j.dib.2018.11.126