Spam, spam, spam ...

Cada suscriptor activo recibe un promedio de más de cuatro llamadas no deseadas por semana; esto es publicidad, ofertas bancarias, a veces solo fraude. La mayoría de los clientes reaccionan negativamente a este tipo de llamadas. Para resolver este problema, desarrollamos el servicio "Bloqueo de llamadas de correo no deseado", mediante el cual el usuario deja de recibir llamadas no deseadas y, al final de cada día, el sistema notifica al suscriptor sobre las llamadas que han sido bloqueadas. En este artículo, los científicos de datos de MTS Anna Rozhkova ( @RogotulkA ) y Olga Gerasimova ( @ynonaolga ) contarán cómo desarrollaron un algoritmo que distingue los números de spammers del resto de la base de suscriptores.



Construcción del modelo


Entonces, nos enfrentamos con la tarea de clasificación binaria.

De hecho, ¿cómo distinguir a un suscriptor (incluso muy sociable, con una amplia gama de nuevos contactos) de un spammer que impone incansablemente los servicios de otro centro médico? Al principio, consideramos esos números que llamaron a muchos suscriptores diferentes como spam, pero resultó ser difícil de distinguir de las tiendas en línea. Luego decidimos tomar los números, cuyas llamadas a menudo se cortan, pero las personas a veces cuelgan las llamadas cuando simplemente no se sienten cómodas para hablar. También probamos la hipótesis de que los suscriptores no volverán a llamar a los spammers (dentro de un corto período de tiempo después de una llamada perdida), pero hubo demasiados números de este tipo, tal vez para algunos suscriptores este es un comportamiento estándar, no llaman a sus amigos. Como resultado, llegamos a la decisión de que los números de spam difieren en el nivel de insatisfacción de los usuarios con ellos. Por lo tanto comoEn la variable objetivo se tomaron números, que recibieron muchas quejas, y se marcaron ejemplos negativos aquellos que tienen pocas críticas negativas o ninguna.

Los datos agregados sobre la actividad del suscriptor se usaron como signos: la duración promedio de las llamadas, los períodos del día con la actividad más alta, la duración promedio de un descanso entre llamadas, la velocidad de actualización del círculo de contactos y muchos otros. También notamos que muchos spammers seleccionan "números hermosos" o similares a los existentes conocidos (por ejemplo, el número de la línea directa del banco) y agregan tales funciones binarias. 

Selección métrica


El siguiente paso fue elegir una métrica de optimización. En nuestra decisión, era importante no bloquear las llamadas de números ordinarios, por lo que determinamos que la precisión del modelo debería ser al menos del 95%. La precisión es el porcentaje de números reconocidos como objetos de una clase de correo no deseado que el modelo predijo correctamente. Pero es importante bloquear tantos números no deseados como sea posible, así que elija la recuperación máxima (recuperación) para un nivel aceptable de precisión. La versión final del modelo tiene los siguientes indicadores: 95% de precisión, recuerdo 94%. Ahora el modelo está en el cronograma y se vuelve a entrenar regularmente para observar los cambios en la actividad de llamadas de varios grupos de suscriptores, y estas métricas se verifican para que no caigan por debajo del 90% cada una.



Debido al hecho de que los números de correo no deseado son mucho más pequeños de lo habitual, es decir, la muestra no está equilibrada, el número de ejemplos negativos se ha reducido relativamente positivo (submuestreo). En la muestra de validación, la relación de clase se eligió real para tener una idea de la calidad del modelo "en batalla". Además, solo se incluyeron en la muestra aquellos números de spam que estaban activos en una fecha determinada debido a la inconsistencia de los spammers: hay períodos de marcación activa y hay un período de pasividad cuando hacen varias llamadas, lo más probable es que mantengan el número. A veces, los números después de la campaña se bloquean y se transfieren a otro propietario.

Como algoritmo, se utilizó la implementación del refuerzo xgboost, ya que dio los mejores resultados en la muestra de validación. Las señales importantes para el modelo resultaron ser: datos sobre la actividad de los suscriptores en diferentes momentos del día, el número de llamadas cortas, la amplitud del círculo de amigos. Un hecho interesante fue que la característica del operador de telecomunicaciones ingresó a las características principales. A continuación, en el gráfico, anonimizamos a los operadores móviles y presentamos estadísticas sobre el uso de sus números por parte de los spammers:


Pruebas


En esta tarea, no fue posible realizar pruebas A / B: el servicio a nivel de red no implica la existencia de varias listas de números de spam, por lo que lanzamos el piloto de la primera versión del modelo dentro de la empresa, los colegas y la alta gerencia se convirtieron en probadores. Una de las características positivas de las pruebas internas es la retroalimentación rápida. Inmediatamente comenzamos a verter preguntas:

  • ¿Por qué llegó este número?
  • ¿Por qué bloqueaste este número?
  • No necesito otro seguro de automóvil (¿cuánto puedo?)


Nuestra experiencia personal también se convirtió en una razón adicional para buscar nuevas características para el modelo, cuando después de una larga espera para la entrega de la tienda en línea, el teléfono del servicio de mensajería se encontró en la lista de bloqueados.

Lanzamiento en prod


Otro problema grave en la clasificación de los números fue la diferencia en las ideas sobre qué es el spam: para algunos, las llamadas con una oferta de préstamo son información innecesaria, y alguien está esperando ofertas personales y eligiendo la mejor, por lo que el suscriptor tuvo la oportunidad de ver la lista de personas que llaman números con la opción de deshabilitar aquellos que son potencialmente útiles para él.



Una de las solicitudes más populares de los usuarios para finalizar el servicio fue expandir el contenido informativo del informe de SMS en números bloqueados diariamente con datos sobre categorías de llamadas, por ejemplo, bancos, servicios médicos o bienes inmuebles.

Las primeras versiones del modelo se basaron en características recopiladas durante un largo período de tiempo, pero notamos que el modelo a menudo no considera los números que parecían ser spam recientemente, es decir. nuevos números o aquellos que iniciaron llamadas activas después de un período de "silencio". Para resolver este problema, creamos un modelo adicional sobre las características recopiladas durante un período más corto. No fue suficiente agregar características "cortas" al escaparate de entrenamiento, ya que las muestras de entrenamiento en sí mismas son diferentes: los suscriptores que están activos por períodos de tiempo largos y cortos no coinciden.

Nuestros planes adicionales para el desarrollo del producto incluyen la creación de listas individuales de correo no deseado, teniendo en cuenta el perfil del cliente y sus necesidades, transfiriendo el modelo al modo en línea, para que alcance el pico de la actividad de los spammers a partir de aquí y ahora.

All Articles