Предсказать лучшее время звонка

10

У меня есть набор данных, включающий набор клиентов в разных городах Калифорнии, время вызова для каждого клиента и статус вызова (True, если клиент отвечает на вызов, и False, если клиент не отвечает).

Я должен найти подходящее время звонка для будущих клиентов, так что вероятность ответа на звонок высока. Итак, какова лучшая стратегия для этой проблемы? Должен ли я считать это проблемой классификации, какие часы (0,1,2, ... 23) являются классами? Или я должен рассматривать это как регрессионную задачу, время которой является непрерывной переменной? Как я могу убедиться, что вероятность ответа на звонок будет высокой?

Любая помощь будет оценена. Также было бы здорово, если бы вы направили меня к подобным проблемам.

Ниже приведен снимок данных.

Хамид Махдавян
источник
Шон Оуэн, как прошла задача? Сейчас я пытаюсь решить аналогичную проблему и хотел бы услышать ваш опыт - не так много ресурсов в этой теме в Интернете. Заранее спасибо!
Доминика

Ответы:

5

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

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

Тем не менее, это может быть случай для простой описательной статистики. Если вы рассчитываете долю отвеченных вызовов по времени суток (с разбивкой по городам или любым другим демографическим показателям), существует ли четкое лучшее время? Если так, зачем усложнять вещи с моделью?

HEITZ
источник
1

Вы можете попробовать следующее:

  1. Разделите день на различные части - рано утром, утром, полднем, днем, вечером, поздним вечером, ночью и т. Д.
  2. Назначьте временные границы для каждой части дня, например, с 12:00 до 13:00.
  3. Создайте 3 новых ярлыка - «часть дня, чтобы позвонить клиенту», для каждого положительного случая (статус звонка = true) назначьте ему соответствующий ярлык (утро / полдень / вечер). Эти метки будут в формате с горячим кодированием, например, Предпочитаемое значение = 0/1, Предпочитаемое значение, Предпочтительное событие и т. Д.
  4. Создайте 3 модели, чтобы предсказать, предпочитает ли лидер утреннее / полуденное / вечернее время дня для успешного вызова.

Кроме того, я рекомендую добавить дополнительные функции, такие как род занятий, пол и т. Д., Поскольку функции, перечисленные в таблице (город и т. Д.), Слишком неоднозначны и не дают много информации для разграничения между клиентами.

Отредактировано согласно предложению в комментариях:

При использовании модели каждое ведение классифицируется как prefers_morning = да / нет, prefers_noon = да / нет и prefers_evening = да / нет. В зависимости от времени суток, например, утром, агент колл-центра (или программное обеспечение) может подобрать и вызвать клиентов, классифицированных в наборе утренних предпочтений. Когда наступает полдень, программное обеспечение для вызовов выбирает список предпочтений в полдень и так далее.

Сандип С. Сандху
источник
@ sandeep-s-sandhu Это простой способ преобразовать проблему в проблему классификации науки о данных. Но кажется, что у этого подхода могут быть некоторые недостатки: 1. информация о ярлыке включает только положительный случай, потеря информации о отрицательном случае 2. покупатель может иметь только одну из этикеток. На практике у клиента может быть несколько ярлыков (т. Е. Я предпочитаю, чтобы люди звонили мне поздним вечером или ночью). Что вы думаете?
Нхую
@nkhuyu, 1) ярлык также содержит отрицательный регистр. Я думаю, что вы неправильно поняли утверждение «Создать новую метку -« часть дня, чтобы позвонить клиенту », для каждого положительного случая (статус вызова = true)». Этот шаг предназначен для создания дополнительной метки, оригинальная метка того, был ли вызов успешным или нет, остается как есть. 2) Да, вы правы, отредактировал ответ, чтобы отразить это.
Сандип С. Сандху
@ sandeep-s-sabdhu Спасибо за ответ. Да, я неправильно понял. ХОРОШО. Тогда у вас будет две метки (статус звонка, ваша новая метка). Тогда как вы можете решить эту проблему? Это не обычная проблема классификации.
нхую
@nkhuyu, спасибо, что заметили это, я сейчас отредактировал и уточнил это на шаге № 4. Каждая из трех моделей предоставит набор потенциальных клиентов, которые будут выбирать вызовы в определенное время суток, колл-центр использует это для определения приоритетов своих вызовов.
Сандип С. Сандху
1
За шагом 1 следует шаг 3, и я предложил создать соответствующие ярлыки для обучения. Основной запрос был - «Я должен найти подходящее время звонка ...». Это зависит от ФП, чтобы решить, должны ли они быть утром / полднем / вечером или более детальными, например, по часам.
Сандип С. Сандху
0

Я бы использовал логистическую регрессию - вам понадобятся сэмплы там, где они не собраны. Тогда я бы рассматривал час как сезонный фиктивный регрессор (23 часа как фиктивные переменные и позволяли одному потоку перехватывать).

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

Кто-то ранее предлагал заменить полдень и т. Д. В качестве категориальной переменной. Это плохая идея, потому что у вас есть детали, и вы теряете детали там. Это имело бы эффект, аналогичный использованию оптимального биннинга, чтобы сделать отношения линейными, но я все еще не думаю, что это сработает. Попробуйте сезонные фиктивные регрессоры.

Майкл Корли MBA LSSBB
источник