Como construí um modelo preditivo de um call center para que suas chamadas não enfurem os usuários

Nada é mais irritante do que uma ligação surpresa de um número desconhecido. Na nossa era de mensageiros e comunicação, a correspondência com um número de telefone desconhecido que pisca ameaçadoramente na tela de um smartphone pode causar pelo menos um pouco de emoção. É duplamente irritante quando uma chamada chega não apenas de repente (como são essas chamadas), mas também em um momento desconfortável para você. Por exemplo, quando você realmente não conseguiu acordar ainda, ou vice-versa, você já está em plena atividade em uma cama tão atraente depois de um longo dia. Alguns negócios ligam nos fins de semana, depois das nove da noite ou à noite - geralmente além do bem e do mal.



A propósito, sobre mim. Meu nome é Natasha, trabalho na Skyeng como cientista de dados e estou envolvido no desenvolvimento de vários produtos da empresa. Por que estou falando de ligações repentinas? A comunicação por voz com clientes que apenas desejam iniciar ou, por algum motivo, interromper abruptamente seu treinamento faz parte do modelo de trabalho da empresa. As ligações ajudam a envolver e levar as pessoas ao processo de aprender um idioma ou diretamente para descobrir o que deu errado. Uma das minhas últimas tarefas é analisar o trabalho do nosso call center. Ajudei-os a escolher o melhor momento para entrar em contato com estudantes de toda a Rússia e a CEI: porque ninguém gosta de ligações em horários aleatórios do dia, e enfurecer meus próprios usuários é a última coisa.

O humor das pessoas durante essas ligações é extremamente importante para nós, pois afeta diretamente a conversão. Então, deixe-me contar mais sobre como a Skyeng chama os alunos e qual modelo de previsão eu construí para que nossos clientes fiquem confortáveis ​​e alcancemos uma taxa de conversão de 60 a 70%.

É fisicamente impossível adivinhar o momento conveniente para uma pessoa em particular, a menos que você seja um médium. Elogie o progresso, para identificar esses padrões, veio com estatísticas, cujo modelo mais ou menos se encaixará na grande maioria dos usuários.

Na análise de nossos registros de CRM, que registram a atividade do call center, foram confirmadas a hipótese de ligações comerciais fora do horário comercial e a necessidade de seguir apenas o bom senso. Por isso, é melhor ligar para as pessoas de segunda a quinta-feira, das 10 às 18 horas (de repente!). É durante esse período que as pessoas têm mais probabilidade de fazer contato e a ligação dura mais de 15 segundos, ou seja, somos considerados bem-sucedidos.

Para começar, decidimos determinar a influência do fator humano na conversão, ou seja, analisar o sucesso dos operadores de call center:

Você não precisa ser um detetive para ver as duas "âncoras" neste gráfico. Essas duas anomalias são operadores com algum tipo de eficiência extremamente baixa. O que fazemos com dados anômalos, cuja natureza reside, provavelmente, no fator humano? Acredito que excluímos completamente esses dados do modelo para obter pureza e precisão subsequentes do resultado. O que eu realmente fiz. Bem, de fato, esses dois operadores, ou melhor, seus resultados, estão tão fora de cena no call center que tenho certeza absoluta de que o assunto não é o processo de trabalho, mas os próprios funcionários. Talvez eles sejam recém-chegados, o que também nos dá uma razão para excluí-los.

Mas os dados de seis outros operadores com conversão abaixo de 0,5 permanecem no modelo. Acredito que não pode haver situações ideais, como as pessoas, portanto esses seis equilibrarão nossos cálculos adicionais com o restante da amostra de cinquenta funcionários.

Fusos horários, regiões e dias da semana


Temos uma situação difícil com fusos horários. Agora estamos coletando informações suficientes para determinar de onde o aluno é e quando é melhor ligar para ele. Mas isso estava longe de sempre. Foram essas camadas de informações antigas, mas ainda em funcionamento, que criaram uma série de inconvenientes tanto para nossos usuários quanto para os operadores de call center. Para processar esses dados antigos, escrevi um cálculo separado da zona do usuário com base em outros dados indiretos (por número de telefone, região e informações sobre o uso de nosso aplicativo).

Se você começar a se aprofundar nas estatísticas do CRM, ainda poderá obter uma camada inteira de informações úteis para criar um modelo eficaz. Para começar, criei uma programação de conversão para os dias da semana para confirmar minha suposição inicial de que é melhor ligar nos dias de semana, exceto sexta-feira. Na verdade, minhas suposições estavam corretas:


Essa divisão em Moscou, São Petersburgo e outras cidades foi feita precisamente por causa de dúvidas em termos de determinação do fuso horário. Para o dia zero, tomamos segunda-feira, respectivamente, o sexto domingo. O gráfico acima mostra claramente o quanto a conversão está caindo por região nos finais de semana, o que confirma a hipótese de um problema com os fusos horários nos quais os operadores de call center se concentraram.

Moscou e Peter estão um pouco melhores. Talvez porque os habitantes dessas cidades estejam acostumados a um ritmo de vida mais alto. Mas, mesmo com todo o estoicismo de moscovitas e moradores da cidade sobre o Neva, os números dizem que "não há nada para ligar de sexta a domingo".

O limite inferior de nossa meta de 0,6 é atingido apenas uma vez - na segunda-feira, o que é surpreendente, pois é geralmente aceito que este dia é o mais difícil e as pessoas relutam em resolver problemas secundários às segundas-feiras, pois se concentram em retornar ao ritmo de trabalho fim de semana. Não, não, e novamente não - os números não mentem. Ao longo da semana, seguimos mais ou menos tranqüilamente, e a recessão começa apenas na quinta-feira.

Ainda mais interessante é a imagem ao decompor chamadas pelo relógio:

Observe a cauda forte à esquerda para as regiões. Provavelmente, essas chamadas foram feitas em um horário inaceitável devido a um fuso horário definido incorretamente

Agora, vejamos a conversão de alguns dias da semana:

Aqui estão os dados para o nosso dia de campeão na segunda-feira. No início do gráfico, as "regiões" são empurradas para a frente. Por volta do meio dia, a situação é nivelada. A propósito, preste atenção ao movimento simétrico de nosso gráfico em torno de 15 e 16 horas; que a capital, que as regiões mostram exatamente o mesmo movimento neste momento.

Mas na terça-feira, a situação começa a mudar:

E na quinta-feira, as regiões demonstram sua falta de vontade de atender chamadas:

Lembra que eu disse que as ligações de fim de semana são más? Em geral, o quadro estatístico confirma minhas palavras, mas existe um "mas". Em resumo, veja você mesmo:

Às 9 e 10 da manhã, a conversão nas regiões acaba! E já às 11 da manhã - ele mal se distancia da marca de 0,4, ou seja, afunda duas vezes. Eu não tenho idéia de como isso funciona e por que isso acontece, para que eu possa compartilhar minhas teorias nos comentários, eu adoraria ler.

Se resumirmos todos os dados, podemos derivar as seguintes regras para uma chamada "bem-sucedida":

  • Segunda-feira: das 13 às 17;
  • Terça-feira: das 12 às 18;
  • Quarta-feira: das 11 às 12 e das 15 às 17;
  • Quinta-feira: das 10 às 17;
  • Sexta-feira: das 10 às 12;
  • Sábado: de 16 a 18;
  • Domingo: das 13 às 14 e das 18 às 19.

Na verdade, tudo se encaixa na estrutura do senso comum. Nos dias úteis, de segunda a quinta-feira - telefonar das cinco às seis da noite e na sexta-feira à tarde para resolver qualquer problema é quase impossível. As estatísticas nos fins de semana “flutuam” um pouco, com ênfase na tarde, bem, mais o pico anômalo mencionado anteriormente, às 10h no domingo, fica fora de cena. E assim tudo é estável.

O que eu fiz com tudo isso e qual modelo eu construí


Antes de prosseguir com a construção de um modelo para um call center, era necessário tirar várias conclusões. Primeiro, tudo depende da hora da chamada. Mas aqui temos problemas.

A única coisa que podemos rastrear é a região de registro do número de telefone e, a partir dessas informações, partimos da construção do call center. Mas muitas vezes surgem situações em que não podemos determinar exatamente de que região o número indicado.

É isso, e não uma preguiça ficcional das regiões, que leva ao fato de que os indicadores gerais de conversão de usuários fora do anel viário de Moscou e do anel viário diminuem em relação às capitais. O que podemos fazer nessa situação?

  1. Adira às zonas quentes identificadas para chamadas para as regiões se não tivermos dados suficientes.
  2. Precisamos procurar ferramentas para determinar com mais precisão a localização do usuário, para não incomodá-lo com chamadas vazias.

O segundo ponto é especialmente importante. São essas discrepâncias que reduzem a taxa de conversão geral e ainda enfurecem os clientes.

Mas vamos à construção do modelo. Aqui está uma lista geral de sintomas que identifiquei como relevantes:

  • hora - a hora da chamada (sinal categórico de 0 a 23).
  • dia da semana - dia da semana (sinal categórico de 0 a 6).
  • idade - a idade do aluno.
  • tempo de vida - o tempo de vida do aluno (nas lições) no momento da chamada.
  • app_hour_ {k} - sazonalidade diária do uso do aplicativo. Para cada hora, k é determinado como a fração de ações no aplicativo naquela hora (k = 0, ..., 23) do número total de ações no aplicativo.
  • app_weekday_ {k} - sazonalidade semanal do uso do aplicativo. Para cada dia da semana, k é determinado como a proporção de ações no aplicativo naquele dia da semana (k = 0, ..., 6) do número total de ações no aplicativo.
  • class_hour_ {k} - sazonalidade diária das lições. Para cada hora, k é determinado como a fração de lições nessa hora (k = 0, ..., 23) do número total de lições.
  • class_weekday_ {k} - sazonalidade semanal do uso do aplicativo. Para cada dia da semana, k é determinado como a porcentagem de lições nesse dia da semana (k = 0, ..., 6) do número total de lições.
  • is_ru - 1 se o país do aluno for a Rússia e 0 se não.
  • last_payment_amount - o valor do último pagamento.
  • days_last_lesson - o número de dias da última lição (na ausência da última lição, substitua pelo número -100).
  • days_last_payment - o número de dias desde o último pagamento (na ausência do último pagamento, substituímos pelo número -100).

Inicialmente, havia cerca de cem sinais, mas cálculos e testes mostraram que eles não afetaram o resultado final e, portanto, foram excluídos por não serem informativos (por exemplo, a intensidade das aulas, o sexo do aluno, seu nível etc.). Como modelo de classificação binária, foi utilizada uma biblioteca de aumento de gradiente nas árvores de decisão CatBoost.

E aqui está a qualidade do meu modelo (na amostra de controle):



Esses resultados foram obtidos para o limite de separação de classe de 0,5, que é o valor padrão. Determinamos o limite de separação de classe ideal com base nas curvas ROC (característica de operação do receptor).

Para fazer isso, construímos a dependência de características como integridade e especificidade, dependendo de vários valores da fronteira que separam as classes:



O valor ideal da borda será onde obteremos ao mesmo tempo os valores mais altos possíveis de completude e especificidade (ou seja, neste caso, onde os gráficos se cruzam). Para o modelo resultante, a borda ideal foi 0,56717.

A qualidade do modelo com a borda ideal é a seguinte:



Em nossa situação, a precisão do modelo era mais importante para nós do que sua integridade. É a maior precisão que nos permite reduzir o número de previsões falso-positivas, ou seja, nos permite reduzir o número de situações quando estávamos aguardando uma ligação bem-sucedida, mas acabou sendo malsucedida.

Se resumir o mecanismo do modelo:

  • para cada hora do dia e dia da semana de cada aluno, a probabilidade de discagem é calculada levando em consideração suas características e horário local;
  • para armazenamento adicional, uma hora é selecionada de 9 a 20 horas para cada dia da semana (a hora é selecionada de acordo com o fuso horário do aluno);
  • Antes de salvar, a hora é alterada para a hora de Moscou, pois a discagem será realizada no fuso horário de Moscou;
  • Os resultados são salvos no banco de dados.

Portanto, agora as operadoras de call center previram dados sobre a probabilidade de discagem para cada usuário e a cada hora e dia da semana. Se a chamada não for urgente, o operador poderá escolher o slot mais otimizado da semana e, em casos extremos - se a chamada não puder mais ser adiada - o momento de maior sucesso do dia útil atual.

Obviamente, após a introdução do meu modelo, será necessário fazer uma pausa e, em seguida, fazer todo esse trabalho novamente, mas com novos dados. Posso fazer alguns cálculos abstratos infinitamente, calcular probabilidades e adicionar novas variáveis ​​ao modelo, mas até que as estatísticas vivas confirmem meu argumento, é muito cedo para fechar esta pergunta.

Se você gostou, depois de um tempo, voltarei com os novos dados obtidos após a introdução do meu modelo de previsão.

Source: https://habr.com/ru/post/pt464007/


All Articles