Preveja a melhor hora da chamada

10

Eu tenho um conjunto de dados que inclui um conjunto de clientes em diferentes cidades da Califórnia, o horário da chamada para cada cliente e o status da chamada (True se o cliente atender a chamada e False se o cliente não atender).

Preciso encontrar um horário adequado para ligar para futuros clientes, de modo que a probabilidade de atender a chamada seja alta. Então, qual é a melhor estratégia para esse problema? Devo considerar um problema de classificação quais são as horas (0,1,2, ... 23) das aulas? Ou devo considerar uma tarefa de regressão que o tempo é uma variável contínua? Como posso garantir que a probabilidade de atender a chamada seja alta?

Qualquer ajuda seria apreciada. Também seria ótimo se você me referisse a problemas semelhantes.

Abaixo está um instantâneo dos dados.

Hamid Mahdavian
fonte
Sean Owen, como foi a tarefa? Agora, estou tentando resolver um problema semelhante e gostaria de ouvir sua experiência - não há muitos recursos neste tópico na web. Desde já, obrigado!
Dominika

Respostas:

5

Você pode realmente encontrar problemas se modelar isso como um problema de regressão sem uma transformação adequada. Por exemplo, sabemos que a maioria das chamadas provavelmente é atendida durante o dia e menos durante a noite e de manhã cedo. Uma regressão linear teria dificuldade porque o relacionamento é provavelmente curvilíneo, não linear. Pelo mesmo motivo, tratar isso como uma tarefa de classificação com regressão logística também seria problemático.

Conforme sugerido por outros entrevistados, reclassificar seus dados em períodos de tempo ajudará, e eu sugiro que você tente algo como uma árvore de decisão ou floresta aleatória primeiro.

Dito isto, esse pode ser um caso para estatísticas descritivas simples. Se você planejar a proporção de chamadas atendidas por hora do dia (divididas por cidade ou qualquer outra demografia), há uma melhor hora clara ? Se sim, por que complicar as coisas com um modelo?

HEITZ
fonte
1

Você pode tentar o seguinte:

  1. Divida o dia em várias partes - de manhã cedo, manhã, meio-dia, tarde, tarde, tarde da noite, etc.
  2. Atribua limites de tempo a cada parte do dia, por exemplo, o meio-dia pode ser das 12h às 13h.
  3. Crie 3 novos rótulos - "parte do dia para ligar para o cliente", para cada caso positivo (status da chamada = verdadeiro) atribua a ele o rótulo correspondente (manhã / meio-dia / noite). Esses rótulos estarão no formato codificado de uma vez, por exemplo, prefer_morning = 0/1, prefer_noon, prefer_evening etc.
  4. Crie três modelos para prever se o lead prefere o horário da manhã / meio-dia / noite do dia para que uma chamada seja bem-sucedida.

Além disso, recomendo adicionar recursos adicionais, como ocupação, sexo etc., pois os recursos listados na tabela (cidade etc.) são muito ambíguos e não fornecem muitas informações para diferenciar os clientes.

EDITADO conforme sugestão nos comentários:

Ao usar o modelo, cada lead seria classificado como prefers_morning = yes / no, prefers_noon = yes / no e prefers_evening = yes / no. Com base na hora do dia, por exemplo, pela manhã, o agente da central de atendimento (ou software) pode atender e ligar para os leads classificados no conjunto de preferências da manhã. Quando chega o meio-dia, o software de chamada é selecionado na lista de preferências do meio-dia e assim por diante.

Sandeep S. Sandhu
fonte
@ sandeep-s-sandhu Esta é uma maneira simples de converter o problema em um problema de classificação da ciência de dados. Mas parece que essa abordagem pode ter algumas desvantagens: 1. as informações do rótulo incluem apenas maiúsculas e minúsculas, a perda das informações do maiúsculas e minúsculas 2. Um cliente pode ter apenas um dos rótulos. Na prática, um cliente pode ter mais de um rótulo (ou seja, eu prefiro que as pessoas me liguem tarde da noite ou noite). O que você acha?
Nkhuyu
@nkhuyu, 1) o rótulo também inclui letras maiúsculas e minúsculas. Acho que você não entendeu a afirmação "Crie uma nova etiqueta -" parte do dia para ligar para o cliente ", para cada caso positivo (status da chamada = verdadeiro)". Esta etapa pretende criar uma etiqueta adicional, a etiqueta original de se a chamada foi bem-sucedida ou não permanece como está. 2) Sim, você está certo, editou a resposta para refletir isso.
Sandeep S. Sandhu
@ sandeep-s-sabdhu Obrigado pela resposta. Sim, eu entendi errado. ESTÁ BEM. Você terá dois marcadores (status da chamada, seu novo marcador). Então, como você pode resolver esse problema? Não é um problema de classificação regular.
Nkhuyu
@ nkhuyu, obrigado por observar isso, agora eu editei e esclareci isso na etapa 4. Cada um dos três modelos fornecerá um conjunto de leads que atenderão a chamada para aquela hora específica do dia, que o call center usa para priorizar suas chamadas.
Sandeep S. Sandhu
11
O passo 1 é seguido pelo passo 3 e sugeri-os para criar rótulos apropriados para o treinamento. A consulta principal foi - "Preciso encontrar um horário apropriado para ligar para ...". Cabe ao OP decidir se deve ser de manhã / meio-dia / noite ou mais granular, como por hora.
Sandeep S. Sandhu
0

Eu usaria uma regressão logística - você precisará de amostras onde elas não foram coletadas. Então trataria a hora como um regressor fictício sazonal (23 horas como variáveis ​​fictícias e deixaria a pessoa fluir para a interceptação).

Se você não o tratar como um regressor fictício sazonal, será necessário realizar algum tipo de transformação, porque o relacionamento não será linear.

Alguém sugeriu anteriormente a substituição no meio da tarde etc. como uma variável categórica. Essa é uma péssima idéia, porque você tem os detalhes e está perdendo os detalhes lá. Isso teria um efeito semelhante ao utilizar o binning ideal para tornar o relacionamento linear, mas ainda não acho que isso funcionaria. Experimente os regressores fictícios sazonais.

Michael Corley MBA LSSBB
fonte