Spam, spam, spam ...

Cada assinante ativo recebe uma média de mais de quatro chamadas indesejadas por semana - isto é publicidade, ofertas bancárias, às vezes apenas fraude. A maioria dos clientes reage negativamente a esses tipos de chamadas. Para solucionar esse problema, desenvolvemos o serviço "Bloqueio de chamadas de spam", conectando o usuário para de receber chamadas indesejadas e, no final de cada dia, o sistema notifica o assinante sobre as chamadas que foram bloqueadas. Neste artigo, as cientistas de dados do MTS Anna Rozhkova ( @RogotulkA ) e Olga Gerasimova ( @ynonaolga ) vão contar como desenvolveram um algoritmo que distingue os números de spam do resto da base de assinantes.



Construção de modelo


Então, fomos confrontados com a tarefa de classificação binária.

De fato, como distinguir um assinante (mesmo muito sociável, com uma ampla gama de novos contatos) de um remetente de spam que impõe incansavelmente os serviços de outro centro médico? Inicialmente, consideramos os números que telefonavam para muitos assinantes diferentes como spam, mas era difícil distinguir as lojas online. Decidimos, então, atender os números, cujas ligações são muitas vezes interrompidas, mas as pessoas às vezes as atendem quando não se sentem à vontade para conversar. Também testamos a hipótese de que os assinantes não retornarão a ligação para os remetentes de spam (dentro de um curto período de tempo após uma chamada perdida), mas havia muitos números, talvez para alguns assinantes esse seja o comportamento padrão, eles não retornem para amigos. Como resultado, chegamos à decisão de que os números de spam diferem no nível de insatisfação do usuário com eles. Portanto, comoa variável alvo recebeu números, que receberam muitas reclamações, e exemplos negativos foram marcados como aqueles com poucas críticas negativas ou nenhuma.

Dados agregados da atividade do assinante foram utilizados como sinais: a duração média das chamadas, os períodos do dia com a atividade mais alta, a duração média de um intervalo entre as chamadas, a velocidade de atualização do círculo de contatos e muitos outros. Também observamos que muitos remetentes de spam selecionam "números bonitos" ou semelhantes aos já existentes (por exemplo, o número da linha direta do banco) e adicionam esses recursos binários. 

Seleção de métricas


O próximo passo foi escolher uma métrica de otimização. Em nossa decisão, era importante não bloquear chamadas de números comuns; portanto, determinamos que a precisão do modelo deveria ser de pelo menos 95%. Precisão é a porcentagem de números reconhecidos como objetos de classe de spam que o modelo previu corretamente. Mas é importante bloquear o maior número possível de números indesejados, portanto escolha o recall máximo (recall) para obter um nível aceitável de precisão. A versão final do modelo possui os seguintes indicadores: 95% de precisão, recordação de 94%. Agora, o modelo está dentro do cronograma e é treinado regularmente para observar mudanças na atividade de chamada de vários grupos de assinantes, e essas métricas são verificadas para que não fiquem abaixo de 90% cada.



Como os números de spam são muito menores que o normal, ou seja, a amostra é desequilibrada, o número de exemplos negativos foi reduzido relativamente positivo (subamostragem). Na amostra de validação, a proporção da classe foi escolhida real para se ter uma ideia da qualidade do trabalho do modelo "em batalha". Além disso, apenas os números de spam que estavam ativos em uma determinada data devido à inconsistência dos spammers foram incluídos na amostra: há períodos de discagem ativa e há um período de passividade quando eles fazem várias chamadas, provavelmente mantendo o número. Às vezes, os números após a campanha são bloqueados e transferidos para outro proprietário.

Como algoritmo, foi utilizada a implementação do xgboost boosting, pois deu os melhores resultados na amostra de validação. Os sinais importantes para o modelo foram: dados sobre a atividade dos assinantes em diferentes momentos do dia, o número de chamadas curtas, a amplitude do círculo de amigos. Um fato interessante foi que o recurso do operador de telecomunicações entrou nos principais recursos. Abaixo no gráfico, anonimizamos as operadoras de celular e apresentamos estatísticas sobre o uso de seus números pelos remetentes de spam:


Teste


Nesta tarefa, não foi possível realizar o teste A / B: o serviço no nível da rede não implica a existência de várias listas de números de spam; portanto, lançamos o piloto da primeira versão do modelo dentro da empresa, colegas e alta gerência se tornaram testadores. Uma das características positivas dos testes internos é o feedback rápido. Começamos imediatamente a fazer perguntas:

  • por que esse número passou?
  • por que você bloqueou esse número?
  • Não preciso de outro seguro de carro (quanto posso?!)


Nossa experiência pessoal também se tornou um motivo adicional para encontrar novos recursos para o modelo, quando, após uma longa espera pela entrega na loja on-line, o telefone do correio foi encontrado na lista de itens bloqueados.

Lançamento em prod


Outro problema sério na classificação de números foi a diferença de idéias sobre o que é spam: para alguns, chamadas com uma oferta de empréstimo são informações desnecessárias e alguém está aguardando ofertas pessoais e escolhendo a melhor, para que o assinante tenha a oportunidade de visualizar a lista de chamadores números com a opção de desativar aqueles que são potencialmente úteis para ele.



Uma das solicitações mais populares dos usuários para finalizar o serviço foi expandir a informatividade do relatório SMS sobre números bloqueados diariamente com dados sobre categorias de chamadas, por exemplo, bancos, serviços médicos ou imóveis.

As primeiras versões do modelo foram criadas com base em recursos coletados por um longo período de tempo, mas percebemos que o modelo geralmente não considera os números que pareciam recentemente serem spam, ou seja, novos números ou aqueles que iniciaram chamadas ativas após um período de "silêncio". Para resolver esse problema, criamos um modelo adicional nos recursos coletados por um período mais curto. Não foi suficiente adicionar recursos "curtos" à vitrine para treinamento, pois as próprias amostras de treinamento são diferentes: os assinantes ativos por um longo e curto período de tempo não correspondem.

Nossos planos adicionais para o desenvolvimento do produto incluem a criação de listas de spam individuais, levando em consideração o perfil do cliente e suas necessidades, transferindo o modelo para o modo online, para que ele atinja o pico da atividade dos spammers, começando aqui e agora.

All Articles