Spam, spam, spam ...

Chaque abonné actif reçoit en moyenne plus de quatre appels indésirables par semaine - c'est de la publicité, des offres bancaires, parfois juste de la fraude. La plupart des clients réagissent négativement à ces types d'appels. Pour résoudre ce problème, nous avons développé le service «Spam Call Blocking», en se connectant auquel l'utilisateur arrête de recevoir des appels indésirables, et à la fin de chaque journée le système informe l'abonné des appels bloqués. Dans cet article, les scientifiques des données MTS Anna Rozhkova ( @RogotulkA ) et Olga Gerasimova ( @ynonaolga ) expliqueront comment ils ont développé un algorithme qui distingue les nombres de spammeurs du reste de la base d'abonnés.



Construction de modèles


Nous avons donc été confrontés à la tâche de la classification binaire.

En effet, comment distinguer un abonné (même très sociable, avec un large éventail de nouveaux contacts) d'un spammeur qui impose inlassablement les services d'un autre centre médical? Au début, nous considérions ces numéros qui téléphonaient à de nombreux abonnés différents comme du spam, mais il s'est avéré difficile de les distinguer des magasins en ligne. Ensuite, nous avons décidé de prendre les numéros, dont les appels sont souvent interrompus, mais les gens abandonnent parfois les appels lorsqu'ils ne sont tout simplement pas à l'aise de parler. Nous avons également testé l'hypothèse selon laquelle les abonnés ne rappelleront pas les spammeurs (dans un court laps de temps après un appel manqué), mais il y avait trop de tels numéros, peut-être que pour certains abonnés, c'est un comportement standard, ils ne rappellent pas à des amis. En conséquence, nous avons décidé que les nombres de spam diffèrent par le niveau d'insatisfaction des utilisateurs à leur égard. Par conséquent, commela variable cible a été prise en nombre, qui a reçu beaucoup de plaintes, et les exemples négatifs ont été marqués ceux qui ont peu ou pas d'avis négatifs.

Des données agrégées de l'activité d'abonné des abonnés ont été utilisées comme signes: la durée moyenne des appels, les périodes de la journée avec l'activité la plus élevée, la durée moyenne d'une pause entre les appels, la vitesse de mise à jour du cercle de contacts, et bien d'autres. Nous avons également remarqué que de nombreux spammeurs sélectionnent de «beaux numéros» ou similaires à ceux connus (par exemple, le numéro de la hotline de la banque) et ajoutent de telles fonctionnalités binaires. 

Sélection métrique


L'étape suivante consistait à choisir une métrique d'optimisation. Dans notre décision, il était important de ne pas bloquer les appels des numéros ordinaires, nous avons donc déterminé que la précision du modèle devait être d'au moins 95%. La précision est le pourcentage de nombres reconnus comme objets d'une classe de spam que le modèle a correctement prédit. Mais il est important de bloquer autant de numéros indésirables que possible, alors choisissez le rappel maximum (rappel) pour un niveau de précision acceptable. La version finale du modèle a les indicateurs suivants: 95% de précision, rappel 94%. Maintenant, le modèle respecte le calendrier et se réentraîne régulièrement pour noter les changements dans l'activité des appels de divers groupes d'abonnés, et ces mesures sont vérifiées pour s'assurer qu'elles ne tombent pas en dessous de 90% chacune.



En raison du fait que les nombres de spam sont beaucoup plus petits que d'habitude, c'est-à-dire que l'échantillon est déséquilibré, le nombre d'exemples négatifs a été réduit par rapport aux positifs (sous-échantillonnage). Dans l'échantillon de validation, le ratio de classe a été choisi réel afin d'avoir une idée de la qualité du modèle «en combat». En outre, seuls les numéros de spam qui étaient actifs à une certaine date en raison de l'incohérence des spammeurs ont été inclus dans l'échantillon: il existe des périodes de numérotation active et une période de passivité lorsqu'ils effectuent plusieurs appels, le plus susceptible de maintenir le numéro. Parfois, les numéros après la campagne sont bloqués et transférés à un autre propriétaire.

En tant qu'algorithme, l'implémentation de xgboost boosting a été utilisée, car elle a donné les meilleurs résultats sur l'échantillon de validation. Les signes importants pour le modèle se sont avérés être: des données sur l'activité des abonnés à différents moments de la journée, le nombre d'appels courts, l'étendue du cercle d'amis. Un fait intéressant est que la fonctionnalité de l'opérateur de télécommunications est entrée dans les principales fonctionnalités. Ci-dessous sur le graphique, nous avons anonymisé les opérateurs mobiles et présenté des statistiques sur l'utilisation de leurs numéros par les spammeurs:


Essai


Dans cette tâche, il n'a pas été possible de réaliser des tests A / B: le service au niveau du réseau n'implique pas l'existence de différentes listes de numéros de spam, nous avons donc lancé le pilote de la première version du modèle au sein de l'entreprise, les collègues et la direction sont devenus testeurs. L'une des caractéristiques positives des tests internes est la rétroaction rapide. Nous avons immédiatement commencé à poser des questions:

  • pourquoi ce nombre est-il passé?
  • pourquoi avez-vous bloqué ce numéro?
  • Je n'ai pas besoin d'une autre assurance auto (combien puis-je?!)


Notre expérience personnelle est également devenue une raison supplémentaire de rechercher de nouvelles fonctionnalités pour le modèle, lorsque, après une longue attente de livraison depuis la boutique en ligne, le téléphone du courrier a été trouvé dans la liste des bloqués.

Lancement en prod


Un autre problème sérieux dans la classification des numéros était la différence d'idées sur ce qu'était le spam: pour certains, les appels avec une offre de prêt sont des informations inutiles, et quelqu'un attend des offres personnelles et choisit la meilleure, de sorte que l'abonné a eu la possibilité de consulter la liste des appelants les numéros avec la possibilité de désactiver ceux qui lui sont potentiellement utiles.



L'une des demandes les plus courantes des utilisateurs pour finaliser le service était d'étendre l'informativité du rapport SMS sur les numéros bloqués quotidiennement avec des données sur les catégories d'appels, par exemple, les banques, les services médicaux ou l'immobilier.

Les premières versions du modèle ont été construites sur des fonctionnalités collectées sur une longue période de temps, mais nous avons remarqué que le modèle ne considère souvent pas les nombres qui semblaient récemment être du spam, c'est-à-dire de nouveaux numéros ou ceux qui ont commencé des appels actifs après une période de «silence». Pour résoudre ce problème, nous avons construit un modèle supplémentaire sur les fonctionnalités collectées sur une période plus courte. Il ne suffisait pas d'ajouter des fonctionnalités «courtes» à la vitrine pour la formation, car les exemples de formation eux-mêmes sont différents: les abonnés actifs pendant de longues et courtes périodes ne correspondent pas.

Nos autres plans pour le développement du produit comprennent la création de listes de spam individuelles, en tenant compte du profil du client et de ses besoins, en transférant le modèle en mode en ligne, afin qu'il rattrape le pic de l'activité des spammeurs à partir d'ici et maintenant.

All Articles