Parfois, pour rĂ©soudre un problĂšme, il suffit de le regarder sous un angle diffĂ©rent. MĂȘme si au cours des dix derniĂšres annĂ©es des problĂšmes similaires ont Ă©tĂ© rĂ©solus de la mĂȘme maniĂšre avec des effets diffĂ©rents, ce nâest pas un fait que cette mĂ©thode soit la seule.
Il existe un sujet tel que le taux de dĂ©sabonnement des clients. La chose est inĂ©vitable, car les clients de toute entreprise peuvent, pour de nombreuses raisons, cesser dâutiliser ses produits ou services. Bien sĂ»r, pour une entreprise, le taux de dĂ©sabonnement est une action naturelle, mais pas la plus souhaitable, donc chacun essaie de minimiser ce taux de dĂ©sabonnement. Mieux encore, prĂ©disez la probabilitĂ© de dĂ©sabonnement pour une catĂ©gorie particuliĂšre d'utilisateurs, ou un utilisateur spĂ©cifique, et suggĂ©rez quelques Ă©tapes pour les fidĂ©liser.
Il faut analyser et essayer de fidéliser le client, si possible, pour au moins les raisons suivantes :
- attirer de nouveaux clients coĂ»te plus cher que les procĂ©dures de fidĂ©lisation. En rĂšgle gĂ©nĂ©rale, pour attirer de nouveaux clients, vous devez dĂ©penser de l'argent (publicitĂ©), tandis que les clients existants peuvent ĂȘtre activĂ©s avec une offre spĂ©ciale avec des conditions spĂ©ciales ;
- Comprendre les raisons pour lesquelles les clients partent est la clé pour améliorer les produits et services.
Il existe des approches standard pour prĂ©dire le taux de dĂ©sabonnement. Mais lors de l'un des championnats d'IA, nous avons dĂ©cidĂ© d'essayer la distribution Weibull pour cela. Il est le plus souvent utilisĂ© pour lâanalyse de la capacitĂ© de survie, les prĂ©visions mĂ©tĂ©orologiques, lâanalyse des catastrophes naturelles, lâingĂ©nierie industrielle, etc. La distribution de Weibull est une fonction de distribution spĂ©ciale paramĂ©trĂ©e par deux paramĂštres
Đž
.
Wikipedia
En gĂ©nĂ©ral, câest une chose intĂ©ressante, mais pour prĂ©voir les sorties de capitaux, et dans la fintech en gĂ©nĂ©ral, ce nâest pas trĂšs souvent utilisĂ©. Sous la coupe, nous vous expliquerons comment nous (Data Mining Laboratory) avons fait cela, remportant simultanĂ©ment l'or au championnat d'intelligence artificielle dans la catĂ©gorie « IA dans les banques ».
à propos du taux de désabonnement en général
Comprenons un peu ce qu'est le taux de désabonnement des clients et pourquoi il est si important. Une clientÚle est importante pour une entreprise. De nouveaux clients arrivent sur cette base, par exemple aprÚs avoir découvert un produit ou un service grùce à une publicité, vivent pendant un certain temps (utilisent activement les produits) et aprÚs un certain temps, cessent de l'utiliser. Cette période est appelée « Cycle de vie du client » - un terme qui décrit les étapes par lesquelles passe un client lorsqu'il découvre un produit, prend une décision d'achat, paie, utilise et devient un consommateur fidÚle, et finalement cesse d'utiliser le produit. pour une raison ou une autre. En conséquence, le taux de désabonnement est la derniÚre étape du cycle de vie du client, lorsque le client cesse d'utiliser les services, et pour une entreprise, cela signifie que le client a cessé de générer des bénéfices ou tout avantage.
Chaque client bancaire est une personne spécifique qui choisit l'une ou l'autre carte bancaire spécifiquement pour ses besoins. Si vous voyagez souvent, une carte avec des miles vous sera utile. AchÚte beaucoup - bonjour, carte de cashback. Il achÚte beaucoup dans des magasins spécifiques - et il existe déjà un partenaire plastique spécial pour cela. Bien entendu, il arrive parfois qu'une carte soit sélectionnée sur la base du critÚre « Service le moins cher ». En général, il y a suffisamment de variables ici.
Et c'est aussi une personne qui choisit elle-mĂȘme sa banque - Ă quoi ça sert de choisir une carte d'une banque dont les succursales se trouvent uniquement Ă Moscou et dans la rĂ©gion, quand on vient de Khabarovsk ? MĂȘme si une carte d'une telle banque est au moins 2 fois plus rentable, la prĂ©sence d'agences bancaires Ă proximitĂ© reste un critĂšre important. Oui, 2019 est dĂ©jĂ lĂ et le numĂ©rique est notre tout, mais un certain nombre de problĂšmes avec certaines banques ne peuvent ĂȘtre rĂ©solus qu'en agence. De plus, encore une fois, une partie de la population fait bien plus confiance Ă une banque physique quâĂ une application sur smartphone, il faut Ă©galement en tenir compte.
En consĂ©quence, une personne peut avoir de nombreuses raisons de refuser les produits bancaires (ou la banque elle-mĂȘme). J'ai changĂ© de travail et le tarif de la carte est passĂ© de salaire à « Pour simples mortels », ce qui est moins rentable. J'ai dĂ©mĂ©nagĂ© dans une autre ville oĂč il n'y a pas d'agences bancaires. Je nâai pas aimĂ© lâinteraction avec lâopĂ©rateur non qualifiĂ© de lâagence. Autrement dit, il peut y avoir encore plus de raisons de fermer un compte que d'utiliser le produit.
Et le client peut non seulement exprimer clairement son intention - venir Ă la banque et rĂ©diger une dĂ©claration, mais simplement cesser d'utiliser les produits sans rĂ©silier le contrat. Il a Ă©tĂ© dĂ©cidĂ© dâutiliser lâapprentissage automatique et lâIA pour comprendre ces problĂšmes.
De plus, le dĂ©sabonnement des clients peut survenir dans nâimporte quel secteur (tĂ©lĂ©communications, fournisseurs dâaccĂšs Internet, compagnies dâassurance, en gĂ©nĂ©ral, partout oĂč il existe une clientĂšle et des transactions pĂ©riodiques).
Qu'avons-nous fait
Tout d'abord, il Ă©tait nĂ©cessaire de dĂ©crire une limite claire - Ă partir de quel moment nous commençons Ă considĂ©rer que le client est parti. Du point de vue de la banque qui nous a fourni les donnĂ©es pour notre travail, le statut d'activitĂ© du client Ă©tait binaire : il est actif ou non. Il y avait un indicateur ACTIVE_FLAG dans la table "ActivitĂ©", dont la valeur pouvait ĂȘtre "0" ou "1" ("Inactif" et "Actif" respectivement). Et tout irait bien, mais une personne est telle qu'elle peut l'utiliser activement pendant un certain temps, puis sortir de la liste active pendant un mois - elle est tombĂ©e malade, est partie en vacances dans un autre pays ou est mĂȘme allĂ©e tester un carte d'une autre banque. Ou peut-ĂȘtre quâaprĂšs une longue pĂ©riode dâinactivitĂ©, recommencez Ă utiliser les services de la banque
Par conséquent, nous avons décidé d'appeler une période d'inactivité une certaine période de temps continue pendant laquelle le drapeau correspondant était mis à « 0 ».

Les clients passent dâinactifs Ă actifs aprĂšs des pĂ©riodes dâinactivitĂ© de durĂ©e variable. Nous avons la possibilitĂ© de calculer le degrĂ© de valeur empirique de la « fiabilitĂ© des pĂ©riodes d'inactivitĂ© » - c'est-Ă -dire la probabilitĂ© qu'une personne recommence Ă utiliser les produits bancaires aprĂšs une inactivitĂ© temporaire.
Par exemple, ce graphique montre la reprise d'activité (ACTIVE_FLAG=1) des clients aprÚs plusieurs mois d'inactivité (ACTIVE_FLAG=0).

Nous allons ici clarifier un peu l'ensemble de données avec lequel nous avons commencé à travailler. Ainsi, la banque a fourni des informations agrégées sur 19 mois dans les tableaux suivants :
- « Activité » - transactions mensuelles des clients (par cartes, banque en ligne et banque mobile), y compris la paie et les informations sur le chiffre d'affaires.
- "Cartes" - données sur toutes les cartes dont dispose le client, avec une grille tarifaire détaillée.
- « Accords » - informations sur les accords du client (ouverts et fermĂ©s) : prĂȘts, dĂ©pĂŽts, etc., indiquant les paramĂštres de chacun.
- « Clients » - un ensemble de données démographiques (sexe et ùge) et la disponibilité des informations de contact.
Pour le travail, nous avions besoin de toutes les tables à l'exception de la « Carte ».
Il y avait ici une autre difficultĂ©: dans ces donnĂ©es, la banque n'indiquait pas quel type d'activitĂ© avait lieu sur les cartes. Autrement dit, nous pouvions comprendre s'il y avait des transactions ou non, mais nous ne pouvions plus dĂ©terminer leur type. Par consĂ©quent, il nâĂ©tait pas clair si le client retirait de lâargent, recevait un salaire ou dĂ©pensait lâargent pour des achats. Nous n'avions pas non plus de donnĂ©es sur les soldes des comptes, ce qui aurait Ă©tĂ© utile.
L'Ă©chantillon lui-mĂȘme Ă©tait impartial : dans cet Ă©chantillon, sur 19 mois, la banque n'a fait aucune tentative pour fidĂ©liser les clients et minimiser les sorties.
Donc, à propos des périodes d'inactivité.
Pour formuler une dĂ©finition du churn, une pĂ©riode dâinactivitĂ© doit ĂȘtre sĂ©lectionnĂ©e. Pour crĂ©er une prĂ©vision de dĂ©sabonnement Ă un moment donnĂ©
, vous devez avoir un historique client d'au moins 3 mois Ă intervalle
. Notre historique étant limité à 19 mois, nous avons décidé de prendre une période d'inactivité de 6 mois, si disponible. Et pour le délai minimum pour une prévision de qualité, nous avons pris 3 mois. Nous avons pris les chiffres sur 3 et 6 mois de maniÚre empirique en nous basant sur une analyse du comportement des données clients.
Nous avons formulé la définition du churn comme suit : mois de désabonnement des clients
il s'agit du premier mois avec ACTIVE_FLAG=0, à partir duquel à partir de ce mois il y a au moins six zéros consécutifs dans le champ ACTIVE_FLAG, c'est-à -dire le mois à partir duquel le client a été inactif pendant 6 mois.

Nombre de clients partis

Nombre de clients restants
Comment est calculé le taux de désabonnement ?
Dans de telles compétitions, et dans la pratique en général, les sorties sont souvent prédites de cette maniÚre. Le client utilise des produits et services à différentes périodes de temps, les données sur l'interaction avec lui sont représentées comme un vecteur de caractéristiques d'une longueur fixe n. Le plus souvent, ces informations comprennent :
- Données caractérisant l'utilisateur (données démographiques, segment marketing).
- Historique d'utilisation des produits et services bancaires (il s'agit d'actions de clients qui sont toujours liées à une heure ou une période précise de l'intervalle dont nous avons besoin).
- Données externes, s'il était possible de les obtenir - par exemple, des avis sur les réseaux sociaux.
Et aprÚs cela, ils en dérivent une définition du taux de désabonnement, différente pour chaque tùche. Ensuite, ils utilisent un algorithme d'apprentissage automatique, qui prédit la probabilité qu'un client quitte l'entreprise.
basé sur un vecteur de facteurs
. Pour entraßner l'algorithme, l'un des cadres bien connus pour construire des ensembles d'arbres de décision est utilisé, , , ou des modifications de celui-ci.
Lâalgorithme en lui-mĂȘme nâest pas mauvais, mais il prĂ©sente plusieurs inconvĂ©nients sĂ©rieux lorsquâil sâagit de prĂ©dire le taux de dĂ©sabonnement.
- Il nâa pas de soi-disant « mĂ©moire ». L'entrĂ©e du modĂšle est un nombre spĂ©cifiĂ© d'entitĂ©s qui correspondent au moment actuel. Afin de stocker des informations sur l'historique des modifications des paramĂštres, il est nĂ©cessaire de calculer des caractĂ©ristiques spĂ©ciales qui caractĂ©risent les modifications des paramĂštres au fil du temps, par exemple le nombre ou le montant des transactions bancaires au cours des 1,2,3, XNUMX, XNUMX derniers mois. Cette approche ne peut reflĂ©ter que partiellement la nature des changements temporaires.
- Horizon de prévision fixe. Le modÚle n'est capable de prédire l'attrition des clients que sur une période de temps prédéfinie, par exemple une prévision un mois à l'avance. Si une prévision est requise pour une période de temps différente, par exemple trois mois, vous devez alors reconstruire l'ensemble de formation et recycler un nouveau modÚle.
Notre approche
Nous avons immĂ©diatement dĂ©cidĂ© de ne pas utiliser d'approches standards. En plus de nous, 497 autres personnes se sont inscrites au championnat, chacune ayant derriĂšre elle une expĂ©rience considĂ©rable. Donc essayer de faire quelque chose selon un schĂ©ma standard dans de telles conditions nâest pas une bonne idĂ©e.
Et nous avons commencĂ© Ă rĂ©soudre les problĂšmes rencontrĂ©s par le modĂšle de classification binaire en prĂ©disant la distribution de probabilitĂ© des dĂ©lais de dĂ©sabonnement des clients. Une approche similaire peut ĂȘtre observĂ©e , elle vous permet de prĂ©dire le taux de dĂ©sabonnement de maniĂšre plus flexible et de tester des hypothĂšses plus complexes que dans l'approche classique. En tant que famille de distributions modĂ©lisant le temps de sortie, nous avons choisi la distribution pour son utilisation gĂ©nĂ©ralisĂ©e dans lâanalyse de survie. Le comportement du client peut ĂȘtre considĂ©rĂ© comme une sorte de survie.
Voici des exemples de distributions de densité de probabilité de Weibull en fonction des paramÚtres
Đž
:

Il sâagit de la fonction de densitĂ© de probabilitĂ© de trois clients diffĂ©rents au fil du temps. Le temps est prĂ©sentĂ© en mois. En d'autres termes, ce graphique montre quand un client est le plus susceptible de se dĂ©sinscrire au cours des deux prochains mois. Comme vous pouvez le constater, un client avec une distribution a un plus grand potentiel de partir plus tĂŽt que les clients avec le Weibull (2, 0.5) et le Weibull. (3,1) distributions.
Le résultat est un modÚle qui, pour chaque client, pour chaque
Le mois prédit les paramÚtres de la distribution de Weibull, qui reflÚte le mieux l'occurrence de la probabilité de sortie au fil du temps. Plus en détail:
- Les fonctionnalités cibles de l'ensemble de formation sont le temps restant jusqu'au désabonnement au cours d'un mois spécifique pour un client spécifique.
- S'il n'y a pas de taux de désabonnement pour un client, nous supposons que le temps de désabonnement est supérieur au nombre de mois entre le mois en cours et la fin de l'historique dont nous disposons.
- ModÚle utilisé : réseau de neurones récurrent avec couche LSTM.
- Comme fonction de perte, nous utilisons la fonction de log-vraisemblance négative pour la distribution de Weibull.
Voici les avantages de cette méthode :
- La distribution de probabilitĂ©, en plus de la possibilitĂ© Ă©vidente de classification binaire, permet de prĂ©dire de maniĂšre flexible divers Ă©vĂ©nements, par exemple si un client cessera d'utiliser les services de la banque dans les 3 mois. De plus, si nĂ©cessaire, diverses mesures peuvent ĂȘtre moyennĂ©es sur cette distribution.
- Le rĂ©seau neuronal rĂ©current LSTM dispose de mĂ©moire et utilise efficacement tout l'historique disponible. Ă mesure que lâhistoire sâĂ©toffe ou sâaffine, la prĂ©cision augmente.
- L'approche peut ĂȘtre facilement adaptĂ©e lors de la division de pĂ©riodes en pĂ©riodes plus petites (par exemple, lors de la division des mois en semaines).
Mais il ne suffit pas de créer un bon modÚle, il faut aussi bien évaluer sa qualité.
Comment la qualité a-t-elle été évaluée ?
Nous avons choisi Lift Curve comme métrique. Il est utilisé en entreprise pour de tels cas en raison de son interprétation claire, il est bien décrit О . Si vous décrivez la signification de cette métrique en une phrase, ce serait « Combien de fois l'algorithme fait-il la meilleure prédiction au cours de la premiÚre ?
% que de maniÚre aléatoire."
ModĂšles de formation
Les conditions du concours nâont pas Ă©tabli de mesure de qualitĂ© spĂ©cifique permettant de comparer diffĂ©rents modĂšles et approches. De plus, la dĂ©finition du taux de dĂ©sabonnement peut ĂȘtre diffĂ©rente et dĂ©pendre de l'Ă©noncĂ© du problĂšme, qui, Ă son tour, est dĂ©terminĂ© par les objectifs commerciaux. Par consĂ©quent, afin de comprendre quelle mĂ©thode est la meilleure, nous avons formĂ© deux modĂšles :
- Une approche de classification binaire couramment utilisée utilisant un algorithme d'apprentissage automatique d'arbre de décision d'ensemble ();
- ModĂšle Weibull-LSTM
L'ensemble de tests Ă©tait composĂ© de 500 clients prĂ©sĂ©lectionnĂ©s qui ne faisaient pas partie de l'ensemble de formation. Les hyper-paramĂštres ont Ă©tĂ© sĂ©lectionnĂ©s pour le modĂšle par validation croisĂ©e, ventilĂ©s par client. Les mĂȘmes ensembles de fonctionnalitĂ©s ont Ă©tĂ© utilisĂ©s pour entraĂźner chaque modĂšle.
En raison du fait que le modÚle n'a pas de mémoire, des fonctionnalités spéciales ont été adoptées, montrant le rapport entre les modifications des paramÚtres sur un mois et la valeur moyenne des paramÚtres au cours des trois derniers mois. Ce qui a caractérisé le taux de variation des valeurs au cours de la derniÚre période de trois mois. Sans cela, le modÚle basé sur Random Forest serait désavantagé par rapport à Weibull-LSTM.
Pourquoi LSTM avec distribution de Weibull est meilleur qu'une approche d'arbre de décision d'ensemble
Tout est clair ici en seulement quelques images.

Comparaison de la courbe de levage pour l'algorithme classique et Weibull-LSTM

Comparaison de la métrique Lift Curve par mois pour l'algorithme classique et Weibull-LSTM
En gĂ©nĂ©ral, LSTM est supĂ©rieur Ă lâalgorithme classique dans presque tous les cas.
Prédiction du taux de désabonnement
Un modĂšle basĂ© sur un rĂ©seau neuronal rĂ©current avec des cellules LSTM avec une distribution de Weibull peut prĂ©dire l'attrition Ă l'avance, par exemple prĂ©dire l'attrition des clients dans les n prochains mois. ConsidĂ©rons le cas pour n = 3. Dans ce cas, pour chaque mois, le rĂ©seau de neurones doit dĂ©terminer correctement si le client va partir, Ă partir du mois suivant et jusqu'au niĂšme mois. En dâautres termes, il doit dĂ©terminer correctement si le client restera aprĂšs n mois. Cela peut ĂȘtre considĂ©rĂ© comme une prĂ©vision Ă l'avance : prĂ©dire le moment oĂč le client commençait tout juste Ă penser Ă partir.
Comparons la courbe de levage pour Weibull-LSTM 1, 2 et 3 mois avant la sortie :

Nous avons dĂ©jĂ Ă©crit plus haut que les prĂ©visions faites pour les clients qui ne sont plus actifs depuis un certain temps sont Ă©galement importantes. Par consĂ©quent, nous ajouterons ici Ă l'Ă©chantillon les cas oĂč le client parti est dĂ©jĂ inactif depuis un ou deux mois et vĂ©rifierons que Weibull-LSTM classe correctement ces cas comme dĂ©sabonnement. Puisque de tels cas Ă©taient prĂ©sents dans lâĂ©chantillon, nous nous attendons Ă ce que le rĂ©seau les gĂšre correctement :

Fidélisation de la clientÚle
En fait, c'est la principale chose Ă faire, avoir en main l'information que tel ou tel client s'apprĂȘte Ă arrĂȘter d'utiliser le produit. En parlant de construire un modĂšle qui pourrait offrir quelque chose d'utile aux clients afin de les fidĂ©liser, cela ne peut pas ĂȘtre fait si vous n'avez pas un historique de tentatives similaires qui se termineraient bien.
Nous nâavions pas une telle histoire, alors nous lâavons dĂ©cidĂ© de cette façon.
- Nous construisons un modÚle qui identifie les produits intéressants pour chaque client.
- Chaque mois, nous exécutons le classificateur et identifions les clients potentiels.
- Nous proposons le produit à certains clients, selon le modÚle du point 1, et mémorisons nos actions.
- AprÚs quelques mois, nous examinons lesquels de ces clients potentiellement partants sont partis et lesquels sont restés. Ainsi, nous formons un échantillon de formation.
- Nous entraßnons le modÚle en utilisant l'historique obtenu à l'étape 4.
- Eventuellement, nous répétons la procédure en remplaçant le modÚle de l'étape 1 par le modÚle obtenu à l'étape 5.
Un test de la qualitĂ© d'une telle rĂ©tention peut ĂȘtre effectuĂ© par des tests A/B rĂ©guliers - nous divisons les clients qui quittent potentiellement en deux groupes. Nous proposons Ă lâun des produits basĂ©s sur notre modĂšle de rĂ©tention, et Ă lâautre nous nâoffrons rien. Nous avons dĂ©cidĂ© de former un modĂšle qui pourrait ĂȘtre utile dĂ©jĂ au point 1 de notre exemple.
Nous voulions rendre la segmentation aussi interprétable que possible. Pour ce faire, nous avons choisi plusieurs caractéristiques facilement interprétables : le nombre total de transactions, les salaires, la rotation totale des comptes, l'ùge, le sexe. Les fonctionnalités du tableau « Cartes » n'ont pas été prises en compte comme non informatives, et les fonctionnalités du tableau 3 « Contrats » n'ont pas été prises en compte en raison de la complexité du traitement afin d'éviter les fuites de données entre l'ensemble de validation et l'ensemble de formation.
Le clustering a Ă©tĂ© rĂ©alisĂ© Ă l'aide de modĂšles de mĂ©lange gaussiens. Le critĂšre d'information d'Akaike nous a permis de dĂ©terminer 2 optima. Le premier optimum correspond Ă 1 cluster. Le deuxiĂšme optimum, moins prononcĂ©, correspond Ă 80 clusters. Sur la base de ce rĂ©sultat, nous pouvons tirer la conclusion suivante : il est extrĂȘmement difficile de diviser des donnĂ©es en clusters sans information a priori donnĂ©e. Pour un meilleur clustering, vous avez besoin de donnĂ©es dĂ©crivant chaque client en dĂ©tail.
Par consĂ©quent, le problĂšme de lâapprentissage supervisĂ© a Ă©tĂ© envisagĂ© afin dâoffrir Ă chaque client un produit diffĂ©rent. Les produits suivants ont Ă©tĂ© considĂ©rĂ©s : « DĂ©pĂŽt Ă terme », « Carte de crĂ©dit », « DĂ©couvert », « PrĂȘt Ă la consommation », « PrĂȘt automobile », « HypothĂšque ».
Les donnĂ©es incluaient un autre type de produit : le « Compte courant ». Mais nous ne l'avons pas considĂ©rĂ© en raison de son faible contenu informatif. Pour les utilisateurs clients d'une banque, c'est-Ă -dire n'a pas arrĂȘtĂ© d'utiliser ses produits, un modĂšle a Ă©tĂ© construit pour prĂ©dire quel produit pourrait les intĂ©resser. La rĂ©gression logistique a Ă©tĂ© choisie comme modĂšle et la valeur Lift pour les 10 premiers percentiles a Ă©tĂ© utilisĂ©e comme mesure d'Ă©valuation de la qualitĂ©.
La qualitĂ© du modĂšle peut ĂȘtre Ă©valuĂ©e sur la figure.

Résultats du modÚle de recommandation de produits pour les clients
Total
Cette approche nous a valu la premiÚre place dans la catégorie « IA dans les banques » du Championnat d'IA RAIF-Challenge 2017.

Apparemment, lâessentiel Ă©tait dâaborder le problĂšme sous un angle non conventionnel et dâutiliser une mĂ©thode habituellement utilisĂ©e pour dâautres situations.
MĂȘme si un exode massif dâutilisateurs pourrait bien constituer une catastrophe naturelle pour les services.
Cette mĂ©thode peut ĂȘtre prise en compte pour tout autre domaine oĂč il est important de prendre en compte les sorties, et pas seulement les banques. Par exemple, nous l'avons utilisĂ© pour calculer nos propres sorties - dans les succursales de Rostelecom en SibĂ©rie et Ă Saint-PĂ©tersbourg.
Société "Data Mining Laboratory" "Portail de recherche "Sputnik"
Source: habr.com
