Final Project
Final Project
Mémoire de Master
Domaine : Informatique
Thème
PFE No : MIND/023/2020
Remerciements
En préambule nous tenons à remercier dieu, tout puissant, qui nous a donné la force, la
santé, la patience et la volonté pour réaliser ce travail.
Nos chaleureux remerciements à toute l’équipe de Djezzy, en particulier à «M. Rafik
BENLAMINE» et notre encadreur «Mme. Nawel ZAIA» qui nous ont accueillies au sein de
leur service pour accomplir notre stage pratique.
En guise de reconnaissance, nous tenons à présenter nos remerciements les plus distingués
à nos promoteurs «Pr. Youcef AKLOUF» et «M. Ahmed ZEBOUCHI» pour toute l’attention
qu’ils nous ont accordée, pour leur patience et pour leur confiance. Nous les remercions aussi
pour leurs conseils judicieux, pour leur disponibilité et pour le temps qu’ils nous ont consacré
afin de pouvoir mener à terme ce modeste travail, que nous espérons être à la hauteur.
Nous remercions également les membres de l’équipe fraude et de l’équipe big data, en
particulier «M. Salah ABROUS», «M. Djamel RAIAH», «M. Youcef OULD KHAOUA»,
«Mme. Yasmine BOUCHEMA» et «Mme. Meriem BEZGALI» pour leur aide, leurs conseils
et encouragements.
Nos sincères remerciements également aux membres du jury pour l’intérêt qu’ils ont porté
à notre recherche en acceptant d’examiner notre travail.
Enfin, nous adressons nos plus profonds remerciements à nos parents pour leur patience
sans fin, leur compréhension et leur soutien moral et physique tout au long de notre parcours.
Nous leur devons ce que nous sommes aujourd’hui et ce que nous serons demain.
Table des matières
I État de l’art 15
1 La Fraude en télécommunication 16
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 Notions de base en télécommunication . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.1 Opérateur de télécommunications . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2 Opérateur mobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.3 Le réseau de téléphonie mobile . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.4 Voix sur IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Généralités sur la fraude en télécommunication . . . . . . . . . . . . . . . . . . . 20
1.4.1 Qu’est-ce que la fraude en télécommunication ? . . . . . . . . . . . . . . 20
1.4.2 Motivations des fraudeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.3 Impact de la fraude en télécommunication . . . . . . . . . . . . . . . . . 21
1.4.4 Types de fraude en télécommunication . . . . . . . . . . . . . . . . . . . . 21
1.5 La fraude voice SIM box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.1 Qu’est ce qu’une SIM box ? . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.2 Scénario de la fraude par SIM box . . . . . . . . . . . . . . . . . . . . . . 27
1.5.3 Impacts de la fraude par SIM Box . . . . . . . . . . . . . . . . . . . . . . 28
1.5.4 Méthodes de détection de la fraude par SIM box . . . . . . . . . . . . . 29
1.5.5 Difficultés à détecter la fraude par SIM box . . . . . . . . . . . . . . . . . 30
1.5.6 Vers une méthode d’intelligence artificielle . . . . . . . . . . . . . . . . . 30
1.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
2 L’apprentissage automatique 33
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2 Qu’est-ce que l’apprentissage automatique . . . . . . . . . . . . . . . . . . . . . . 34
2.3 L’apprentissage automatique et l’aide à la décision . . . . . . . . . . . . . . . . . 34
2.4 Cycle de vie d’un projet d’apprentissage automatique . . . . . . . . . . . . . . . 35
2.5 Types d’apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.5.1 L’apprentissage non supervisé . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.5.2 L’apprentissage supervisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.6 Découpage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.7 Validation croisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.8 Les problèmes de sous-ajustement et sur-ajustement . . . . . . . . . . . . . . . . 42
2.9 Problème de classes déséquilibrées . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.9.1 Solution au niveau des données . . . . . . . . . . . . . . . . . . . . . . . . 43
2.9.2 Solution algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.10 Modèles utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.10.1 Réseau de neurones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.10.2 Forêt aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.10.3 XGBoost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.11 Métriques d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.11.1 Matrice de confusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.11.2 La précision globale (ACC) . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.11.3 La précision (P) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.11.4 Le rappel (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.11.5 F1-score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.11.6 Aire sous courbe (AUC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.11.7 La courbe ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.12 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
II Contribution 52
4
3.2 Nature des données en télécommunication . . . . . . . . . . . . . . . . . . . . . . 54
3.3 Acquisition des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.1 Collection des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.2 Exploration des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.3 Vérification de la qualité des données . . . . . . . . . . . . . . . . . . . . 57
3.4 Prétraitement des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.4.1 Nettoyage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.2 Ingénierie des fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.3 Sélection des caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.4 Transformation des données . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.5 Problème des données déséquilibrées . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.6 Découpage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4 Test et évaluation 65
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2 Technologies et bibliothèques utilisées . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2.1 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2.2 Anaconda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2.3 Numpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2.4 Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2.5 Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2.6 Seaborn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2.7 Scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2.8 TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2.9 Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2.10 Jupyter Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2.11 Apache Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2.12 Apache Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2.13 Apache Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2.14 Scala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2.15 Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5
4.2.16 Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2.17 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2.18 [Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2.19 Highcharts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3 Environnement de tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.4 Ré-échantillonnage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.5 Implémentation des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.5.1 Réseau de neurones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.5.2 Forêt aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.5.3 XGBoost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.6 Résultats et discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.6.1 Évaluation en terme de métriques . . . . . . . . . . . . . . . . . . . . . . 92
4.6.2 Évaluation en terme de temps de calculs . . . . . . . . . . . . . . . . . . 94
4.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5 Déploiement 96
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.2 Systèmes distribués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.2.1 Apache Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.2.2 HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.2.3 Écosystème Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.3 Processus de déploiement du modèle . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.3.1 Acquisition des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.3.2 Prétraitement des données . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.3.3 Prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.3.4 Stockage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.3.5 Présentation de l’application Web . . . . . . . . . . . . . . . . . . . . . . 105
5.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Appendices
6
Table des figures
7
4.4 Courbes de perte du ANN par rapport au nombre d’itérations . . . . . . . . . . 77
4.5 Courbes de perte du modèle ANN final par rapport au nombre d’itérations . . 78
4.6 Précision globale du modèle ANN final par rapport au nombre d’itérations . . 78
4.7 Score AUC du RF en variant max_depth . . . . . . . . . . . . . . . . . . . . . . 79
4.8 Score AUC du RF en fonction de n_estimators et max_depth . . . . . . . . . 80
4.9 Score AUC du RF en fonction de min_samples_leaf et min_samples_split . 81
4.10 Résultat du GridSearchCV du RF en variant max_depth et max_features . . 82
4.11 Score AUC du RF en variant ccp_alpha . . . . . . . . . . . . . . . . . . . . . . . 82
4.12 La courbe ROC du RF pour l’ensemble d’entraînement . . . . . . . . . . . . . . 84
4.13 La courbe ROC du RF pour l’ensemble de test . . . . . . . . . . . . . . . . . . . 84
4.14 Score AUC par rapport au nombre d’itérations pour le modèle RF final . . . . 84
4.15 Score AUC de XGBoost en variant le taux d’apprentissage . . . . . . . . . . . . 86
4.16 Résultat du GridSearchCV de XGBoost en variant max_depth, colsample_bytree
et subsample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.17 Score AUC de XGBoost en utilisant les résultats du GridSearchCV . . . . . . . 87
4.18 Résultat de la 2 ème itération du GridSearchCV de XGBoost en variant
max_depth, colsample_bytree et subsample . . . . . . . . . . . . . . . . . . . . 88
4.19 Score AUC de XGBoost en utilisant les résultats de la 2 ème itération du
GridSearchCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.20 Score AUC de XGBoost en fonction de min_child_weight et learning_rate . 89
4.21 Score AUC de XGBoost en variant gamma et min_child_weight . . . . . . . . 90
4.22 La courbe ROC de XGBoost pour l’ensemble d’entraînement . . . . . . . . . . 91
4.23 La courbe ROC de XGBoost pour l’ensemble de test . . . . . . . . . . . . . . . 91
4.24 Score AUC par rapport au nombre d’itérations pour le modèle final de XGBoost 92
8
5.9 Onglet Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.10 Onglet Blacklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.11 Fenêtre "Add CSV" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.12 Onglet Whitelist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.13 Fenêtre "Add phone number" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.14 Onglet Suspected IMEI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.15 Onglet Suspected CellID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.16 Onglet Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.17 Onglet Charts (partie1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.18 Onglet Charts (partie2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.19 Onglet Charts (partie2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.20 Onglet Performance (partie1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.21 Onglet Performance (partie2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.22 Onglet Users administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.23 Fenêtre "Add user" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.24 Fenêtre "Edit password" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.25 Onglet Cellid table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9
Liste des tableaux
10
Acronymes
FN False Negative.
FP False Positive.
IP Internet Protocol.
11
LAC Location Area Code.
RF Random Forest.
TN True Negative.
TP True Positive.
12
Introduction générale
La fraude représente l’une des plus grandes menaces pour les opérateurs de télécommuni-
cations. En effet, les pertes qu’elle engendre s’élèvent à des milliards de dollars chaque année.
Cette menace prend encore de l’ampleur avec la migration continue des technologies VoIP
qui présentent des vulnérabilités.
Malgré les pertes de revenus et de la qualité de service dues aux activités frauduleuses, les
recherches publiées restent assez limitées car elles fournissent aux fraudeurs les informations
nécessaires pour échapper à la détection. De plus, la non-disponibilité des données publiques
à cette issue représente un obstacle pour la communauté de recherche, limitant ainsi les
expérimentations liées à ce problème.
Parmi les différents types de fraude utilisant la technologie VoIP, la fraude par SIM
box est celle qui contribue le plus aux pertes globales des entreprises. Elle est connue par
ses techniques en constante évolution grâce aux simboxeurs qui ajustent constamment leur
comportement, afin d’échapper aux systèmes de détection.
Djezzy, grâce à ses techniques de détection des différents types de fraude, arrive à diminuer,
détecter et bloquer les activités frauduleuses. Cependant, pour la détection de la fraude par
SIM box, il existe des méthodes intelligentes, à la fois plus efficaces et plus rapides pouvant
améliorer la détection en diminuant les MOU des fraudeurs.
Pour cela, nous avons proposé à l’entreprise de mettre en place une solution pour améliorer
leur processus de détection de fraude par SIM box. Cette solution est basée sur deux axes :
la science de données pour l’exploitation des données massives des abonnées de Djezzy, afin
d’y effectuer une étude comportementale, et l’apprentissage automatique, qui, grâce à ses
algorithmes puissants, permet de développer des modèles prédictifs, afin d’identifier les cas
frauduleux.
Dans la présente étude, nous visons à exploiter à travers les outils big data les données des
utilisateurs de Djezzy afin de pouvoir mener une étude comparative entre trois algorithmes
d’apprentissage automatique : le réseau de neurones, la forêt aléatoire et XGBoost. Cette
comparaison nous permettra par la suite, de choisir le meilleur modèle pour la prédiction et
la détection de la fraude par SIM box.
13
Notre mémoire sera structuré en cinq chapitres :
14
Première partie
État de l’art
Chapitre 1
La Fraude en télécommunication
1.1 Introduction
Les opérateurs mobiles à travers le monde perdent des milliards de dollars chaque année
en raison d’activités frauduleuses. Cette pratique commence à prendre des proportions très
inquiétantes en Algérie. Optimum Telecom Algérie en est une parfaite illustration.
Dans ce chapitre, nous aborderons d’abord quelques notions de base en télécommunication
pour mieux cerner cette problématique, puis, nous présenterons l’organisme d’accueil, la
fraude en télécommunication et ses différents types, et enfin, nous détaillerons la fraude par
SIM box et ses méthodes de détection.
17
frauduleuses visant à nuire aux intérêts de l’entreprise et assurant ainsi l’amélioration de la
qualité de service, des revenues et du business continuity [1].
Avant de passer à la définition de la fraude en télécommunication et à ses différents
scénarios, il est essentiel d’aborder quelques notions de base.
18
Les réseaux de téléphonie mobile sont basés sur la notion de cellules. Chaque cellule pos-
sède une station de base, ou BTS (Base Transceiver Station), qui s’occupe des transmissions
radio sur la cellule. Associés à la station de base, des canaux de signalisation vont permettre
aux mobiles de communiquer avec la BTS et vice versa. Le réseau lui-même contient un
commutateur ou MSC (Mobile service Switching Center) qui communique avec les différents
systèmes radio [2].
Les téléphones mobiles utilisent une carte SIM avec un IMSI (International Mobile Sub-
scriber Identity) qui identifie de manière unique l’utilisateur sur le réseau.
19
1.4 Généralités sur la fraude en télécommunication
• Opportunités : les faiblesses des contrôles internes au sein des opérateurs de télécommu-
nications et les audits inefficaces offrent des opportunités aux fraudeurs pour commettre
leur acte facilement sans se faire prendre.
• Rationalisation : les fraudeurs considèrent que leurs crimes et leurs actions sont justifiés.
Ils n’adhèrent pas aux mêmes normes et standards sociaux acceptables.
• Capacités : les fraudeurs doivent avoir les compétences, les connaissances et l’expérience
nécessaires pour être en mesure de commettre efficacement leur fraude.
20
1.4.3 Impact de la fraude en télécommunication
La fraude représente un danger extrême pour la stabilité financière des entreprises et peut
nuire au bien-être de ses employés, actionnaires et utilisateurs. Elle reste un sérieux problème
de stabilité des indices économiques ; sachant que les conséquences à long terme sont encore
plus fâcheuses que celle se rapportant aux opérateurs en matière de baisse de revenus, il reste
entendu que le lien entre les communications mobiles et la productivité nationale est dûment
établi et constitue un frein dans le développement économique global des pays.
Selon un rapport publié par Europol Cybercrime Center et Trend Micro, la fraude en
télécommunication coûte au monde environ 32,7 milliards de dollars soit 29 milliards d’euros
par an. Le même rapport indique que ce type de fraude se développe rapidement dans le
Tiers-Monde et les pays insolvables [19].
La fraude entraîne non seulement une perte de revenus, mais aussi des conséquences
comme [20] :
L’IRSF (International Revenue Share Fraud) est l’un des types de fraude les plus persis-
tants dans l’industrie des télécommunications. Les fraudeurs utilisent souvent des ressources
illégales pour accéder au réseau d’un opérateur, le plus souvent par piratage de PBX (Pri-
vate Branch Exchange) lorsque les locaux ne sont pas surveillés, les mots de passe inchangés,
21
etc. puis détournent le trafic vers des numéros de téléphone surtaxés appelés international
premium rate numbers gérés par les fournisseurs de numéros surtaxés qui facturent des frais
exorbitants. Il est généralement perpétré par des groupes organisés utilisant des connexions
illégales pour diriger un grand volume d’appels vers des numéros de service à partage des
revenus à coût élevé, tirant parti des capacités d’itinérance des cartes SIM.
L’avantage vient du mécanisme de partage des revenus, qui permet au propriétaire du
numéro surtaxé de recevoir une partie des revenus de l’appel pour chaque minute du trafic
d’appel généré vers ce numéro.
Ce qui est alarmant à propos de l’IRSF est le fait qu’il soit déclenché par de nombreux
autres moyens de fraude : le piratage de PBX, le SIM cloning, via les malwares cachés dans
les applications mobiles appelant furtivement des numéros surtaxés ou encore l’incitation des
utilisateurs à rappeler les numéros surtaxés (un appel et raccroche ou wangiri).
La fraude wangiri
Wangiri, qui signifie littéralement en Japonais sonne et coupe, est l’une des méthodes
utilisées pour la fraude IRSF. Le fraudeur fait de chacun une cible en faisant des appels qui
sont censés inciter le destinataire à rappeler. La victime reçoit un appel qui se coupe après
la première sonnerie. L’écran affiche un appel manqué avec un numéro de téléphone inconnu.
Quand la victime rappelle, elle se connecte en effet à un numéro spécial coûteux (premium
rate number) et perd donc de l’argent. Une autre variante de l’escroquerie consiste à envoyer
un SMS (Short Message Service) demandant d’appeler [3].
22
Figure 1.5 – Scénario de la fraude wangiri [3]
B) OTT bypass
23
ligne, l’appel téléphonique est ré-acheminé sur IP vers l’application de chat vocal, plutôt que
d’être terminé sur l’infrastructure de télécommunications normale. En procédant ainsi, les
fraudeurs perçoivent une grande partie des frais d’appel et induisent une perte de revenus
pour les opérateurs contournés [21].
Le fraudeur exploite la SIM box qui est un matériel utilisé pour détourner les appels
internationaux entrants tout en les transférant via VoIP vers le réseau mobile. L’opérateur
transitoire achemine l’appel du pays A à travers une SIM box placée dans le pays B en
utilisant la VoIP, la SIM box redirige ensuite l’appel à travers l’opérateur mobile du pays B
et paye seulement pour l’appel local. L’incitatif ici est que le frais payé par l’opérateur mobile
du pays A est beaucoup plus élevé que le frais d’appel local, de sorte que le contournement
soit financièrement viable.
24
Figure 1.7 – Scénario de la fraude voice SIM box [5]
Un SMS A2P (Application to Person) est un texto qui part d’une application sur un
ordinateur à destination d’un individu. Les seuls clients sont des entreprises désirant envoyer
de gros volumes de SMS avec le prix le plus bas possible [22].
Les SIM box sont très utiles dans la fraude par SMS. Elles permettent aux fraudeurs de
passer leurs trafics via des SMS P2P (Person to Person) bon marché. La combinaison de
cela avec des opérateurs proposant des plans de promotion SMS illimités, est la combinaison
gagnante pour le fraudeur [23].
Donc par exemple, un SMS A2P envoyé par Facebook aux utilisateurs Djezzy passe par une
SIM box qui contient des cartes SIM permettant de contourner les frais de terminaison des
SMS.
25
1.5 La fraude voice SIM box
Parmi les différents scénarios présentés, la fraude voice SIM box est celle qui contribue
le plus aux pertes globales de Djezzy. Dans ce qui suit, nous nous concentrerons uniquement
sur la fraude voice SIM box et nous analyserons les différentes méthodes mises en place pour
la lutter.
26
1.5.2 Scénario de la fraude par SIM box
Pour expliquer comment la fraude par SIM box est commise, une explication de la voie
légitime pour les appels internationaux s’impose. Les opérateurs téléphoniques couvrent des
régions spécifiques du monde et se connectent avec d’autres pays via satellite. Il y a des
entreprises au milieu appelées les carriers (opérateurs transitoires), leur travail consiste uni-
quement à transférer les appels et les messages d’un pays vers un autre, par exemple la célèbre
société belge BICS.
Supposons qu’un appel provenant de France depuis l’opérateur Orange doit être établi
vers un numéro de l’opérateur Djezzy en Algérie. Orange prend l’appel et l’envoie via sa
porte internationale à un carrier. Le carrier achemine ensuite l’appel via VoIP à l’opérateur
Djezzy qui termine l’appel via son réseau vers le numéro de destination.
Dans les appels internationaux, l’opérateur reçoit de l’argent lorsqu’il reçoit un appel et
paie en retour lorsqu’il en envoie. Dans notre exemple, la première étape pour Orange est de
payer le carrier qui envoie l’appel depuis son réseau. Le carrier quant à lui paie Djezzy qui
a reçu l’appel.
Un appel international frauduleux évite la route légale en acheminant l’appel vers une
SIM box. Dans le cas de la fraude par SIM box, Orange prend l’appel et l’envoie via sa
porte internationale au carrier. Le carrier achemine ensuite l’appel via VoIP à une SIM
box qui se trouve en Algérie. Le boîtier électronique, grâce à une de ses cartes SIM locales,
achemine l’appel provenant de France vers l’Algérie comme étant un appel local de l’opérateur
Djezzy. L’appel est ainsi terminé via son réseau vers le numéro de destination. Le principal
inconvénient ici est qu’aucun des utilisateurs finaux ne sait que l’appel est acheminé via
une SIM box. Les frais d’interconnexion élevés exigés par les fournisseurs de services de
télécommunications pour terminer un appel international sont le principal catalyseur de cette
fraude. Même si des techniques sont proposées et mises en œuvre pour la prévenir, elle reste
un défi pour les opérateurs de télécommunications.
27
Figure 1.10 – Scénario d’un appel international légitime/détourné par une SIM box [8]
28
un temps d’attente généralement élevé pour les utilisateurs. Ces connexions hautement
compressées engendrent aussi une mauvaise qualité de la voix et des échos.
• Investissements inutiles : les points chauds et les embouteillages causés par le contour-
nement d’appels peuvent entraîner des coûts inutiles d’achat et de déploiement de
nouveaux équipements.
29
Toutefois, les fraudeurs ont trouvé des techniques pour échapper à la détection des
profils d’utilisation telle la simulation du comportement d’un abonné normal.
• Contrôle de distribution des cartes SIM : contrôler l’allocation en limitant le nombre
de cartes SIM par abonné rend le simboxing plus difficile pour les fraudeurs qui doivent
maintenir un approvisionnement suffisant en cartes pour commettre leur fraude.
Cependant, cette méthode ne sert qu’à diminuer l’ampleur de cette fraude et non pas
à la détecter ou la bloquer.
• La détection de la fraude par SIM box est une discipline en évolution. Tant qu’il existe
une méthode de détection, les simboxeurs modifieront leurs stratégies et essaieront
d’autres méthodes.
• L’échange d’idées dans la détection de la fraude par SIM box est limité, ce qui rend plus
difficile le développement de nouvelles méthodes de détection. Une description détaillée
des techniques utilisées pour détecter cette fraude dans le domaine public n’a pas de
sens car elle fournit aux simboxeurs les informations dont ils ont besoin pour échapper
à la détection.
• De nombreux opérateurs choisissent également de ne pas signaler la fraude par SIM
box, afin de ne pas saper la confiance des clients.
• L’apparition de nouveaux équipements qui facilitent la tâche aux simboxeurs.
30
Le big data et l’intelligence artificielle sont deux technologies indissociables. Les modèles
d’intelligence artificielle sont formés à partir de big data, tout comme les cerveaux humains
sont formés à partir de données accumulées à travers de multiples expériences.
Avec l’intelligence artificielle, les méthodes de statistiques traditionnelles coûteuses et
complexes deviennent plus accessibles, automatiques et surtout beaucoup plus rapides grâce
à l’analyse d’un volume important de données, permettant ainsi de détecter les comporte-
ments potentiellement à risque. L’apprentissage automatique (Machine Learning) est l’une
des techniques de l’intelligence artificielle qui ont démontré leur efficacité pour la détection
de la fraude dans les secteurs où un grand volume de transactions se fait chaque seconde.
Il permet aux machines d’apprendre et de s’améliorer automatiquement à partir de l’expé-
rience et des données, sans qu’elles soient explicitement programmées. Ces machines dites
intelligentes, nécessitent d’énormes quantités de données analysées [26].
De nombreuses techniques d’apprentissage automatique sont utilisées pour la détection
de fraude telle que les réseaux de neurones, les forêts aléatoires et les algorithmes de gradient
boosting, etc. Ces différentes techniques identifient les caractéristiques de la fraude et facilitent
ainsi la prédiction et la prévention des fraudeurs pour les facteurs clés suivants [27] :
• Evolutivité : plus l’ensemble de données est grand, plus l’algorithme d’apprentissage au-
tomatique est efficace. Initialement, la machine découvrira quels ensembles de données
sont frauduleux et lesquels ne le sont pas, afin de pouvoir prédire de telles situations
dans les transactions futures.
• Readiness : les tâches manuelles prennent beaucoup de temps. Par conséquent, les
stratégies d’apprentissage automatique sont utilisées pour obtenir des résultats plus
rapidement en traitant de grands ensembles de données en temps réel et en analysant
fréquemment et périodiquement de nouveaux jeux de données.
• Productivité : la nécessité d’effectuer des tâches redondantes réduit la productivité.
La tâche répétitive d’analyse des données est effectuée en continu par des algorithmes
d’apprentissage automatique et ne nécessite une intervention humaine qu’en cas de
besoin.
31
1.6 Conclusion
Dans ce chapitre, nous avons présenté quelques notions de base en télécommunication,
l’organisme d’accueil, la fraude en télécommunication et ses types. Par la suite, nous nous
sommes consacrées à la fraude par SIM box et ses différentes techniques de détection tradi-
tionnelles qui s’avèrent plus aussi efficaces face à l’évolution des comportements frauduleux,
ce qui montre l’importance de se tourner vers une méthode intelligente et rapide, capable de
la prévenir et de la détecter.
Le prochain chapitre concernera l’état de l’art de l’apprentissage automatique spéciale-
ment l’apprentissage supervisé, ainsi que les différents modèles utilisés au cours de ce travail.
32
Chapitre 2
L’apprentissage automatique
2.1 Introduction
Grâce à la disponibilité des données massives dans le secteur des télécommunications,
l’apprentissage automatique est l’un des moyens les plus prometteurs pour la détection et
l’élimination de la fraude par SIM box.
Dans ce chapitre, nous allons d’abord introduire des généralités sur l’apprentissage auto-
matique et ses différents aspects, principalement en apprentissage supervisé. Ensuite, nous
aborderons le problème des classes de données déséquilibrées et les solutions mises en place
pour le traiter. Enfin, nous présenterons les différents modèles et métriques d’évaluation
utilisés au cours de ce travail.
34
2.4 Cycle de vie d’un projet d’apprentissage automa-
tique
Le cycle de vie d’un projet d’apprentissage automatique est généralement décomposé en
six phases différentes [29] :
35
• Évaluation : une fois que les modèles atteignent de bonnes performances, il est impor-
tant de les évaluer en utilisant les différentes métriques et de s’assurer qu’elles soient
alignées avec la nature du problème, afin de décider s’ils peuvent être déployés en pro-
duction. Il est nécessaire de redéfinir les objectifs dans le cas où ils ne sont pas atteints,
en revenant à la compréhension des besoins.
• Déploiement : il concerne l’intégration des modèles dans l’infrastructure de l’entreprise
et la génération des rapports et des visualisations qui résument les résultats. Cette
phase n’est généralement pas simple et souvent sous-estimée, de sorte que la plupart
des modèles n’atteignent jamais la production, même si leurs résultats sont bons.
36
Figure 2.2 – Exemple de l’algorithme K-Means [9]
A) Modèle et paramètres
Le modèle peut être défini comme la formule mathématique, ou l’algorithme, qui permet
la prédiction du résultat y . Dans un modèle de classification, y peut être prédit au moyen
de la formule appropriée (2.1) dans le cas particulier d’un modèle logistique [32].
37
m
X 1
b = ƒ (
y θj j ) où : ƒ (z) = (2.1)
j
1 + e−z
Où :
b = La valeur prédite pour le ième point de donnée.
y
θj = Le poids de la variable j.
j = La valeur de la jème variable pour le ième point de donnée.
m= Nombre de variables explicatives.
Il existe deux types de paramètres différents : ceux qui sont estimés directement par
l’algorithme à partir des données d’apprentissage et ceux appelés hyper-paramètres qui sont
pré-sélectionnés puis fournis au modèle, et qui seront discutés dans le chapitre 4.
B) Fonction objectif
La fonction objectif est le critère numérique qui permet de quantifier la qualité du modèle.
Elle est divisée en deux termes : la fonction de perte (Θ) et le terme de régularisation Ω(Θ) :
Où :
Θ= Matrice des poids.
C) Fonction de perte
La fonction de perte (loss function) évalue la qualité des prévisions du modèle au cours
du processus d’apprentissage. Elle indique à quel point la prévision du modèle est proche de
la valeur cible à travers une certaine mesure de distances entre les deux valeurs.
Quelques fonctions de perte les plus utilisées [33] :
38
Pn
=1
(y − ŷ )2
(θ) = (2.3)
n
Où :
y = La valeur à prédire pour le ième point de donnée.
b = La valeur prédite pour le ième point de donnée.
y
n= Nombre de points de données.
n
1X
(θ) = | (y − ŷ ) | (2.4)
n =1
Où :
y = La valeur à prédire pour le ième point de donnée.
b = La valeur prédite pour le ième point de donnée.
y
n= Nombre de points de données.
39
Si la fonction de perte est utilisée sans ajouter de terme de régularisation, deux pro-
blèmes potentiels peuvent survenir : la complexité inutile du modèle et le problème du sur-
ajustement.
D) Régularisation
i) L1
Dans L1, le terme de régularisation est égal à la somme des valeurs absolues des poids.
m
X
Ω(Θ) = α |θj | (2.6)
j=1
Où :
α= Paramètre de régularisation.
θj = Le poids de la variable j.
m= Nombre de variables explicatives.
L1 peut produire des modèles clairsemés (avec peu de coefficients, où certains peuvent
être réduits à zéro).
ii) L2
Cette régularisation est connue sous le nom de décroissance du poids. Le terme de régula-
risation est égale à la somme des carrés de tous les poids.
M
X
Ω(Θ) = λ θ2j (2.7)
j=1
40
Où :
λ= Paramètre de régularisation.
θj = Le poids de la variable j.
m= Nombre de variables explicatives.
L2 ne donne pas de modèles clairsemés et tous les coefficients sont réduits d’un même
facteur (aucun n’est éliminé).
41
2.8 Les problèmes de sous-ajustement et sur-ajustement
Un modèle d’apprentissage automatique donne parfois de mauvais résultats et présente
de mauvaises performances soit parce qu’il est trop simple pour décrire la cible, soit parce
qu’il est très complexe et n’arrive pas à généraliser.
A) Sous-ajustement
B) Sur-ajustement
42
2.9 Problème de classes déséquilibrées
La plupart des applications du monde réel possèdent une distribution de classe déséqui-
librée où il y a un rapport disproportionné d’observations dans chaque classe. Ce problème
est prédominant dans la détection de fraude, où le nombre d’étiquettes de la classe de fraude
est très petit par rapport à celui de la classe normale.
Dans les problèmes d’apprentissage déséquilibré, la plupart des modèles fonctionnent mal
et ont tendance à classer les exemples minoritaires comme exemple majoritaires ; alors que
la reconnaissance de la classe minoritaire est plus importante et plus coûteuse que la classe
majoritaire. Pour y faire face, de nouveaux algorithmes et techniques pour traiter les données
déséquilibrées ont été mis en place.
Deux solutions existent pour l’équilibrage des données, une au niveau algorithmique et
une autre au niveau des données.
A) Sous-échantillonnage
Dans cette méthode, la taille de la classe majoritaire est réduite afin de rendre l’ensemble
de données équilibré.
Elle est généralement utilisée lorsque la taille de l’ensemble de données est énorme, permettant
ainsi la réduction du temps d’exécution et des problèmes de stockage.
B) Sur-échantillonnage
Cette méthode est exactement opposée à la précédente. Dans ce cas, les observations de
la classe minoritaire sont reproduites pour assurer l’équilibre entre les classes.
Elle est généralement utilisée lorsque la taille de l’ensemble de données est insuffisante [37].
43
2.9.2 Solution algorithmique
La solution algorithmique, appelée aussi l’approche ensembliste, permet d’améliorer les
résultats de l’apprentissage automatique et d’augmenter ses performances de prédiction en
combinant plusieurs modèles. Plus précisément, elle combine des apprenants faibles (appre-
nants de base), pour créer un apprenant fort qui permet de donner un meilleur résultat. Deux
types d’approche ensembliste existent : le bagging et le boosting.
Ces deux approches effectuent tout d’abord un bootstraping sur les données.
Dans l’apprentissage automatique, le bootstraping est le processus d’échantillonnage aléa-
toire des données d’entraînement avec remplacement. Les échantillons sont construits en
tirant les observations d’un grand échantillon de données, une par une, et en les renvoyant à
l’échantillon de données après qu’elles ont été choisies.
Chaque échantillon bootstrap est échantillonné de manière à ce qu’il ait des caractéristiques
différentes. Lorsque les modèles utilisent ces échantillons pour l’entraînement, ils peuvent
apprendre divers aspects des données et améliorer les performances de prédiction.
A) Bagging
Le bagging, une forme abrégée de Bootstrap Aggregation, est une technique d’appren-
tissage d’ensemble simple et très puissante. Chaque échantillon bootstrap est utilisé pour
l’apprentissage d’un des apprenants de base. Tous les modèles de bases fonctionnent parallè-
lement puis leurs prévisions sont combinées à la fin. Ces prévisions sont agrégées en faisant
leur moyenne (pour la régression) ou à partir d’un vote (pour la classification) afin d’obtenir
la prévision finale. Il existe de nombreux exemples d’algorithmes de bagging telle la forêt
aléatoire.
B) Boosting
Le boosting est une technique qui concerne l’entraînement séquentiel des apprenants
faibles, de sorte que chaque apprenant essaie de corriger son prédécesseur, en ajoutant plus
de poids aux échantillons qui ont été précédemment mal classés ; par conséquent, le futur
apprenant faible se concentrera davantage sur ces cas. Il existe de nombreux exemples d’al-
gorithmes de boosting tels que XGBoost (eXtreme Gradient Boosting) [37].
44
2.10 Modèles utilisés
Dans ce qui suit, nous allons présenter les modèles que nous implémenterons par la suite,
et qui sont les plus prometteurs pour notre cas d’étude.
45
Figure 2.4 – Architecture d’un perceptron multicouches [11]
46
Figure 2.5 – Construction d’une forêt aléatoire [12]
L’objectif de cette approche est de rendre les arbres construits plus indépendants entre
eux ce qui offre de meilleures performances lors de l’agrégation en forêt. L’approche possède
l’avantage de pouvoir être utilisée même sur des données de haute dimension et d’être simple
à mettre en œuvre [41] [37].
2.10.3 XGBoost
XGBoost s’agit d’une implémentation avancée de l’algorithme GBM (Gradient Boosting
Machine). Nous allons donc expliquer brièvement le fonctionnement de ce dernier.
GBM combine les apprenants faibles pour former un apprenant fort. Il génère des appre-
nants faibles pendant le processus d’apprentissage. À chaque niveau du processus, l’apprenant
faible prédit les valeurs ou l’étiquette de classe, puis calcule la perte (c’est-à-dire la différence
entre la valeur réelle et la valeur prédite). Selon la perte, il crée un nouvel apprenant faible,
qui s’entraîne sur les erreurs restantes. C’est une autre façon de donner une préférence élevée
aux échantillons mal classés. Ce processus se poursuit jusqu’à un certain seuil [40].
XGBoost et GBM suivent le principe du gradient boosting. Il y a cependant une diffé-
rence au niveau des détails de modélisation. XGBoost utilise une formalisation de modèle
47
plus régularisée pour contrôler le sur-ajustement, ce qui lui permet de donner de meilleures
performances. Autrement dit, la différence entre les deux réside dans la façon dont le modèle
lui-même est adapté. XGBoost emploie un certain nombre d’astuces qui le rendent excep-
tionnellement réussi. Par exemple, il calcule des gradients de second ordre, c’est-à-dire des
dérivées partielles de second ordre de la fonction de perte, qui fournissent plus d’informations
sur la direction des gradients et comment atteindre le minimum de la fonction de perte, alors
que le GBM régulier utilise la fonction de perte du modèle de base (généralement, arbre de
décision). D’autre part, le GBM arrête de diviser un nœud lorsqu’il rencontre une perte néga-
tive dans le fractionnement. XGBoost, quant à lui, effectue des divisions jusqu’à arriver à la
profondeur maximale prédéfinie, puis commence à élaguer l’arbre vers l’arrière et supprime
les divisions au-delà desquelles il n’y a pas de gain positif [37].
XGBoost a également de nombreux avantages, dont les plus importants sont [42][43] :
Le schéma dans la figure 2.6 représente un exemple de classification des individus comme
étant atteints du COVID-19 ou pas, selon le diagnostic.
48
Le premier arbre a une profondeur de 2 et utilise deux caractéristiques : température
et toux. Une personne ayant une température différente de 36.5 et qui souffre d’une toux
est plus susceptible d’avoir le COVID-19, un score de +4 lui est donc attribué, alors qu’une
personne qui ne souffre pas de toux, est moins probable d’être atteinte. Le 2ème arbre qui a
une profondeur de 1 et qui possède la caractéristique difficulté respiratoire est alors construit,
attribuant un score de +2 aux personnes ayant une difficulté à respirer et -1 le cas échéant.
A la fin de chaque itération, le score de chaque personne est calculé en ajoutant son score de
l’arbre précédent. C’est là où apparaît le rôle de XGBoost qui utilise le résultat de ses arbres
séquentiellement pour diminuer l’erreur et améliorer sa prédiction.
Dans l’exemple, la personne2 qui a un score de +6 est probablement atteinte de COVID-19.
Classe prédite
Positive Négative
Positive TP FN
Classe réelle
Négative FP TN
49
Elle est égale à la proportion de prédictions correctes parmi le nombre total de cas exa-
minés.
(TP + TN)
(2.8)
(TP + FP + FN + TN)
(TP)
(2.9)
(TP + FP)
(TP)
(2.10)
(TP + FN)
2.11.5 F1-score
La précision et le rappel peuvent être combinés en un seul score, appelé f1-score, qui
cherche à les équilibrer en calculant la moyenne harmonique entre eux.
2∗P∗R
F1 = (2.11)
(P + R)
Le f1-score est utilisé pour évaluer les performances d’un modèle dans différents scénarios
de distribution de classes. C’est une métrique populaire pour la classification déséquilibrée.
50
le modèle est performant, ce qui signifie qu’il a une bonne mesure de séparabilité entre les
deux classes.
2.12 Conclusion
Dans ce chapitre, nous avons commencé par définir l’apprentissage automatique et son
importance dans la prise de décisions. Ensuite, nous nous sommes focalisées sur l’appren-
tissage supervisé, son fonctionnement et ses paramètres, ainsi que le problème des classes
de données déséquilibrées. Enfin, nous avons présenté les algorithmes qui seront testés et
implémentés dans la suite de notre travail, à savoir : le réseau de neurones, la forêt aléatoire
et XGBoost.
Dans le prochain chapitre, nous expliquerons 3 principaux points : la nature des données
en télécommunication, leur acquisition ainsi que leur prétraitement.
51
Deuxième partie
Contribution
Chapitre 3
• Le CDR contenant les informations décrivant un appel : il est généré en temps réel
chaque fois qu’un appel est passé sur le réseau de télécommunications. Il contient des
informations telles que : les numéros de téléphone d’origine et de destination, la date
et l’heure de l’appel ainsi que sa durée, etc.
• Le CDR contenant les informations décrivant un SMS : il est généré à chaque trans-
mission de message. Il est à noter que la taille d’un message est limitée par un nombre
de caractères. Si la taille d’un SMS dépasse cette limite, il sera divisé en sous-messages,
chacun générant un CDR à sa transmission. La structure d’un CDR SMS est la même
que celle d’un CDR appel.
54
• Le CDR contenant les informations décrivant l’utilisation des données mobiles GPRS
(Global System for Mobile Communications) : un CDR se génère à chaque connexion à
un service, il comporte les informations concernant la durée de connexion, la quantité
de données utilisée, etc.
Quant aux données des clients, les entreprises de télécommunications conservent les in-
formations d’un nombre énorme de clients, qui comprennent l’identifiant, le nom, les infor-
mations sur le contrat et le point de vente, etc.
Les CDR sont intrinsèquement utilisés à des fins de facturation. De plus, ils sont utilisés
pour le dépannage, la mesure de la qualité de service, la détection des fraudes, l’informatique
décisionnelle et les enquêtes médico-légales [44].
55
Les résultats finaux des extractions ont été stockés dans des fichiers CSV pour une utili-
sation ultérieur dans le calcul des caractéristiques nécessaires à l’entraînement des différents
modèles. Ces fichiers comportent en tout 433003 CDR d’un jour de transactions, concernant
3722 abonnés dont 1025 simboxeurs et 2297 utilisateurs légitimes. Les cas frauduleux sont
des cas confirmés de fraude par SIM box, qui ont été détectés et bloqués par le département
fraude de Djezzy.
Données Description
56
B) Exploration des tables
Les relations entre les tables ont été explorées. Certaines tables contenaient des numéros
d’abonnés qui n’existaient pas dans les données des clients. La documentation était rare, donc
beaucoup de temps a été passé dans l’exploration de la sémantique des différentes tables.
Le temps est une variable importante dans la détection de fraude. La répartition des
fraude et non-fraude a donc été étudiée au fil des mois afin de bien analyser le comportement
frauduleux.
• Quelques variables importantes pour l’étude n’étaient pas présentes, par exemple, la
date d’activation de la carte SIM de chaque abonné.
• Des problèmes liés à la cohérence entre les données des différentes tables d’une même ex-
traction, par exemple, les données CDR appel étaient présentes sans leurs informations
clients.
• La présence d’un grand nombre de valeurs nulles pour certains attributs, telle la position
géographique.
• Des problèmes liés à la duplication d’information, par exemple, l’existence de deux
CDR pour la même transaction.
57
3.4.1 Nettoyage des données
Le nettoyage des données a pour but d’optimiser le processus de gestion des données en
améliorant la cohérence, fiabilité et valeur des données. Cette étape consiste en l’identification
des données pertinentes et essentielles pour notre étude, l’élimination des doublons et la
suppression des tuples vides quand le pourcentage de ces derniers est relativement petit.
Initialement, nous avons sélectionné les attributs les plus importants pour la détection
des comportements frauduleux déjà présentés dans la table 3.1. Ensuite, afin d’automatiser le
processus de nettoyage des données, nous avons créé des fonctions permettant de supprimer
les doublons ainsi que les colonnes/lignes totalement vides, par exemple la suppression des
lignes représentant un même CDR en gardant un seul exemple.
• Les SIM box ont très peu d’appels entrants et un très grand nombre d’appels sortants
tandis que les clients normaux ont un nombre d’appels équilibrés. En effet, les SIM box
sont principalement utilisées pour re-générer un nombre élevé d’appels reçus via VoIP.
Ce genre d’observations montre l’utilité des ratios pour comparer entre le comportement
normal et celui des simboxeurs.
• Les SIM box ont une très courte durée d’appels entrants par rapport à un client nor-
mal. La SIM box étant une machine, ne peut pas répondre à l’appel et maintenir une
conversation.
• Les simboxeurs n’envoient généralement pas de SMS, n’effectuent pas d’appels inter-
nationaux et se caractérisent par une utilisation minime de données contrairement aux
abonnés légitimes.
• Les SIM box ont généralement un comportement physique assez statique car elles se
connectent à un très petit nombre de BTS à proximité, tandis que les abonnés légitimes
58
sont dynamiques et se déplacent sur de nombreuses stations de base. La localisation
géographique à savoir le LAC 1 (Location Area Code) et le CellID 2 rend l’analyse de ce
comportement possible. Néanmoins, les SIM box avancées (SIM server) sont capables
de changer d’emplacements.
• Les simboxeurs utilisent le plus souvent des cartes SIM de type prepaid. Dans ce cas,
le paiement se fait à l’avance, leur permettant ainsi de profiter des offres (appels/SMS
gratuits), ce qui maximise leurs gains.
• Les simboxeurs déploient régulièrement un ensemble de nouvelles cartes SIM une fois
que l’opérateur a détecté et désactivé les cartes SIM frauduleuses existantes.
La création des caractéristiques est une étape critique pour obtenir une description utile
de l’abonné. Un total de 45 caractéristiques ont été dérivées des CDR sur la base des critères
déjà cités. Ci-dessous, un exemple de 10 caractéristiques ; les autres, ne seront pas détaillées
pour des raisons de confidentialité relatives à l’entreprise.
59
Cette caractéristique calcule le pourcentage d’appels entrants onnet par rapport au
nombre total d’appels sortants (moc_count).
• distinct_moc_ratio : les utilisateurs normaux effectuent des appels à un nombre
limité de personnes, souvent les mêmes, contrairement aux simboxeurs qui effectuent
des appels à un nombre énorme de personnes différentes.
Cette caractéristique représente le ratio des appels sortants différents.
• voice_international_count : les simboxeurs n’effectuent pas et ne reçoivent pas
d’appels internationaux. Le but de la fraude par SIM box est justement de contourner
les appels internationaux en tant qu’appels locaux.
Cette caractéristique calcule donc le nombre d’appels internationaux.
• bursting : les simboxeurs effectuent des appels sortants vers un nombre important de
personnes distinctes et avec un intervalle de temps très petit entre chaque appel.
Cette caractéristique calcule l’intervalle de temps moyen entre les appels sortants ef-
fectués par l’utilisateur.
• data_kilobyte_sum : les simboxeurs n’ont pas tendance à utiliser les données mo-
biles contrairement aux abonnés légitimes qui présentent une consommation assez éle-
vée.
Cette caractéristique calcule la quantité des données mobiles consommées.
• imei_count : les abonnés légitimes n’ont pas tendance à changer constamment d’équi-
pement mobile, c’est à dire d’IMEI (International Mobile Equipment Identity). Pour évi-
ter une détection éventuelle, les simboxeurs changent l’IMEI de la SIM box et peuvent
aller jusqu’à le changer pour chaque carte SIM grâce à un générateur d’IMEI.
Cette caractéristique comptabilise le nombre d’IMEI distincts utilisés.
• lac_count_distinct : les SIM box traditionnelles sont installées à un emplacement
et peuvent être déplacées de temps à autre, ce qui génère des CDR avec le même LAC,
contrairement aux utilisateurs légitimes qui ne sont généralement pas restreints à un
emplacement spécifique.
Cette caractéristique calcule le nombre de LAC différents utilisés par un abonné.
Les caractéristiques ont été calculées pour chaque utilisateur, identifié par son numéro de
téléphone. Elles sont rassemblées avec la colonne indiquant si l’utilisateur est un simboxeur
(prend la valeur 1) ou pas (prend la valeur 0) dans une seule table constituant le dataset sur
lequel les modèles d’apprentissage automatique seront entraînés.
60
Les boîtes à moustaches dans les graphes ci-dessous montrent la différence entre le com-
portement d’un simboxeur et celui d’un abonné légitime.
Dans la figure 3.1, la moyenne de la caractéristique distinct moc ratio est autour de 0.6 pour
les abonnés légitimes, tandis que pour les simboxeurs, elle se rapproche de 1. Ceci montre
encore une fois l’importance des ratios dans la détection de fraude SIM box.
Dans la figure 3.2, les abonnés légitimes montrent une certaine utilisation des données,
contrairement aux simboxeurs qui n’en utilisent pas.
61
3.4.3 Sélection des caractéristiques
C’est le processus de réduction du nombre de variables d’entrée lors du développement
d’un modèle d’apprentissage automatique. Cela permet d’éviter le sur-ajustement, d’amélio-
rer la précision, et de réduire le temps d’apprentissage. Nous avons utilisé deux méthodes de
sélection parmi les différentes méthodes existantes :
A) Analyse de multicolinéarité
Features importance est une classe intégrée fournie avec les classificateurs basés sur les
arbres. Elle classe les caractéristiques par ordre d’importance. Pour chaque caractéristique,
elle calcule le gain moyen à travers toutes les divisions où la caractéristique a été utilisée.
Pour la forêt aléatoire et XGBoost, nous avons donc utilisé cette fonctionnalité afin d’éliminer
les caractéristiques ayant un gain moyen inférieur ou égal à 0.
Quant au réseau de neurones, une procédure de tests, évaluations et sélection a été faite afin
d’extraire les caractéristiques les plus pertinentes.
Un total de 27 caractéristiques principales considérées importantes ont été sélectionnées
pour chacun des algorithmes.
62
La normalisation est une technique de mise à l’échelle qui réduit la plage des valeurs de
telle sorte qu’elle soit fixée entre 0 et 1 ou -1 à 1 s’il y a des valeurs négatives, tandis que la
standardisation transforme les données de sorte que la moyenne soit égale à 0 et l’écart-type
à 1.
Nous avons transformé notre dataset en effectuant la normalisation par la technique du
Min-Max Scaling. A l’issue de cette transformation, les caractéristiques ( ) seront comprises
dans un intervalle fixe [0,1]. Le but d’avoir un tel intervalle restreint est de réduire l’espace
de variation des valeurs de chaque caractéristique.
j − mn
j
j = (3.1)
m
j − mn
j
Où :
j = La valeur du ième point de données de la jème caractéristique.
mn
j
= La valeur minimale du vecteur de la jème caractéristique.
m
j
= La valeur maximale du vecteur de la jème caractéristique.
63
Table 3.2 – Découpage des données
Nombre d’exemples
3.7 Conclusion
Dans ce chapitre nous avons décrit la nature des données dans le secteur des télécommu-
nications, leur processus d’acquisition au sein de l’organisme d’accueil ainsi que les différentes
étapes de prétraitement.
Le prochain chapitre sera dédié à la présentation des différentes technologies utilisées, la
gestion des données déséquilibrées, le paramétrage des modèles d’apprentissage automatique
choisis, ainsi que la comparaison des performances de ces derniers.
64
Chapitre 4
Test et évaluation
4.1 Introduction
Après avoir présenté la phase d’acquisition et prétraitement des données, nous passons
à l’étape de test et évaluation. Cette étape concerne le paramétrage des différents modèles
d’apprentissage automatique ainsi que leur évaluation.
Dans ce chapitre, nous allons citer en premier temps les technologies utilisées au cours de
ce travail. Ensuite, nous expliquerons en détails la méthode choisie pour faire face au problème
de déséquilibre de données ainsi que le paramétrage des algorithmes explorés. Enfin, nous
effectuerons une étude comparative entre les différents modèles afin de choisir le plus adapté
à notre problème.
4.2.1 Python
Nous avons choisi le langage de programmation open source Python, qui est un langage
de script de haut niveau, structuré, rapide et qui offre une syntaxe relativement facile à
apprendre et à comprendre. Il comporte aussi une large gamme de librairies pour la science
de données et l’apprentissage automatique, ce qui explique notre choix.
Nous utilisons la version 3.7.4.
4.2.2 Anaconda
Anaconda est une distribution open source de haute performance basée sur Python qui
comprend plus de 100 packages Python, R et Scala les plus populaires pour la science des
données. Elle dispose des bibliothèques scientifiques directement installées (Numpy, Pandas,
scipy, etc.) et fournit aux utilisateurs la possibilité de choisir parmi plusieurs IDE (Integrated
Development Environment) tels que Jupyter Notebook, Spyder, etc. Grâce aux fonctionna-
lités qu’elle offre, Anaconda est le moyen le plus simple d’exercer la science des données et
l’apprentissage automatique [46].
66
4.2.3 Numpy
Numpy est la principale bibliothèque du calcul scientifique en Python. Elle contient un
large nombre de fonctions mathématiques, algébriques et de transformations [47]. Elle a été
principalement utilisée pour la manipulation des données d’apprentissage.
4.2.4 Pandas
Pandas est une bibliothèque open source basée sur Python. Elle offre des structures de
données puissantes, expressives et flexibles qui facilitent la manipulation et l’analyse des
données [48]. Nous avons utilisé Pandas notamment dans la lecture et la manipulation des
données, ainsi que dans leur exploration.
4.2.5 Matplotlib
Matplotlib est une bibliothèque open-source de visualisation de données pour le langage
python. Elle est utilisée pour créer des graphiques et des figures de haute qualité [49]. Nous
l’avons utilisé dans l’étape d’exploration des données.
4.2.6 Seaborn
Seaborn est une bibliothèque open source de visualisation des données basée sur Matplot-
lib. Elle est utilisée pour créer des graphiques statistiques plus améliorés. Elle permet ainsi
de comprendre rapidement les données disponibles lors de la phase d’exploration [50].
4.2.7 Scikit-learn
Scikit-learn est une librairie pour Python spécialisée dans l’apprentissage automatique
et reconnue pour la qualité de ses algorithmes. C’est le moteur de nombreuses applications
d’intelligence artificielle et de science des données [51].
4.2.8 TensorFlow
TensorFlow est une bibliothèque open source de calcul numérique et un framework d’ap-
prentissage machine permettant d’effectuer des calculs numériques de hautes performances
67
et de résoudre des problèmes mathématiques extrêmement complexes avec aisance [52].
4.2.9 Keras
Keras est une bibliothèque open source pour l’apprentissage en profondeur écrite en py-
thon qui peut s’exécuter sur TensorFlow. Elle rend la mise en œuvre des modèles d’appren-
tissage profond aussi rapide et facile que possible pour la recherche et le développement [53].
Nous avons utilisé Keras dans l’implémentation du modèle d’apprentissage profond, avec
TensorFlow comme backend.
68
4.2.13 Apache Hive
Apache Hive est un logiciel de data warehouse initialement créé par Facebook. Il permet
d’effectuer facilement et rapidement des requêtes SQL-like pour extraire efficacement des
données en provenance de Apache Hadoop [57].
4.2.14 Scala
Scala est un langage de programmation multi-paradigmes qui combine la programmation
orientée objet et la programmation fonctionnelle. Il offre au développeur la possibilité de
choisir le paradigme le plus approprié à son problème et permet de créer des systèmes de
hautes performances grâce à sa JVM (Java Virtual Machine) et au JavaScript runtimes [58].
4.2.15 Django
Django est un framework Python open source de haut niveau, consacré au développement
Web 2.0. Il permet un développement rapide de sites internet sécurisés et maintenables, et
prend en charge la plupart des tracas du développement Web [59].
4.2.16 Ajax
AJAX est un acronyme qui désigne Asynchronous Javascript And XML. Il ne s’agit pas
d’une technologie en soi mais plutôt d’un ensemble de technologies qui permettent la mise à
jour rapide du contenu d’une page Web sans devoir la recharger en entier [60].
4.2.17 JavaScript
JavaScript est un langage de programmation de script, interprété par le navigateur Inter-
net. C’est une forme de code qui permet de créer un contenu plus dynamique, plus animé ou
encore de réaliser des animations complexes (images, vidéos) sur une page Web. Il permet
aussi aux pages Web de disposer d’une meilleure réactivité et interactivité [61].
69
4.2.18 [Link]
[Link] est une bibliothèque JavaScript de visualisation de données. Elle est très simple
à manipuler et offre plusieurs options de personnalisation. L’outil est compatible avec tous
les navigateurs modernes (qui supportent HTML5) [62].
4.2.19 Highcharts
Highcharts est l’une des bibliothèques JavaScript de visualisation de données les plus
complètes et les plus populaires, basée sur HTML5. Elle est légère, prend en charge une large
gamme de types de graphiques et garantit de très bonnes performances [63].
Machine 1 :
Machine 2 :
70
ignorées. Nous avons donc testé différentes techniques de ré-échantillonnage : SMOTE (Syn-
thetic Minority Over-sampling Technique), SMOTE-TL (Synthetic Minority Over-sampling
Technique Tomek Link) et ADASYN (Adaptive Synthetic). Les deux premières techniques
ont donné de meilleurs résultats. Pour faire le choix final, nous nous sommes référencées à
une étude sur les problèmes de sur-ajustement liés au ré-échantillonnage.
L’étude, qui se portait sur 86 datasets, a démontré que SMOTE est soumis à un sur-
ajustement en raison de la réplication et la création d’exemplaires exacts de la classe minori-
taire. Pour éviter ce problème, nous avons donc utilisé SMOTE-TL qui a été introduit pour
améliorer l’algorithme de base [64].
Dans cette technique, SMOTE est d’abord appliqué pour sur-échantillonner les exemples
minoritaires. Un exemple aléatoire de la classe minoritaire est d’abord choisi. On trouve alors
k des voisins les plus proches pour cet exemple. Un voisin sélectionné au hasard est choisi et
un exemple synthétique est créé entre les deux exemples dans l’espace des caractéristiques.
Ensuite, un sous-échantillonnage est appliqué, les liens Tomek sont identifiés et les deux points
de données de chaque paire sont supprimés. Un lien Tomek fait référence à une méthode pour
identifier les paires de voisins les plus proches dans un ensemble de données qui ont différentes
classes. La suppression d’un ou des deux exemples de ces paires a pour effet de rendre la limite
de décision dans l’ensemble de données d’apprentissage moins bruyante ou ambiguë [65].
71
4.5.1 Réseau de neurones
Selon les différentes études faites sur le problème de classification pour la détection de la
fraude par SIM box, le perceptron multicouches est l’un des modèles qui ont démontré leur
efficacité. Nous allons donc voir ce que peut permettre son utilisation dans notre cas.
A) Architecture du réseau
Le choix de la topologie du réseau de neurones est le facteur critique affectant les per-
formances du modèle. L’ajout de nœuds cachés peut améliorer le réseau, cependant, trop de
nœuds cachés entraîne un problème de sur-ajustement, ce qui a un impact négatif sur la gé-
néralisation. Par conséquent, le choix d’un nombre approprié de nœuds cachés est important
[66]. Quant au nombre de nœuds dans chaque couche cachée, le réseau avec les meilleures
performances est celui ayant le même nombre de nœuds dans chaque couche cachée [67].
La détermination du nombre de neurones et de couches cachées a été faite en se basant
sur les résultats des expériences/tests, aucune théorie formelle à suivre n’existe.
Nous avons donc adopté le même nombre de nœuds dans les couches cachées et avons
fait des expériences à partir d’un petit réseau avec une couche d’entrée et une couche cachée,
variant le nombre de neurones pour chacune dans l’intervalle [2,40] ; puis avons développé le
réseau couche par couche jusqu’à 4 couches cachées. Après plusieurs tests, le réseau ayant
12 neurones pour la couche d’entrée, et 2 couches cachées avec 13 neurones dans chacune,
produisait le meilleur résultat.
Le tableau 4.1 montre l’évaluation du réseau par rapport au nombre de couches cachées.
Ceci a été formé avec un taux d’apprentissage par défaut de 0,001 pour 100 itérations.
72
B) Fonction de perte
Le but des fonctions de perte est de calculer la quantité à minimiser pendant l’entraîne-
ment d’un modèle. Le choix de cette fonction dépend du problème à résoudre. Dans notre
problème de classification binaire nous avons opté pour : binary crossentropy.
C) Fonction d’activation
Les fonctions d’activation sont des équations mathématiques qui déterminent la sortie
d’un réseau de neurones. Pour les couches cachées et la couche d’entrée, nous avons fait
une comparaison entre Relu (Rectified linear unit), Elu (Exponential linear unit) et Tangh
(Tangent h) et avons tracé la fonction de perte par rapport au nombre d’itérations.
Le graphe 4.1 montre que Relu permet à la fonction de perte de converger à partir de 10
itérations et de continuer ainsi jusqu’à atteindre une valeur de 0.04 au bout de 200 itérations.
D’autre part, la perte de Tanh et Elu diminue d’une manière assez lente et atteint une valeur
de 0.07 au bout de 200 itérations (atteinte en utilisant ReLu au bout de 125 itérations
seulement).
73
Cela démontre de meilleures performances avec ReLu en ce qui concerne l’optimisation de
cette fonction. En effet, le plus grand avantage de ReLu est la non-saturation de son gradient,
ce qui accélère la convergence.
Pour les couches cachées et la couche d’entrée, nous avons donc opté pour Relu. Pour la
couche de sortie, la fonction sigmoïde qui donne comme valeur de sortie un nombre compris
dans l’intervalle [0,1] a été choisie.
Nous avons testé les différents modes d’initialisation existant sur Tensorflow. Le choix du
bon paramètre a été fait en comparant les courbes de perte pour chaque mode d’initialisation.
Figure 4.2 – Courbes de perte du ANN en fonction des modes d’initialisation de poids
74
E) L’optimiseur
Les optimiseurs mettent à jour les poids pour minimiser la fonction de perte. Les différents
types disponibles sur Tensorflow ont été testés, ce qui nous a permis de tracer les courbes de
perte pour les optimiseurs les plus pertinents.
75
F) Taux d’apprentissage
Une petite valeur pour le taux d’apprentissage (learning rate) fait converger le modèle
lentement, tandis qu’une grande valeur peut le faire diverger. Il faut donc choisir une valeur
suffisamment petite.
Nous avons commencé par un taux d’apprentissage de 0.1 qui est assez grand puis, avons
essayé avec des valeurs exponentiellement plus faibles : 0.01, 0.001, etc.
Le tableau 4.2 montre les différents scores AUC en variant le taux d’apprentissage de Nadam.
Nous avons entraîné notre modèle avec un taux d’apprentissage de 0.001, qui permet au
modèle d’avoir le meilleur score AUC.
G) Taille de lot
La taille de lot (Batch size) est un hyper-paramètre qui définit le nombre d’échantillons
à traiter avant la mise à jour des paramètres du réseau de neurones. Une taille de lot plus
grande permet des accélérations de temps de calcul, néanmoins une valeur trop importante
peut entraîner une mauvaise généralisation. Selon Dr. Andrew NG, les valeurs à tester doivent
être une puissance de 2 soit : 32, 64, etc, pour un dataset dont la taille dépasse 2000 exemples.
Nous avons donc évalué le modèle pour différentes tailles de lot.
D’après le tableau 4.3, lorsque nous définissons la taille de lot à 32, c’est à dire la fréquence
de mise à jour des paramètres est petite, le modèle présente ses meilleures performances.
76
H) Nombre d’itérations
I) Modèle final
i) Paramètres
Les paramètres du modèle final sont :
77
ii) Performances
Les performances du modèle final sont présentes dans le tableau ci-dessous :
Nous pouvons voir d’après les figures ci-dessus que les courbes de perte et de précision
globale pour l’ensemble de validation et d’entraînement sont parfaitement alignées. Ceci est
un indice que le modèle ne souffre pas de problèmes de sous-ajustement ou de sur-ajustement.
78
4.5.2 Forêt aléatoire
Parmi les algorithmes basés sur les arbres, les plus performants dans les problèmes de
classification pour la détection de fraude, on retrouve la forêt aléatoire qui, selon les études
déjà faites, donne généralement de bons résultats avec peu de réglage d’hyper-paramètres.
A) Taille de la forêt
79
La figure 4.7 montre que lorsque la valeur de max_depth est égale à 2, le modèle perd
en performance où le score AUC est à moins de 95%, et lorsque la valeur est supérieure à 6,
le modèle montre un meilleur score AUC mais souffre de sur-ajustement du fait que l’écart
entre la courbe d’entraînement et de validation n’est pas négligeable.
Ensuite, nous avons testé plusieurs combinaisons des paramètres max_depth et n_estimators
en utilisant GridSearchCV et en variant les valeurs de la profondeur maximale dans l’inter-
valle [3,5] et le nombre d’arbres dans l’intervalle [20,200].
La figure 4.8 montre les performances du modèle sur l’ensemble de validation par rapport
au nombre d’arbres et à la profondeur maximale. Pour des raisons de clarté, seulement
certaines valeurs de n_estimators seront prises en considération dans le graphe.
80
Figure 4.9 – Score AUC du RF en fonction de min_samples_leaf et min_samples_split
Selon le nuage de points présent dans la figure 4.9, lorsque le nombre minimum d’échan-
tillons requis pour diviser un nœud interne est égal à 7 et le nombre minimum d’échantillons
requis pour être au niveau d’un nœud feuille est égal à 4, le modèle présente ses meilleures
performances avec un score AUC de 99.69% pour l’ensemble d’entraînement, meilleur que
celui de l’ensemble de validation de 0.74% seulement.
Nous avons donc fixé les paramètres : nombre minimum d’échantillons requis pour diviser
un nœud interne et nombre minimum d’échantillons requis pour être au niveau d’un nœud
feuille à 7 et 4 respectivement.
81
Figure 4.10 – Résultat du GridSearchCV du RF en variant max_depth et max_features
Nous remarquons que la profondeur maximale n’a pas changé. Nous avons donc défini
max_features à 13 et gardé pour max_depth la même valeur.
82
D’après les courbes, il est clair que l’augmentation de la complexité des coûts affecte les
performances du modèle, où on se trouve rapidement dans un problème de sous-ajustement.
Pour cela, nous avons choisi la valeur 0.001 qui semble correcte pour la diminution de l’effet
du sur-ajustement et la maximisation des performances.
E) Modèle final
i) Paramètres
Les paramètres du modèle final sont :
ii) Performances
Les performances du modèle final sont présentes dans le tableau 4.5.
83
Figure 4.12 – La courbe ROC du RF Figure 4.13 – La courbe ROC du RF pour
pour l’ensemble d’entraînement l’ensemble de test
Figure 4.14 – Score AUC par rapport au nombre d’itérations pour le modèle RF final
84
Nous pouvons voir d’après le graphe de la figure 4.14 que le score de l’ensemble d’entraîne-
ment est toujours autour du maximum et le score de validation est très proche de ce dernier.
Cette observation est un bon indice démontrant que le modèle ne souffre pas de problèmes
de sous-ajustement ou de sur-ajustement.
4.5.3 XGBoost
XGBoost est un algorithme d’ensembles qui agrège des arbres. À chaque itération, le
nouvel arbre apprend de l’erreur commise par l’arbre précédent, ce qui rend la règle de
décision construite en sommant le résultat de chaque arbre très fiable, même si chacun a un
pouvoir prédictif faible. Dans le cadre de notre problématique, cet algorithme a l’avantage
de pouvoir utiliser toute l’information dont il dispose.
Les paramètres de XGBoost sont divisés en 3 catégories :
Booster
Représente le type du modèle à utiliser. Deux options existent, à savoir gbtree pour un
modèle basé sur des arbres et gblinear pour un modèle linéaire. Nous avons défini le paramètre
à gbtree car il s’agit d’un problème de classification.
Avant de commencer à varier les paramètres tels que la profondeur maximale ou le nombre
maximum de caractéristiques, nous avons fixé le taux d’apprentissage et le nombre d’arbres,
puis avons varié les autres.
85
Augmenter sa valeur permet d’accélérer le temps de calcul mais peut ne pas permettre
au modèle d’atteindre le meilleur optimum.
Le graphe 4.15 montre que le modèle atteint ses meilleures performances pour un taux
d’apprentissage de 0.1 avec un AUC score de 97%. D’autre part, la courbe AUC cesse d’aug-
menter et atteint le même score pour les valeurs 0.2 et 0.3. La valeur 0.1 a donc été choisie.
Quant au nombre d’arbres, il est généralement défini sur une valeur relativement petite,
du fait que l’ajout d’arbres au-delà d’une limite n’améliore pas les performances. Cela est
expliqué par le mode de fonctionnement séquentiel du modèle, où chaque arbre tente d’amé-
liorer les performances des arbres précédents, qui rapidement atteint un point de rendement
décroissant.
Pour cela, nous avons initialement fixé ce paramètre à 100. Cette valeur est modifiable
en fonction des paramètres à suivre.
86
Pour tirer la meilleure combinaison possible de ces paramètres, nous avons utilisé la
fonction GridSearchCV en variant les valeurs du sous-échantillon et de l’échantillon de colonne
par arbre dans l’intervalle [0,1] et la profondeur maximale dans l’intervalle [1,8]. Les résultats
sont présents dans la figure 4.16.
D’après les courbes, le score de l’ensemble d’entraînement est égal à 100% tandis que
celui de l’ensemble de validation est autour de 97%. Un tel écart montre clairement que le
modèle souffre d’un sur-ajustement. Il faudra donc choisir des valeurs plus petites pour ces
paramètres.
Nous avons relancé la fonction GridSearchCV en limitant les intervalles des paramètres à
[1,4] pour max_depth, [0,0.5] pour subsample et [0,0.8] pour colsample_bytree. Les résultats
sont présents dans la figure 4.18.
87
Figure 4.18 – Résultat de la 2 ème itération du GridSearchCV de XGBoost en variant
max_depth, colsample_bytree et subsample
Figure 4.19 – Score AUC de XGBoost en utilisant les résultats de la 2 ème itération du
GridSearchCV
88
Figure 4.20 – Score AUC de XGBoost en fonction de min_child_weight et learning_rate
On remarque depuis les graphes dans la figure 4.20 que les meilleurs scores AUC corres-
pondent à de petites valeurs du poids minimum des descendants et à des valeurs élevées du
taux d’apprentissage.
Les valeurs des paramètres correspondants au meilleur score AUC sont : 0.19 pour le taux
d’apprentissage et 0 pour le poids minimum des descendants.
Comme nous l’avons déjà expliqué, plus la valeur du poids minimum des descendants
est petite, plus le modèle est complexe et tend à sur-ajuster. Cette propriété donne à ce
paramètre le rôle d’un régularisateur, par conséquent, une modification de ce dernier doit se
faire.
iv) Gamma
Un nœud est divisé uniquement lorsque la division résultante donne une réduction positive
de la fonction de perte. Gamma spécifie la réduction de perte minimale requise pour effectuer
une division. Plus sa valeur est grande plus le modèle ne sur-ajuste pas.
Afin de choisir la meilleure valeur de ce paramètre, nous avons tracé les courbes AUC
pour les ensembles d’entraînement et de validation en variant gamma et le poids minimum
des descendants.
On remarque depuis la figure 4.21 qu’une grande valeur de gamma permet au sur-
ajustement de diminuer significativement quelle que soit la valeur de min_child_weight. En
ce qui concerne min_child_weight, la valeur 1 montre une diminution du sur-ajustement par
rapport à la valeur 0. Les meilleurs paramètres sont donc : gamma=5 et min_child_weight=1.
89
Figure 4.21 – Score AUC de XGBoost en variant gamma et min_child_weight
C) Modèle final
i) Paramètres
Les paramètres du modèle final sont :
90
ii) Performances
Les performances du modèle final sont présentes dans le tableau 4.6.
Figure 4.22 – La courbe ROC de XGBoost Figure 4.23 – La courbe ROC de XGBoost
pour l’ensemble d’entraînement pour l’ensemble de test
91
Figure 4.24 – Score AUC par rapport au nombre d’itérations pour le modèle final de XG-
Boost
92
Table 4.7 – Les performances des 3 modèles à l’intérieur de chaque classe
Modèles/ Métriques P R F1
Pour la classe 0, le modèle XGBoost est meilleur de 1.34% que la forêt aléatoire et de
0.74% que le réseau de neurones en terme de précision. De plus, il a un rappel meilleur de
0.35% que la forêt aléatoire, et de 2.26% que le réseau de neurones (Tableau 4.7).
En conclusion, XGBoost a les meilleures performances pour la classe 0. Cela s’interprète par
la métrique f1-score qui combine la précision et le rappel, avec une valeur de 98.36%.
Pour la classe 1, XGBoost a un rappel meilleur de 2.25% que la forêt aléatoire et de 1.13%
que le réseau de neurones (Tableau 4.7), faisant de lui le meilleur modèle dans la détection
des cas positives. Quant à la forêt aléatoire, elle présente une bonne précision, soit 97.67%,
néanmoins son rappel est de 94.10%.
En conclusion, XGBoost présente les meilleures performances pour la classe 1 avec un f1-score
de 97.30%. La forêt aléatoire le suit avec un score de 95.85% et enfin le réseau de neurones
avec un score de 94.96%.
93
Table 4.8 – Évaluation générale des 3 modèles
Le réseau de neurones présente de bonnes performances avec une précision globale et f1-
score de 96.13% et un score AUC de 95.96%.
La forêt aléatoire a une précision globale meilleure que le réseau de neurones avec un écart
de 0.75%, mais un rappel et f1-score plus bas (Tableau 4.8).
Le modèle XGBoost présente les meilleures performances selon toutes les métriques.
Table 4.9 – Comparaison des 3 modèles en terme de temps de calcul durant l’entraînement
D’après la table 4.9, plus l’ensemble d’entraînement est grand, plus le temps de calculs
augmente quel que soit le modèle. Dans le réseau de neurones, la considération de plus
d’exemples est très coûteuse par rapport à XGBoost ou RF où la durée d’entraînement ne
dépasse pas 2 secondes pour l’échantillon contenant 90% des données.
D’autre part, le temps de calcul de XGBoost est 2 fois meilleur que celui de la forêt aléatoire et
94
environ 56 fois meilleur que celui du réseau de neurones, quelle que soit la taille de l’ensemble
d’entraînement.
Table 4.10 – Comparaison des 3 modèles en terme de temps de calcul durant la prédiction
D’après la table 4.10, XGBoost a un très petit temps de calculs lors de la prédiction,
quelle que soit la taille de l’ensemble de test. La forêt aléatoire le suit avec un temps de
calcul moyen mais assez bon par rapport au réseau de neurones qui prend en moyenne 6 fois
plus de temps que la forêt aléatoire, et 12 fois plus que XGBoost.
Après les deux évaluations, en terme de métriques et de temps de calculs, on peut dire
que le choix des paramètres du réseau de neurones est une tâche difficile et son entraînement
consomme beaucoup de mémoire et de temps de calcul, ce qui n’est pas idéal en production
où le modèle est susceptible d’être ré-entraîné selon le besoin. La forêt aléatoire quant à elle,
présente de bonnes performances et un petit temps de calculs lors de son entraînement et
prédiction, mais elle tend facilement à sur-ajuster.
Enfin, XGBoost, en plus d’avoir les meilleures performances et le moindre temps de calculs,
il est plus facile à régler grâce à ses paramètres qui contrôlent efficacement le sur-ajustement.
Ceci fait de lui un modèle exploitable dans les cas réels, et dans les environnements de
production, notamment dans notre solution de détection de fraude par SIM box.
4.7 Conclusion
Dans ce chapitre, nous avons abordé les différentes technologies utilisées pour la réalisation
de ce projet. Nous avons aussi détaillé les différentes étapes de paramétrage des trois modèles
et avons comparé leurs performances en termes de coût et de métriques d’évaluations. Cette
comparaison nous a permis de choisir XGBoost pour la mise en production, que nous verrons
dans le prochain chapitre.
95
Chapitre 5
Déploiement
5.1 Introduction
Les projets de recherches universitaires se concentrent souvent sur la comparaison des
différents techniques et algorithmes en utilisant des datasets artificiels, afin d’éviter les pro-
blèmes au niveau des données ou des problèmes de déploiement, qui sont généralement pré-
sents dans des cas réels. Les entreprises, quant à elles, visent à créer des modèles qui peuvent
être déployés et exploités, mais ils partagent rarement leurs réalisations.
Dans ce chapitre, nous allons expliquer en détails les différentes étapes de déploiement de
notre modèle dans l’environnement de production au sein de l’organisme d’accueil.
97
5.2.2 HDFS
HDFS est un système de fichiers distribués et l’un des composants majeurs de Hadoop,
précisément de son système de stockage. Sa distribution est transparente pour l’utilisateur
qui manipule les données comme si elles étaient regroupées dans un seul fichier. HDFS prend
en charge des données non structurées qui se présentent sous la forme de fichiers textes. Parmi
les avantages de HDFS :
• Il gère la localisation des données lors de la répartition des tâches tout en réduisant le
temps de transfert des données.
• Il est fault tolerant, autrement dit, il gère automatiquement la défaillance de ses nœuds
et cela grâce à la réplication des données sur plusieurs hôtes différentes [55].
A) Apache Spark
Spark est un framework de calculs distribués développé à l’origine par UC Berkeley AM-
PLab. C’est aujourd’hui un projet de la fondation Apache.
Traditionnellement, le calcul distribué était complexe, car il devait gérer la communication
et la coordination entre les machines des clusters. MapReduce proposait une API très simple
d’utilisation, permettant de créer des tâches distribuées efficacement. Cependant, seules deux
opérations principales : map et reduce ont été prises en charge. Les tâches nécessitant des
calculs itératifs ou une logique complexe ne pouvaient donc pas être créées facilement.
Spark a été créé comme un framework pour l’écriture distribuée des programmes qui
s’exécutent plus rapidement que MapReduce, en exploitant le traitement in-memory. Il offre
une API de plus haut niveau que MapReduce, avec un plus large éventail d’opérations prises
en charge, comme filter ou groupBy.
La structure logique de base de Spark est celle d’un ensemble de données distribué résilient
(RDD), qui représente une collection partitionnée d’objets sur un ensemble de machines en
lecture seule.
98
Les utilisateurs peuvent explicitement mettre en cache un RDD (Resilient Distributed
Datasets) en mémoire sur des machines et le réutiliser dans plusieurs opérations parallèles de
type MapReduce. Les RDD atteignent la tolérance aux pannes grâce à une notion de lignage :
si une partition d’un RDD est perdue, le RDD a suffisamment d’informations sur la manière
dont il a été dérivé d’autres RDD pour pouvoir reconstruire uniquement cette partition [72].
En plus des RDD, des DataFrame (DFs) ont été créés. Cette abstraction prend en charge
les requêtes de type SQL qui facilitent le travail des data scientists. Dans Spark 2.0, les
datasets ont été introduits, une nouvelle abstraction qui ajoute des vérifications de types aux
DFs, ce qui rend le code plus compréhensible et maintenable [29].
Spark utilise une architecture master-worker. Le driver est le master qui coordonne les
worker nodes. Ces workers peuvent lancer plusieurs exécuteurs. Le niveau de parallélisation
du job Spark est donné par le nombre d’exécuteurs utilisés.
Chaque exécuteur peut lancer plusieurs tâches et les données peuvent être mises en cache
afin de les réutiliser. Comme Spark fait les calculs in-memory, la taille de mémoire nécessaire
pour chaque exécuteur dépend du job et doit être spécifiée à Spark lors de la soumission du
job Spark. Les jobs nécessitant plus de mémoire que la quantité attribuée échoueront.
Spark est conçu pour être facile à utiliser où les utilisateurs peuvent écrire rapidement
leurs applications en Java, Scala, Python ou R.
99
B) Apache Hive
Hive est une infrastructure data warehouse pour Hadoop. Elle offre un langage pour
interroger une base Hadoop avec une syntaxe proche du SQL (HiveQL), facilitant ainsi la
lecture, l’écriture et la gestion de grands ensembles de données résidant dans un stockage
distribué. HiveQL offre la possibilité d’utiliser un sous ensemble de fonctions SQL, comme
les différents types de jointures, la fonction group by et les agrégations. Sa structuration des
données est très claire grâce à l’utilisation de concepts comme les tables, les colonnes et les
lignes. Il accepte la plupart des types primitifs et les collections (listes) [73].
Apache Hive traduit les programmes SQL-like en une ou plusieurs tâches Java MapReduce
ou Spark (pouvant être lancés sur Hadoop YARN). Par la suite, Hive organise les données
en tableaux et exécute les tâches sur un cluster pour produire une réponse [57].
100
5.3.2 Prétraitement des données
A cette étape, un script Scala se charge de la lecture des fichiers CSV présents dans le
système HDFS, et les stocke dans des DataFrames, sauvegardés par la suite comme des vues
temporaires. Le calcul des caractéristiques se fait après une instanciation du HiveContext sur
Spark. Dès lors, des requêtes SQL-like sont exécutées et leurs résultats sont stockés dans des
fichiers CSV.
Ce script Scala est exécuté sur 10 partitions et est généré sous format JAR (Java ARchive).
Les paramètres de la soumission du job Spark sont résumés dans le tableau 5.1.
Les fichiers contenant les résultats du calcul des caractéristiques sont récupérés depuis le
système HDFS vers le serveur local, à travers des commandes Hadoop exécutées via SSH. Ces
fichiers sont ensuite joints en un seul fichier contenant les données à prédire par le modèle.
5.3.3 Prédiction
Le dataset généré à l’étape précédente passe ensuite par le modèle XGBoost, choisi dans
la phase 1, afin d’effectuer une classification des cas de fraude/non fraude générant ainsi un
fichier contenant la probabilité de la classe 1 pour chaque abonné.
Par la suite, des traitements et des filtres sont appliqués sur les cas détectés. Par exemple,
les cas positifs ayant un age in network très élevé ne sont pas considérés comme positifs, alors
que ceux de type B2B (Business to Business), qui se comportent de manière très similaire
aux simboxeurs, sont traités avec plus de soin.
Les rapports finaux sont transmis par Email à l’équipe fraude, contenant les cas positives
confirmés ainsi que leurs informations client (Nom et prénom etc.). La figure 5.2 présente un
exemple de rapport généré après prédiction.
101
Figure 5.2 – Exemple de rapport envoyé à l’équipe fraude
• La table auth_user : comme toute autre application Web, la présence d’une table qui
gère les informations des différents utilisateurs est inévitable. auth_user qui compte
11 attributs permet à travers les deux valeurs booléennes is_staff et is_superuser de
créer trois profils différents : l’administrateur, le data scientist et l’utilisateur normal.
Chaque utilisateur est référencé par son identifiant unique et son username.
• La table détection : contient tous les cas positifs détectés. Cette table conserve trois
informations importantes : top_cell_used qui représente la position géographique la
plus commune du simboxeur, account_age qui représente l’âge de la carte SIM depuis
sa date d’activation et enfin MOU qui est le nombre total de minutes consommées.
• La table blacklist : contient les cas positifs détectés et confirmés. Pour des raisons de
sécurité, cette table garde la trace de l’utilisateur ayant ajouté un user à la blacklist.
• La table whitelist : contient la liste des numéros à ne jamais bloquer. Pour des raisons
de sécurité, cette table garde la trace de l’utilisateur ayant ajouté un user à la whitelist.
• La table true_negative : elle est nécessaire pour le calcul des différentes métriques de
performance relatives au modèle. Elle conserve le nombre de cas négatifs prédits.
102
• La table auto_blocking : permet à travers le booléen autoblock, de conserver le dernier
état de la fonction d’auto-blocage. L’identifiant de l’utilisateur ayant activé ou désactivé
cette option est sauvegardé.
• La table cellname : c’est une table de référence, qui permet, pour chaque CellID, de
définir son nom et sa wilaya.
• La table cellid : contient tous les CellID considérés comme suspects. Cette table nous
permettra de mieux cerner les simboxeurs dans les prochaines détections. Cette table
garde la trace de l’utilisateur ayant ajouté un nouveau CellID suspect.
• La table IMEI : les différents IMEI utilisés par chaque abonné détecté et confirmé
sont sauvegardés dans cette table. Une utilisation ultérieure de cet IMEI considérera
directement l’abonné comme suspect. Cette table garde la trace de l’utilisateur ayant
ajouté un nouveau imei suspect.
• La table subscriber : contient les informations clients des cas détectés.
• La table log : permet de garder les informations relatives aux opérations de mises à
jour (update ou delete) effectuées par l’utilisateur sur les tables : blacklist, whitelist,
cellid, imei, auth_user.
103
Avant de passer à la dernière étape de la phase 2, nous présentons dans la figure 5.4 un
schéma explicatif qui récapitule les différentes étapes de cette phase à l’intérieur du code
python, depuis l’acquisition des données jusqu’au reporting.
104
5.3.5 Présentation de l’application Web
Nous avons créé une application web nommée "AI fraud solution", comme outil d’aide à
la prise de décisions, qui permet de visualiser les données relatives aux détections des cas
de fraude par SIM box, en temps réel. Cette application comprend trois profils différents, à
savoir : L’administrateur, le data scientist et l’utilisateur normal.
Dans ce qui suit, nous allons décrire les composants de notre tableau de bord, onglet par
onglet.
Onglet login
Cette fenêtre permet aux différents membres de l’équipe fraude d’accéder au tableau de
bord. Chaque utilisateur peut s’authentifier en introduisant son username et son password
attribués par l’administrateur du site.
Onglet Dashboard
La structure de base du site comporte une barre de navigation (2) qui affiche à droite le
firstname et lastname de l’utilisateur connecté, ainsi que son rôle ; et à gauche, un menu qui
permet d’ouvrir la barre latérale (1). Cette dernière, permet à l’utilisateur de naviguer entre
les différents onglets.
105
L’onglet Dashboard représente la page d’accueil du site, qui résume les informations les
plus pertinentes des dernières détections.
Le rectangle 3 présente le total des simboxeurs détectés durant les 7 derniers jours (ici
56), et le nombre avec lequel il a augmenté (resp. diminué) depuis la semaine qui précède (ici
+6).
Le rectangle 4 présente le CellID qui compte le plus de simboxeurs ces 7 derniers jours
(ici. F8A40036), et son taux d’infection (ici 5%).
Le rectangle 5 présente la somme d’argent économisée (ici 2722$) et le taux avec lequel
elle a augmenté (resp. diminué) depuis la semaine qui précède (ici +3%). Cette somme est
calculée en multipliant le nombre de cas de SIM box confirmés par la moyenne des pertes
causées par un simboxeur.
Le rectangle 6 présente la wilaya qui compte le plus de simboxeurs ces 7 derniers jours (ici
Alger), et son taux d’infection (ici 30%). La carte géographique chaude (rectangle 7) montre
le taux d’infection de chaque wilaya. Le camembert à coté affiche le nombre de cas détectés
pour le top 10 communes de la wilaya la plus infectée.
106
Figure 5.7 – Onglet Dashboard (partie2)
Le line chart dans le rectangle 9 présente la moyenne des MOU par mois, et le bar chart
dans le rectangle 10 présente le total de détections par jour durant les 7 derniers jours.
Le tableau dans le rectangle 11 présente les 5 points de vente avec le plus de cartes SIM
illégales vendues durant les 7 derniers jours.
Le tableau dans le rectangle 12 présente les 5 CellID avec le plus de cas de SIM box
détectés durant les 7 derniers jours.
Onglet Detection
Cet onglet permet d’afficher tous les cas détectés, leurs informations client (firstname,
lastname, etc.), ainsi que les trois caractéristiques :
107
• Minutes of used : La durée totale des appels effectués par le simboxeur.
• Top cell used : L’identifiant de la cellule la plus utilisée par le simboxeur.
• Age in network : La durée (en jours) depuis l’activation de la carte SIM jusqu’à la
détection.
Les boutons (1) permettent à l’utilisateur de copier les lignes du tableau, de les télécharger
(sous format CSV, EXCEL ou PDF) ou alors de les imprimer.
Le bouton (2) permet à l’utilisateur d’activer ou de désactiver l’autoblocking. La sensibilité
de cette action nous a menées à limiter l’accès qu’aux data scientists
Le input text (3) offre à l’utilisateur la possibilité de filtrer les détections selon n’importe
quel champ du tableau.
Les boutons de pagination (4) offrent à l’utilisateur le possibilité de naviguer entre les
différentes parties du tableau.
Onglet Blacklist
Cet onglet permet d’afficher tous les cas de SIM box confirmés et bloqués, leurs infor-
mations client (firstname, lastname) ainsi que le username de l’utilisateur ayant effectué le
blacklistage ([Link] si le blocage a été effectué automatiquement).
108
Figure 5.10 – Onglet Blacklist
De plus, il permet aux utilisateurs ayant le rôle data scientist d’ajouter des numéros à la
blacklist (1) à travers un fichier CSV (figure 5.11), ou d’en supprimer (2).
Onglet Whitelist
L’onglet Whitelist permet d’afficher les numéros à ne jamais bloquer, leurs informations
client ainsi que le username de l’utilisateur ayant effectué le whitelistage.
109
Le bouton (1) est accessible uniquement aux data scientists. En effet, louper un simboxeur
est plus coûteux que de bloquer un utilisateur normal, cette option permet donc d’ajouter
qu’un seul numéro à la fois à la whitelist (figure 5.13).
L’onglet Suspected Imei permet d’afficher les IMEI des cas de SIM box confirmés ainsi
que le username de l’utilisateur ayant suspecté le IMEI.
L’onglet Suspected CellID permet d’afficher les informations complètes des CellID sus-
pects ainsi que le username de l’utilisateur ayant suspecté le CellID.
110
Figure 5.15 – Onglet Suspected CellID
Onglet Queries
L’onglet Queries permet à l’utilisateur d’effectuer des requêtes sur les différentes tables
de la base de données, ou des filtres sur les détections.
Onglet Charts
Cet onglet permet d’afficher des graphes et des statistiques selon la période de temps
introduite par l’utilisateur à travers le input date (1).
111
Figure 5.17 – Onglet Charts (partie1)
Dans le rectangle 2, on trouve le point de vente avec le plus de cartes SIM illégales vendues
durant la période spécifiée (par défaut, les 30 derniers jours).
Dans le rectangle 3 et 4 on trouve respectivement le jour avec le plus de cas détectés et
le jour avec le plus de MOU, durant la période spécifiée (par défaut, les 30 derniers jours).
Le bar chart (5) affiche le nombre total de cartes SIM illégales vendues par le top 10
points de vente durant la période spécifiée (par défaut, les 30 derniers jours).
Le bar chart (6) affiche le nombre total de détections par jour durant la période spécifiée
(par défaut, les 30 derniers jours).
112
Figure 5.19 – Onglet Charts (partie2)
Le line chart (7) présente la moyenne des MOU par jour durant la période spécifiée (par
défaut, les 30 derniers jours).
Onglet Performance
Cet onglet est accessible uniquement pour les data scientists et permet d’afficher les
informations relatives aux performances du modèle le mois écoulé. Il leur offre ainsi, une
évaluation générale du modèle, afin de le ré-entraîner en cas de besoin.
113
Figure 5.21 – Onglet Performance (partie2)
L’onglet users administration est accessible que par l’administrateur. Il permet d’afficher
la liste des utilisateurs de l’application et de les gérer.
114
Figure 5.23 – Fenêtre "Add user"
L’onglet Cellid table est accessible que par l’administrateur. Il permet d’afficher une table
de référence qui présente la liste des CellID présents dans la base de données avec leurs noms,
commune et wilaya.
115
Cet onglet permet de mettre à jour la table cellname de la base de données, à travers le
bouton (2) qui permet d’ajouter des CellID, et le bouton (1) qui permet de supprimer tous
les CellID.
5.4 Conclusion
Dans ce chapitre, nous avons présenté les différentes étapes du déploiement de notre
modèle d’apprentissage automatique XGBoost. Nous avons commencé par expliquer le fonc-
tionnement général des technologies distribuées utilisées au cours de ce travail. Ensuite, nous
avons expliqué les étapes de déploiement du modèle depuis l’acquisition et le prétraitement
des données à travers les outils big data, jusqu’au stockage des données de prédictions, ex-
ploitées pour le reporting. Enfin, nous avons présenté notre application web, outil d’aide à la
prise de décisions, et ses différentes fonctionnalités.
116
Conclusion et perspectives
Dans le présent projet de fin d’études, nous nous sommes intéressées à l’application de diffé-
rents algorithmes d’apprentissage automatique, pour améliorer le processus de détection de
la fraude par SIM box au sein de l’opérateur de télécommunications Djezzy.
Notre travail a été réalisé en deux grandes phases :
La première phase concerne le paramétrage et le test des 3 algorithmes : réseau de neu-
rones, forêt aléatoire et XGBoost, en se basant sur les caractéristiques dérivées depuis les
données des transactions effectuées par les abonnés de Djezzy.
L’objectif de cette première phase était de sélectionner le meilleur modèle prédictif qui
s’adapte à notre problème de classification. Les résultats étaient très prometteurs et la com-
paraison entre les différents modèles nous a permis de choisir XGBoost (avec une précision
globale de 97.8%) pour le déploiement dans l’environnement de production. En effet, ce mo-
dèle est connu pour son adaptation aux problèmes de classification sur des données présentant
un énorme déséquilibre, ce qui est d’un grand bénéfice lors de la prédiction en temps réel.
Dans la deuxième phase, nous avons conçu tout un système qui permet à travers les outils
big data d’automatiser le processus d’extraction des CDR, et de les transformer en carac-
téristiques exploitables par XGBoost. Le système classifie par la suite, les abonnés comme
étant des cas frauduleux/non-frauduleux et envoie des rapports à l’équipe fraude.
Pour nos futures perspectives, nous envisageons d’introduire l’apprentissage incrémental
à notre solution. En effet, cette approche nous permettra d’effectuer automatiquement un ré-
apprentissage du modèle, dès le changement du comportement frauduleux. Il serait intéressant
aussi d’essayer de combiner les modèles dans un classificateur de vote, afin d’exploiter les
différentes particularités de chaque algorithme.
Une autre perspective consiste à effectuer la même étude pour développer de nouveaux
modèles prédictifs pour les autres scénarios de fraude spécialement A2P SIM box et OTT
bypass, afin de compléter notre solution d’aide à la prise de décisions.
Cette étude a fourni à l’entreprise une aide très importante quant à la détection des cas de
SIM box, et a permis de diminuer les MOU des simboxeurs, d’améliorer la qualité de service
et de limiter les pertes de revenus. De plus, cette thèse, la première du genre en Algérie,
aidera les futurs travaux concernant la détection et la prévention de la fraude dans le secteur
des télécommunications.
117
Bibliographie
[6] Why sim box bypass fraud is a growing concern in a2p sms, especially on the roaming
side. [Link] (consulté avril, 2020).
118
[9] K-means clustering algorithm. [Link]
k-means-clustering-algorithm-in-machine-learning, (consulté avril, 2020).
[10] Anup Bhande. What is underfitting and overfitting in machine learning and how to deal
with it. 2018.
[11] Artificial neural networks – part 2 : Mlp implementation for xor. 2018.
[12] Gaël gibaud, “revue des provisions dossier/dossier avec des methodes de machine lear-
ning”, 2017. Master’s thesis.
[16] Chris VOLINSKY Richard A. BECKER and Allan R. WILKS. Fraud detection in
telecommunications : History and lessons learned. février 2010.
[18] Inês Bruno de Oliveira. Application of neural networks to the detection of fraud in
workers’ compensation insurance. Master’s thesis, NOVA IMS, 2017.
[19] 32,7 milliards usd de pertes liées à la fraude dans les télécoms chaque année. 2019.
[20] Hiyam Ali El Tawashi. Detecting fraud in cellular telephone networks. Master’s thesis,
Islamic University of Gaza, Août 2010.
[21] Merve Sahin Aurélien Francillon. Over-the-top bypass : Study of a recent telephony
fraud. Octobre 2016.
[22] Jean Carl Cohen. Ce que les clients ne savent pas sur les opérateurs télécoms, les
agrégateurs et les routes grises. Avril 2015.
119
[23] interview with Claire Cassar. Sms bypass blocking : A service that protects maximizes
a2p revenue for mobile operators. Juillet 2015.
[24] Frehiwot Mola. Analysis and detection mechanisms of sim box fraud in the case of ethio
telecom. décembre 2017.
[25] Hussamedin S. Mohamed Dr. Ibrahim Ighneiwa. Bypass fraud detection :artificial intel-
ligence approach. 2016.
[27] Vinod Saratchandran. How machine learning systems detect and prevent
frauds without affecting your customers. [Link]
lapprentissage-automatique-peut-il-predire-et-prevenir-les-fraudeurs, 29
mai, 2019 (consulté le 27 mars, 2020).
[29] Ignacio Amaya de la Pena. Fraud detection in online payments using spark mltree
boosting data competitions with xgboost. Master’s thesis, School of Information and
Communication Technology KTH Royal Institute of Technology Stockholm, Sweden, 11
September 2017.
[31] El Fouz. Clustering des news. université de nice sophia antipolis. 2013.
[32] Carlos Bort Escabias. Tree boosting data competitions with xgboost. Master’s thesis,
Universitat Politècnica de Catalunya - Universitat de Barcelona, 2016-2017.
[33] avindra Parmar. Common loss functions in machine learning. 2 Septembre 2018.
[35] Juan Orozco Villalobos. Test, training and validation sets. 2020.
120
[37] Ronish Shakya. Application of machine learning techniques in credit card fraud detec-
tion. Master’s thesis, University of Nevada, Las Vegas, DECEMBER 2018.
[39] André Thomas Philippe Thomas. Sélection de la structure d’un perceptron multicouches
pour la réduction dun modèle de simulation d’une scierie.. 5ème conférence internationale
francophone d’automatique, cifa’2008, sep 2008, bucarest, roumanie. [Link]. ffhal-
00320824f.
[40] Ronish shakya, “application of machine learning t application of machine learning tech-
niques in cr echniques in credit car edit card fraud detection”, 2018. Master’s thesis.
[41] Gadhvi, h., et madhu, s. (2013). comparative study of classification algorithms for web
spam detection. international journal of engineering research et technology (ijert) , pp.
2497-2501.
[42] Anders Dovran Joachim Aae. Empirical comparison of time series forecasting strategies.
Master’s thesis, Norwegian School of Economics, 2019.
[43] Dr. Shirin Elsinghorst. Machine learning basics - gradient boosting xgboost. November
29, 2018.
[44] Walid moudani, fadi chakik, fraud detection in mobile telecommunication. lecture notes
on software engineering, vol. 1, no. 1. Février 2013.
[45] Rachid mifdal, “application des techniques d’apprentissage automatique pour la prédic-
tion de la tendance des titres financiers”, 2019. Master’s thesis.
121
[49] Pyplot in matplotlib. [Link]
[52] Bastien L. Tensorflow : tout savoir sur la bibliothèque machine learning open source.
2018.
[54] Jupyter notebook : documents web pour l’analyse de données, live-coding, etc. 2019.
[55] Bastien L. Hadoop – tout savoir sur la principale plateforme big data, 2018. 2018.
[56] Ian Pointer. Qu’est-ce qu’apache spark ? la plateforme big data qui a écrasé hadoop.
2020.
[57] Bastien L. Apache hive : tout savoir sur la data warehouse de hadoop. 2019.
[63] Ruslan Borovikov. Top 10 javascript charting libraries for every data visualization need.
2019.
122
[64] Pedro Henriques Abreu H´elder Ara´ujo Miriam Seoane Santos, Jastin Pompeu Soares
and Jo~ao Santos. Cross-validation for imbalanced datasets : Avoidingoveroptimistic
and overfitting approaches.
[65] Jason Brownlee. How to combine oversampling and undersampling for imbalanced clas-
sification. 2020.
[66] K. g. sheela and s. n. deepa, “review on methods to fix number of hidden neurons in
neural networks,” mathematical problems in engineering, vol. 2013, 20139. Master’s
thesis.
[67] "exploring strategies for training deep neural networks," journal of machine learning
research, vol. 10, no. jan, pp. 1–40, 2009. Master’s thesis.
[68] Hands-on machine learning with scikit-learn, keras, and tensorflow : concepts, tools, and
techniques to build intelligent systems.
[70] J. dean and s. ghemawat, “mapreduce : simplified data processing on large clusters,”
communications of the acm, vol. 51, no. 1, pp. 107–113, 2008.
[72] Matei Zaharia, Mosharaf Chowdhury, Michael J. Franklin, Scott Shenker, and Ion
Stoica. Spark : Cluster computing with working sets. In Proceedings of the 2Nd USENIX
Conference on Hot Topics in Cloud Computing, HotCloud’10, pages 10–10, Berkeley,
CA, USA, 2010. USENIX Association.
[73] Raja haddad. apprentissage supervisé de données symboliques et l’adaptation aux don-
nées massives et distribuées. traitement du texte et du document. psl research university,
2016. français. ffnnt : 2016psled028ff. fftel-01485591f. Master’s thesis.
123
Annexe
Annexe des figures