0% ont trouvé ce document utile (0 vote)
0 vues127 pages

Final Project

Ce mémoire de Master présente une recherche sur l'utilisation de l'apprentissage automatique pour améliorer la détection de fraude en télécommunication. Il aborde divers aspects de la fraude en télécommunication, les techniques d'apprentissage automatique, ainsi que le prétraitement et l'évaluation des données. Le travail est encadré par des professeurs et réalisé en collaboration avec une entreprise de télécommunications.

Transféré par

chirazcheikha
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues127 pages

Final Project

Ce mémoire de Master présente une recherche sur l'utilisation de l'apprentissage automatique pour améliorer la détection de fraude en télécommunication. Il aborde divers aspects de la fraude en télécommunication, les techniques d'apprentissage automatique, ainsi que le prétraitement et l'évaluation des données. Le travail est encadré par des professeurs et réalisé en collaboration avec une entreprise de télécommunications.

Transféré par

chirazcheikha
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique

Université des Sciences et de la Technologie Houari Boumediene


Faculté d’électronique et d’informatique
Département d’informatique

Mémoire de Master
Domaine : Informatique

Spécialité : Mathématiques et Informatique Décisionnelle

Thème

Apprentissage automatique pour l’amélioration de la


détection de fraude en télécommunication

Présenté par : Proposé et dirigé par :


- Cheikha Chiraz -Pr. Aklouf Youcef
- Yahiaoui Anfel -Mme. Zaia Nawel

Devant le jury composé de :


- M. BOUZEGHOUB Mohamed Arezki Président
- Mme. Amrous Anissa Membre

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

3 Acquisition et prétraitement des données 53


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

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

1.1 Logo de Djezzy/Logo de Veon [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . 17


1.2 Disposition des cellules dans un réseau [2] . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Architecture d’un réseau GSM [2] . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Scénario de la fraude IRSF [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.5 Scénario de la fraude wangiri [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.6 Scénario de la fraude OTT bypass [4] . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7 Scénario de la fraude voice SIM box [5] . . . . . . . . . . . . . . . . . . . . . . . . 25
1.8 Scénario de la fraude SMS A2P [6] . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.9 Modèle d’un équipement SIM box [7] . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.10 Scénario d’un appel international légitime/détourné par une SIM box [8] . . . 28

2.1 Cycle de vie d’un projet d’apprentissage automatique . . . . . . . . . . . . . . . 35


2.2 Exemple de l’algorithme K-Means [9] . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3 Les problèmes de sous-ajustement et sur-ajustement [10] . . . . . . . . . . . . . 42
2.4 Architecture d’un perceptron multicouches [11] . . . . . . . . . . . . . . . . . . . 46
2.5 Construction d’une forêt aléatoire [12] . . . . . . . . . . . . . . . . . . . . . . . . 47
2.6 Exemple du fonctionnement de XGBoost . . . . . . . . . . . . . . . . . . . . . . 48

3.1 Boîtes à moustaches de la caractéristique distinct_moc_ratio . . . . . . . . . . 61


3.2 Boîtes à moustaches de la caractéristique data_kilobyte_sum . . . . . . . . . . 61

4.1 Courbes de perte du ANN en variant les fonctions d’activation . . . . . . . . . 73


4.2 Courbes de perte du ANN en fonction des modes d’initialisation de poids . . . 74
4.3 Courbes de perte du ANN en fonction des optimiseurs . . . . . . . . . . . . . . 75

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

5.1 Architecture de Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99


5.2 Exemple de rapport envoyé à l’équipe fraude . . . . . . . . . . . . . . . . . . . . 102
5.3 Architecture de la base de données . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.4 Schéma explicatif du script python . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.5 Onglet login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.6 Onglet Dashboard (partie1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.7 Onglet Dashboard (partie2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.8 Onglet Dashboard (partie3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

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

3.1 Description des données CDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56


3.2 Découpage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.1 Évaluation du ANN en fonction du nombre de couches cachées . . . . . . . . . 72


4.2 Évaluation du ANN en fonction du taux d’apprentissage . . . . . . . . . . . . . 76
4.3 Évaluation de ANN en fonction de la taille de lot . . . . . . . . . . . . . . . . . 76
4.4 Évaluation du modèle ANN final . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.5 Évaluation du modèle RF final . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.6 Évaluation du modèle XGBoost final . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.7 Les performances des 3 modèles à l’intérieur de chaque classe . . . . . . . . . . 93
4.8 Évaluation générale des 3 modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.9 Comparaison des 3 modèles en terme de temps de calcul durant l’entraînement 94
4.10 Comparaison des 3 modèles en terme de temps de calcul durant la prédiction . 95

5.1 Paramètres de la soumission du job Spark . . . . . . . . . . . . . . . . . . . . . . 101

10
Acronymes

A2P Application to Person.

ANN Artificial Neural Network.

AUC Area Under the Curve.

BTS Base Transceiver Station.

CDR Call Detail Record.

FMS Fraud Management System.

FN False Negative.

FP False Positive.

GBM Gradient Boosting Machine.

GPRS Global System for Mobile Communications.

GSM Global System for Mobile Communications.

HDFS Hadoop Distributed File System.

IMEI International Mobile Equipment Identity.

IP Internet Protocol.

IRSF International Revenue Share Fraud.

11
LAC Location Area Code.

MOU Minutes Of Usage.

OTT Over The Top.

RDD Resilient Distributed Datasets.

RF Random Forest.

ROC Receiver Operating Characteristic.

SIM Subscriber Identity Module.

SMS Short Message Service.

TN True Negative.

TP True Positive.

VoIP Voice over Internet Protocol.

XGBoost eXtreme Gradient Boosting.

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 :

• Chapitre 1 : présente un état de l’art de la fraude en télécommunication.


• Chapitre 2 : présente un état de l’art de l’apprentissage automatique.
• Chapitre 3 : décrit en détails les phases d’acquisition et prétraitement des données.
• Chapitre 4 : présente les différentes étapes de paramétrage des trois modèles d’appren-
tissage automatique développés, ainsi que les résultats de tests et d’évaluations.
• Chapitre 5 : présente la phase de déploiement du modèle prédictif sélectionné pour la
mise en production.

Finalement, nous terminerons par une conclusion générale.

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.

1.2 Organisme d’accueil


Djezzy, Officiellement appelé Optimum Télécom Algérie (OTA), est un opérateur mobile
algérien, créé le 11 juillet 2001 puis a ouvert son réseau en février 2002 et a pu couvrir tout le
territoire national au bout d’un an. Leader des technologies de communications numériques
en Algérie, Djezzy vise en premier degré à satisfaire les besoins de ses clients et à leur offrir
des services de qualité.
Djezzy fait partie du groupe VEON (anciennement Vimpelcom), 5ème groupe mondial
de télécommunications, dont le siège est à Amsterdam (Pays Bas).

Figure 1.1 – Logo de Djezzy/Logo de Veon [1]

Considérée comme pionnier dans le domaine de la répression de la fraude, Djezzy a mis


en place tout un service IT Fraud & Revenue Assurance dans le département Data Mana-
gement Service dédié au renforcement de la sécurité et de la détection de toutes tentatives

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.

1.3 Notions de base en télécommunication

1.3.1 Opérateur de télécommunications


L’opérateur de télécommunications est l’entité (Entreprise publique/privée) qui exploite
un réseau de télécommunications, ou met à disposition des services de communication à
distance [13].

1.3.2 Opérateur mobile


Organisme fournissant les services de téléphonie mobile à ses clients. Il assure la fourniture
de la carte SIM (Subscriber Identity Module) permettant la mise en réseau du téléphone,
l’accès au réseau cellulaire de cet opérateur, la facturation et l’assistance aux clients [14].

1.3.3 Le réseau de téléphonie mobile


Il s’agit d’un réseau de communication qui permet à des millions d’utilisateurs de télépho-
ner en même temps. Un réseau de téléphonie mobile utilise le GSM (Global System for Mobile
Communications), qui est un standard de seconde génération utilisé pour la communication
cellulaire. Cette norme est complète et comprend tous les éléments nécessaires à un système
de communications numérique avec les mobiles.

Figure 1.2 – Disposition des cellules dans un réseau [2]

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].

Figure 1.3 – Architecture d’un réseau GSM [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.

1.3.4 Voix sur IP


La VoIP (Voice over Internet Protocole), appelée Voix sur IP est un système qui convertit
les signaux audio analogiques en données numériques pouvant être transmises sur internet.
Autrement dit, il s’agit de passer des appels illimités à l’aide d’une connexion internet haut
débit [15].

19
1.4 Généralités sur la fraude en télécommunication

1.4.1 Qu’est-ce que la fraude en télécommunication ?


Le mot fraude vient du latin fraudem qui signifie tromperie. C’est l’acte de tromper les
autres à des fins personnelles. Au XXe siècle, la fraude a mûri dans le domaine des entreprises
transactionnelles et en particulier dans les secteurs des télécommunications et des cartes de
crédit. En raison de l’énorme volume des transactions de ces sociétés, la fraude pouvait passer
inaperçue assez facilement, car elle représentait une petite proportion de l’activité globale
[16].
La fraude dans le domaine des télécommunications est toute tentative, d’une tierce partie,
de bénéficier des services d’un opérateur téléphonique sans avoir l’intention de payer quoi que
ce soit ou alors de payer moins que le coût réel. Une définition plus technique est que la fraude
en télécommunication fait référence à toute transmission de voix ou de données sur un réseau
de télécommunications, où l’expéditeur a pour objectif d’éviter ou de réduire les frais d’appels
légitimes [17].
Quand on a demandé au célèbre Willie Sutton «Pourquoi volez-vous les banques ?», il
a répondu «Parce que c’est là où se trouve l’argent» [16]. De même, la fraude dans les
télécommunications implique des appels très coûteux tels que les appels internationaux, les
appels vers des numéros surtaxés, etc.

1.4.2 Motivations des fraudeurs


Les motivations derrières la fraude sont [18] :

• 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] :

• Augmentation des coûts d’exploitation de l’opérateur.


• Augmentation des prix pour le client.
• Mauvaise publicité.
• Fluctuation du cours des actions.
• Perte d’emploi.
• Perte de service et incapacité de s’acquitter de ses obligations contractuelles.
• Amendes réglementaires ou surveillance réglementaire accrue.

1.4.4 Types de fraude en télécommunication


Parmi les types de fraude les plus importants et qui contribuent le plus aux pertes globales
des opérateurs de télécommunications :

A) Le partage de revenus à l’international (IRSF)

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).

Figure 1.4 – Scénario de la fraude IRSF [3]

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

La croissance explosive des applications VoIP mobiles a contribué à l’introduction de


la fraude OTT (Over The Top) Voice bypass. Cette forme de fraude est en augmentation
en raison de l’utilisation d’applications VoIP, qui offre la possibilité aux fraudeurs de dé-
tourner les appels téléphoniques. Ce type de fraude nécessite un accord entre l’opérateur de
télécommunications et le fournisseur de services OTT pour ré-acheminer les appels.
Dans ce scénario, lorsqu’un opérateur de transit voit un appel pour une destination,
pour laquelle un accord de contournement existe, il vérifie auprès du fournisseur OTT si le
numéro de l’appelé est en ligne sur le réseau OTT grâce au numéro de téléphone MSISDN
(Mobile Station ISDN Number) introduit lors de son authentification ; si l’appelé est en

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].

Figure 1.6 – Scénario de la fraude OTT bypass [4]

C) La fraude par SIM box

Il existe deux scénarios de fraude par SIM box :

• Scénario voice SIM box :

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]

• Scénario SMS A2P :

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.

Figure 1.8 – Scénario de la fraude SMS A2P [6]

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.

1.5.1 Qu’est ce qu’une SIM box ?


Une SIM box (également appelée banque SIM) est un boîtier électronique utilisé pour
contourner la route légale ou normale des appels entrants internationaux. Elle contient un
grand nombre de cartes SIM. La figure 1.9 montre un appareil SIM box doté d’emplacements
SIM, d’antennes et de ports Ethernet pouvant être utilisés pour le connecter à Internet. Une
SIM box typique dispose de 32 modems et antennes.
Une SIM box peut avoir des cartes SIM de divers opérateurs mobiles présents dans la
région géographique, ce qui lui permet de fonctionner avec plusieurs passerelles GSM situées
à différents endroits. Elle est utilisée pour passer un appel international entrant comme étant
un appel local [24].

Figure 1.9 – Modèle d’un équipement SIM box [7]

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.

A) Comment se passe un appel international légitime ?

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.

B) Comment se passe un appel frauduleux par SIM box ?

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]

1.5.3 Impacts de la fraude par SIM Box


La fraude par SIM box a des effets sur les opérateurs de télécommunications, les régula-
teurs et les abonnés [24] :

• Perte de revenus : de nombreux opérateurs de télécommunications dans les pays en


développement notamment en Algérie bénéficient des revenus élevés grâce aux appels
internationaux. La SIM box détourne ces appels de leur chemin légal et permet aux
simboxeurs de tirer profit du prix élevé de l’appel international. Les opérateurs perdent
alors leurs revenus d’appels internationaux.
La fraude par SIM box a aussi un effet négatif sur plusieurs services de télécommuni-
cations comme les SMS et les rappels. En raison de la SIM box, les appels entrants
internationaux frauduleux sont affichés en tant que numéros locaux côté récepteur, ce
qui a un impact immédiat sur la possibilité de rappeler l’appelant ou d’envoyer des
SMS. Tous ces éléments entraînent des pertes importantes de revenus.
• Qualité de service médiocre : les appels contournés sont acheminés via des connexions
IP grâce à des configurations de routage causant ainsi un taux d’échec d’appels accru et

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.

1.5.4 Méthodes de détection de la fraude par SIM box


Parmi les méthodes de détection de la fraude par SIM box [25] :

• Génération d’appels de test (TCG) : c’est la première technologie de détection de fraude


par SIM box qui s’est avérée efficace et qui fonctionne avec succès depuis de nombreuses
années. Elle permet aux opérateurs de tester différents itinéraires internationaux vers
leurs réseaux et voir si les appels sont acheminés via des routes légitimes ou frauduleuses.
L’idée est assez simple, après une configuration d’un certain nombre de numéros de
téléphone de test dans le réseau, il suffit de générer des appels vers ces numéros à partir
de nombreux pays différents et cela via de nombreuses routes vocales d’interconnexion à
travers le monde. Lorsque le système de test TCG (Test Call Generator) reçoit l’appel
de test, il compare le numéro de téléphone entrant avec le numéro de téléphone d’origine
connu. Une différence dans le numéro indique que quelque chose ne va pas et permet de
savoir d’où proviennent les routes grises et les chemins utilisés pour atteindre les SIM
box. Les résultats de cette méthode de détection sont sans faux positifs.
Cependant, l’efficacité de cette approche a considérablement diminué ces dernières an-
nées à cause de sa nature probabiliste et coûteuse en termes de nécessité de tester un
grand nombre de routes internationales. Les fraudeurs, quant à eux, ont développé des
systèmes anti-détection pour l’éviter telle l’analyse du trafic des appels entrants vers
leurs SIM box qui permet de déterminer quels appels proviennent de vrais abonnés et
lesquels proviennent d’un système de génération d’appels de test.
• Systèmes de gestion de fraude (FMS) : les systèmes de gestion de fraude utilisent
des méthodes statistiques pour détecter les activités anormales des simboxeurs. FMS
(Fraud Management System) analyse les enregistrements des données d’appel CDR
(Call Detail Record) pour établir des profils d’utilisation qui distinguent les cartes SIM
utilisées dans les SIM box et celles utilisées par des abonnés légitimes.

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.

1.5.5 Difficultés à détecter la fraude par SIM box


Le processus de détection de la fraude par SIM box reste extrêmement difficile du fait
que [20] :

• 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.

1.5.6 Vers une méthode d’intelligence artificielle


La fraude par SIM box pose de sérieux problèmes aux opérateurs mobiles, sa détection et
sa prévention n’est pas une tâche simple. Elle évolue, se transforme et s’adapte, elle a donc
besoin de méthodes d’analyses de données intelligentes pour la détecter et la prévenir.
Le volume de données dans le secteur des télécommunications est en accroissement continu
et la prise de conscience de sa valeur est donc primordiale. Ainsi, l’exploitation de ce gise-
ment de données est nécessaire face au développement des actes frauduleux. C’est là que
l’intelligence artificielle intervient.

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.

2.2 Qu’est-ce que l’apprentissage automatique


L’apprentissage automatique est une branche de l’intelligence artificielle qui se concentre
sur le développement de modèles capables de représenter certaines caractéristiques du monde
réel, d’apprendre certaines propriétés statistiques de distribution des données qu’ils traitent,
afin d’accomplir diverses tâches. La relation avec l’intelligence provient des capacités de
généralisation de ces modèles, autrement dit la capacité des modèles à s’adapter correctement
à de nouvelles données qui n’étaient pas visibles au préalable [28].

2.3 L’apprentissage automatique et l’aide à la décision


Face à la demande accrue de service, les opérateurs de télécommunications ont besoin
d’adapter le fonctionnement de leurs systèmes, afin de continuer à garantir un certain niveau
de qualité à leurs utilisateurs. Pour ce faire, ils tendent vers un fonctionnement plus cognitif.
Il s’agit donc de doter leurs systèmes de moyens pour exploiter toutes les informations ou
données à leur disposition, les aidant ainsi à prendre eux-mêmes les meilleures décisions, voire
s’autogérer, grâce à l’intelligence artificielle. Cela nécessite la mise en place de moyens pour
exploiter les données, y effectuer de l’apprentissage automatique, afin d’apporter l’information
qui permet d’optimiser les décisions.

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] :

Figure 2.1 – Cycle de vie d’un projet d’apprentissage automatique

• Compréhension des besoins : elle se concentre sur la compréhension des besoins de


l’entreprise et la création d’un plan d’actions du projet.
• Compréhension des données : elle concerne la collection, l’exploration et l’analyse des
données, ainsi que la détection des problèmes liés à leur qualité.
• Préparation des données : elle comprend le nettoyage des données, la transformation
des données brutes en dataset utilisable lors de la modélisation et la sélection des
caractéristiques. Cette étape prend généralement beaucoup de temps et se déroule en
parallèle avec la phase de modélisation.
• Modélisation : différentes techniques de modélisation sont appliquées et leurs para-
mètres sont sélectionnés. Il est généralement inévitable de revenir à l’étape précédente
pour préparer les données différemment ou sélectionner d’autres caractéristiques selon
le besoin.

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.

2.5 Types d’apprentissage


Dans l’apprentissage automatique, les tâches sont généralement divisées en grandes caté-
gories basées sur la façon dont l’apprentissage est reçu. Les deux méthodes d’apprentissage
automatique les plus utilisées sont l’apprentissage non supervisé et l’apprentissage supervisé.

2.5.1 L’apprentissage non supervisé


L’apprentissage non supervisé traite le cas où on dispose seulement des entrées X sans
avoir au préalable les sorties. Autrement dit, les exemples de cas ne sont pas étiquetés.
L’apprentissage non supervisé (clustering) a pour but de construire des groupes (clusters)
d’objets similaires à partir d’un ensemble hétérogène d’objets [30].
Le but est de regrouper au sein d’une même classe les variables les plus homogènes et à
obtenir les classes les plus hétérogènes possibles. En effet, le processus de clustering repose
sur une mesure précise de la similarité des objets que l’on veut regrouper, appelée distance
ou métrique.
Exemple d’apprentissage non supervisé
K-Means : étant donné un dataset et un nombre K de clusters, l’algorithme commence par
choisir K instances aléatoires qui représentent les centroids initiaux et affecte le reste des
instances aux clusters ayant le plus proche centroid. Ensuite, il calcule les nouveaux centroids
en effectuant en général la moyenne des instances présentes dans chaque cluster, et ainsi de
suite jusqu’à ce qu’il n’y est plus de changement. L’un des problèmes de l’algorithme est que
le résultat final dépend du choix de K et de l’initialisation des centroids [9].

36
Figure 2.2 – Exemple de l’algorithme K-Means [9]

2.5.2 L’apprentissage supervisé


L’apprentissage supervisé consiste à établir des règles de comportement à partir d’une
base de données contenant des exemples de cas déjà étiquetés. La base de données est en
principe un ensemble de couples entrées/sorties (X, Y). Le but est d’apprendre à prédire pour
toute nouvelle entrée X appelée variable explicative, la sortie Y appelée variable cible [31].
On distingue deux types d’apprentissage supervisé. La différence est au niveau du type de la
variable à prédire ; si elle est qualitative, on parle de classification ; si elle est quantitative,
on parle de régression. Nous nous arrêtons un instant pour fournir plus de détails sur cette
méthode.
Considérons j la valeur de la jème variable appelée variable explicative (feature) pour
le ième point de données, dit individu, où  = 1..n et j = 1..m. L’objectif est de prédire le
résultat y .

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 Ω(Θ) :

L(Θ) = (θ) + Ω(Θ) (2.2)

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] :

i) Erreur quadratique moyenne (MSE)


MSE (Mean Squared Error) est mesurée comme la moyenne arithmétique des carrés des
écarts entre les valeurs prédites et les vraies valeurs.

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.

ii) Erreur moyenne absolue (MAE)


MAE (Mean Absolute Error) est une fonction de perte utilisée pour les modèles de régres-
sion. Elle est mesurée comme la moyenne arithmétique des valeurs absolues des écarts entre
les valeurs prédites et les vraies valeurs. Elle mesure donc l’ampleur moyenne des erreurs
dans un ensemble de prédictions, sans tenir compte de leurs directions.

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.

iii) Perte d’entropie croisée


Il s’agit du paramètre le plus courant pour les problèmes de classification. La perte d’en-
tropie croisée mesure les performances d’un modèle de classification dont la sortie est une
valeur de probabilité comprise entre 0 et 1. Plus la probabilité prédite diverge de l’étiquette
réelle, plus la perte augmente.
Pour la classification binaire, la fonction est donnée par :

(θ) = (−y og(ŷ ) + (1 − y )og(1 − ŷ )) (2.5)


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

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

La régularisation est une technique pour diminuer la complexité du modèle en pénalisant


la fonction de perte. Le terme de régularisation Ω(Θ) est donc une pénalité pour les coeffi-
cients de l’algorithme qui réduit les estimations de coefficient vers zéro.
Le terme de régularisation est appliqué dans les coefficients car un modèle sur-ajusté se ca-
ractérise généralement par ses coefficients importants [32].

Quelques techniques pour appliquer la régularisation [34] :

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é).

2.6 Découpage des données


Dans un projet d’apprentissage automatique, le découpage du jeu de données est une
étape très importante à ne pas négliger, faute de quoi les modèles risquent de sur-ajuster ou
de sous-ajuster. En règle générale, le jeu de données est découpé en ensembles d’entraînement,
de validation et de test [35] :

• Un ensemble de données d’entraînement est un ensemble de données d’exemples utilisés


pour l’apprentissage.
• Un ensemble de données de validation est un ensemble qui permet d’ajuster les hyper-
paramètres du modèle, et donc la sélection du modèle.
• Un ensemble de données de test est un ensemble qui est indépendant de l’ensemble d’en-
traînement. Il a pour rôle d’évaluer le modèle sous sa forme finale, et de voir comment
il arrive à prédire sur des données jamais vues auparavant.

2.7 Validation croisée


La validation croisée divise les données d’entraînement en plusieurs parties disjointes de
taille approximativement égale. Chaque partie est sélectionnée à son tour comme données de
validation, tandis que les parties restantes sont utilisées comme données d’entraînement.
Une estimation générale des performances du modèle est faite en combinant les résultats
d’estimations de toutes les parties.

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

Le sous-ajustement (underfitting), se produit lorsque le modèle est trop simple et n’est


pas en mesure de saisir la relation entre les exemples en entrée et les valeurs cibles. Dans la
pratique, un modèle présente un sous-ajustement lorsqu’il donne des résultats médiocres sur
les données d’entraînement. On dit qu’il a un biais élevé.

B) Sur-ajustement

Le sur-ajustement (overfitting), se produit lorsque le modèle est très complexe, et apprend


à reconnaître parfaitement les données de l’ensemble d’apprentissage dans les moindres détails
et n’arrive pas à généraliser sur de nouveaux exemples. Dans la pratique, le modèle présente
un sur-ajustement lorsqu’il offre de bons résultats sur les données d’entraînement, mais des
résultats médiocres sur les données d’évaluation. On dit qu’il a une variance élevée [36].

Figure 2.3 – Les problèmes de sous-ajustement et sur-ajustement [10]

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.

2.9.1 Solution au niveau des données


La solution au niveau des données est introduite par la technique du ré-échantillonnage.
Ses deux techniques les plus courantes sont le sous-échantillonnage et le sur-échantillonnage.

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.

2.10.1 Réseau de neurones


Un réseau de neurones artificiels est un système composé de plusieurs unités de calcul
simples appelées neurones fonctionnant en parallèle. Au cours de notre étude, nous nous in-
téressons à une structure élémentaire du réseau de neurones appelée Perceptron MultiCouches
(PMC).
Le perceptron multicouches se compose d’une couche d’entrée, d’une couche de sortie
et d’une ou plusieurs couches cachées. Le neurone de chaque couche va en fait calculer une
somme pondérée de ses entrées qu’il va transmettre à une fonction ƒ pour produire ses sorties.
Cette fonction mathématique qu’on appelle fonction d’activation, permet de transformer le
signal entrant dans un neurone en un signal de sortie. La première couche est composée
de neurones transparents qui n’effectuent aucun calcul mais simplement distribuent leurs
entrées à tous les neurones de la couche suivante appelée couche cachée. Le neurone de la
dernière couche (ou couche de sortie) utilise une fonction d’activation linéaire et n’effectue
donc qu’une simple somme pondérée de ses entrées.
Pour chaque couche du réseau, il existe également un terme de biais. Un biais est un neurone
dans lequel la fonction d’activation est en permanence égale à 1. Comme pour les autres
neurones, un biais se connecte aux neurones de la couche suivante par l’intermédiaire d’un
poids, généralement appelé seuil. Les neurones et les biais sont organisés dans une structure
de couches non-bouclées (feed-forward). Le réseau peut donc s’interpréter simplement comme
un modèle entrée-sortie.
Ces réseaux sont en mesure de modéliser des fonctions même très complexes, où le nombre
de couches et le nombre d’unités dans chaque couche va déterminer la complexité de la
fonction. Lors de la conception des perceptron multicouches, il est important de bien spécifier
le nombre de couches cachées ainsi que le nombre d’unités dans ces couches. Il est également
important de bien choisir les paramètres [38] [39].

45
Figure 2.4 – Architecture d’un perceptron multicouches [11]

2.10.2 Forêt aléatoire


La forêt aléatoire est une méthode d’apprentissage d’ensemble pour la classification et la
régression. Comme nous l’avons déjà expliquée, la méthode de bagging implique la combi-
naison de nombreux apprenants faibles. Dans une forêt aléatoire, ces apprenants faibles sont
des arbres de décision. La méthode consiste à construire une multitude d’arbres de décision
au moment de l’entraînement. La prédiction ou classification se fait alors en fonction d’un
système de vote majoritaire au sein de ces différents arbres. Le principe de la forêt aléatoire
est alors de tirer profit de cette instabilité en les agrégeant entre eux.
Dans un langage simple, la forêt aléatoire construit multiples arbres de décision et les
combine pour améliorer les performances du modèle dans son ensemble. Elle utilise le boots-
traping de telle sorte que chaque arbre de décision sera formé avec différents sous-échantillons
de données. De plus, la forêt aléatoire utilise des sous-ensembles aléatoires de variables expli-
catives. Par exemple, s’il y a 50, la forêt aléatoire n’en choisira qu’un certain nombre, disons
10 pour entraîner chaque arbre ; ainsi, chaque arbre aura 10 caractéristiques aléatoires qui
seront utilisées pour l’entraînement en trouvant la meilleure répartition de chaque nœud de
l’arbre. Une fois que nous avons la collection d’arbres de décision, les résultats de chaque arbre
seront agrégés pour obtenir le résultat final (vote). La figure (2.5) explique la construction
de la forêt aléatoire à partir des données d’entrée [40].

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] :

• Les termes de régularisation L1 et L2, qui améliorent les capacités de généralisation du


modèle et réduisent le sur-ajustement.
• Le gamma qui est la perte minimale requise pour qu’un arbre se fende.
• La fonction de validation croisée intégrée permettant de déterminer plus facilement le
nombre de tours de boosting à chaque exécution, l’entraînement très rapide qui peut
être parallélisé/distribué sur plusieurs cœurs de processeur et la gestion des valeurs
manquantes dans l’ensemble de données.

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.

Figure 2.6 – Exemple du fonctionnement de XGBoost

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.

2.11 Métriques d’évaluation


Les métriques d’évaluation sont utilisées pour mesurer les performances des modèles d’ap-
prentissage automatique. L’évaluation est une partie essentielle pour tout projet. Plusieurs
métriques d’évaluation existent telles que la précision globale (ACC), la précision (P), le
rappel (R), le f1-score et l’aire sous courbe (AUC). Ces mesures sont calculées en utilisant :
le vrai positif (TP), le faux positif (FP), le faux négatif (FN) et le vrai négatif (TN).

2.11.1 Matrice de confusion


Pour une classification binaire, les quatre résultats sont inclus dans une matrice de confu-
sion :

Classe prédite
Positive Négative
Positive TP FN
Classe réelle
Négative FP TN

2.11.2 La précision globale (ACC)


La précision globale (Accuracy) est la métrique de classification la plus utilisée. Elle est
facilement adaptée aux problèmes de classification binaire et multi-classe.

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)

2.11.3 La précision (P)


C’est la proportion de nombre de cas positifs correctement classés par rapport au nombre
total de cas positifs trouvés, calculée à l’aide de l’équation :

(TP)
(2.9)
(TP + FP)

2.11.4 Le rappel (R)


Appelé aussi le taux de détection. C’est le nombre de cas positifs correctement classés par
rapport au nombre total de cas positifs examinés, donné par l’équation :

(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.

2.11.6 Aire sous courbe (AUC)


AUC (Area Under Curve) est l’aire sous la courbe ROC (Receiver Operating Characteris-
tic), permettant de la résumer en une seule valeur. Plus la valeur AUC est proche de 1 plus

50
le modèle est performant, ce qui signifie qu’il a une bonne mesure de séparabilité entre les
deux classes.

2.11.7 La courbe ROC


ROC est un graphe représentant les performances d’un modèle de classification pour tous
les seuils de classification. Il indique à quel point le modèle peut distinguer deux classes.
Cette courbe trace le taux de vrais positifs en fonction du taux de faux positifs.

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

Acquisition et prétraitement des


données
3.1 Introduction
Les algorithmes d’apprentissage automatique sont impuissants sans les données et les
informations qui s’y cachent. Entre eux et ces données, un travail de feature engineering doit
être effectué.
Dans ce chapitre, nous commencerons par définir la nature des données en télécommu-
nication. Ensuite, nous expliquerons leur processus d’acquisition qui comprend la collection,
l’exploration et la vérification des données. Enfin, nous détaillerons les différentes étapes de
prétraitement depuis le nettoyage des données jusqu’à la sélection des caractéristiques et la
transformation des données.

3.2 Nature des données en télécommunication


Dans le secteur des télécommunications, il existe des données critiques sur lesquelles toute
décision peut être prise. Nous nous intéressons à deux groupes principaux : les données de
détail des appels (CDR) et les données des clients.
Le CDR est l’enregistrement des données d’appel généré par les commutateurs de l’opérateur
de télécommunications. Il se compose des détails spécifiques à une seule instance d’un appel
téléphonique ou autre transaction de communication gérée par ce commutateur [44]. Nous
citons :

• 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].

3.3 Acquisition des données


Ayant une compréhension claire du problème à résoudre, il était nécessaire de bien localiser
et choisir les données, afin d’atteindre nos objectifs.
Une démarche itérative a été donc appliquée autour des 3 étapes : collecte des données,
exploration des données et vérification de la qualité des données, jusqu’à ne plus identifier de
problèmes liés à la qualité des données.

3.3.1 Collection des données


Nous avons fait l’extraction des données utilisées au cours de ce travail depuis l’entrepôt de
données de Djezzy. Ces extractions proviennent de 4 tables différentes de la base de données
FMS contenant les CDR appels, SMS, GPRS, et les données des clients.
Le traitement et la manipulation de ces données immenses ont nécessité l’utilisation d’outils
puissants dédiés spécialement au big data et qui permettent d’effectuer des calculs distribués
rapidement. De ce fait, nous avons utilisé un outil des plus performants : Hive, que nous
détaillerons dans la section 5.2.3.
Afin d’interagir avec la base de données cible, nous avons effectué nos requêtes SQL via
l’outil MobaXTerm présent dans l’environnement de production, qui a simplifié la connexion
SSH avec Hive se trouvant dans le serveur distant.

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.

3.3.2 Exploration des données

A) Description des données

Cette étape concerne la compréhension de chaque variable indépendamment des autres


grâce aux méta-données afin de mieux les exploiter lors de la création des caractéristiques.
Pour certaines variables catégorielles dont le nom n’était généralement pas très informatif,
l’exploration des valeurs possibles de chaque catégorie a aidé à comprendre leur signification.
En outre, certaines catégories sont apparues sous forme d’entiers, ce qui nous a menées à
nous informer auprès des managers du département fraude pour les décoder. La Table 3.1
cite les détails essentiels d’un CDR qui sont utiles dans cette étude.

Table 3.1 – Description des données CDR

Données Description

Phone number Numéro de téléphone générant le CDR

Caller number Numéro de l’émetteur

Called number Numéro du récepteur

Record type Type de l’enregistrement : entrant (incoming)/sortant (outgoing)

Service type Type du service : appel/SMS/GPRS

Time stamp Date et heure de génération de l’enregistrement

Duration Durée de la transaction

Geographic position Position géographique

Equipment ID Code IMEI de l’appareil mobile

Is onnet Enregistrement onnet/offnet/international

Product type Type de SIM : prepaid/postpaid

Data quantity Quantité de données utilisée

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.

C) Analyse des données en fonction du temps

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.

3.3.3 Vérification de la qualité des données


Cette étape permet de vérifier et signaler les problèmes rencontrés après l’exploration des
données. Les problèmes rencontrés tout au long du processus itératif étaient :

• 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.

3.4 Prétraitement des données


Les données sont au centre des algorithmes d’apprentissage automatique. Par conséquent,
préparer au mieux ces données, permet d’avoir de meilleures performances.

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.

3.4.2 Ingénierie des fonctionnalités


Une étape très importante dans l’apprentissage automatique est ce qu’on appelle ingé-
nierie des fonctionnalités (feature engineering) qui est le processus de création de nouveaux
attributs qui n’existaient pas auparavant dans le but de fournir une meilleure représentation
des données, permettant ainsi aux modèles d’apprentissage automatique de mieux prédire.
La création des caractéristiques a été faite après une analyse minutieuse du comportement
des fraudeurs qui se révèle très différent de celui des abonnés légitimes :

• 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.

• moc_count : le nombre d’appels internationaux exposés au contournement est énorme.


Les simboxeurs ont donc tendance à effectuer un nombre élevé d’appels sortants.
Cette caractéristique comptabilise le nombre total d’appels sortants, quel que soit leur
type (onnet, offnet, international).
• mtc_pourc : les simboxeurs n’emploient leurs cartes SIM que pour frauder, donc ils
ne reçoivent pas d’appels sauf pour ceux qui tentent de simuler le comportement d’un
abonné légitime. Néanmoins, ce taux est relativement petit par rapport au nombre total
d’appels.
Cette caractéristique calcule sous forme de pourcentage, le nombre d’appels entrants par
rapport au nombre total d’appels, quel que soit le type (onnet, offnet, international).
• mtc_duration_pourc : les simboxeurs ne reçoivent généralement pas d’appels, et
même s’ils simulent des appels entrants, leurs durées est très courte contrairement à un
utilisateur qui peut recevoir des appels de longue durée.
Cette caractéristique représente le pourcentage des appels entrants.
• moc_count_onnet_pourc : le prix d’un appel onnet est moins onéreux qu’un appel
offnet. C’est la raison pour laquelle les simboxeurs le privilège.
1. Numéro unique utilisé pour identifier chaque zone de localisation (ensemble de BTS)
2. Numéro unique utilisé pour identifier chaque BTS

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.

Figure 3.1 – Boîtes à moustaches de la caractéristique distinct_moc_ratio

Figure 3.2 – Boîtes à moustaches de la caractéristique data_kilobyte_sum

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é

En statistique, la multicolinéarité est un terme qui fait référence à l’utilisation du même


type d’information plus d’une fois. En général, ce phénomène est présent quand les carac-
téristiques sont très corrélées entre elles. Un grand danger de cette approche est le sur-
apprentissage [45].
Le graphe 1 dans l’annexe des figures montre la corrélation entre les 45 caractéristiques iden-
tifiées ci-dessus. Nous avons supprimé les variables fortement corrélées dont la corrélation
dépasse 0.80.

B) Suppression des variables non importantes

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.

3.4.4 Transformation des données


La plupart du temps, en apprentissage automatique, les datasets proviennent avec des
ordres de grandeurs différents. Cette différence d’échelle peut conduire à des performances
moindres. Pour pallier à cela, des traitements préparatoires sur les données existent notam-
ment le Feature Scaling qui comprend la standardisation et la normalisation.

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 − mn
j
j = (3.1)
m
j − mn
j
Où :
j = La valeur du ième point de données de la jème caractéristique.
mn
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.

3.5 Problème des données déséquilibrées


Notre dataset compte 1025 exemples (30%) de cas de fraude face à 2297 exemples de cas
normaux, ce qui représente un déséquilibre de données. Pour faire face à ce problème, nous
avons utilisé la technique de ré-échantillonnage qui est détaillée dans la section 4.4 .

3.6 Découpage des données


Nous avons découpé notre jeu de données en 3 ensembles : l’ensemble d’entraînement,
de validation, et de test. L’ensemble d’entraînement contient 75% des données du dataset
dont 20% sont gardées pour la validation. Les 25% des données restantes constituent l’en-
semble de test. Le tableau 3.2 représente le nombre d’exemples de chaque ensemble, après
ré-échantillonnage des données d’entraînement.

63
Table 3.2 – Découpage des données

Nombre d’exemples

Ensemble d’entraînement 2710

Ensemble de validation 678

Ensemble de test 931

L’ensemble de validation se compose de 5 sous ensembles. Il a été construit en utilisant


la validation croisée dite stratifiée, qui permet de garder la même proportion de données des
classes de fraude et non fraude dans chaque sous-ensemble de validation et d’entraînement.

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 Technologies et bibliothèques utilisées


Au cours de ce travail, nous avons eu recours à différents outils de développement et
bibliothèques de programmation :

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.

4.2.10 Jupyter Notebook


Jupyter Notebook est un logiciel open source dédié à l’analyse de données permettant
de créer et de partager des documents contenant du code, des équations, des visualisations
graphiques et du texte [54]. Nous avons utilisé ces cahiers de calcul essentiellement pour :
l’exploration des données, la visualisation des données, l’apprentissage automatique et bien
d’autres.

4.2.11 Apache Hadoop


Hadoop est un framework open source permettant de stocker des données et de lancer
des applications sur des grappes de machines standards. Cette solution offre un espace de
stockage massif pour tous les types de données, une immense puissance de traitement et la
possibilité de prendre en charge une quantité de tâches virtuellement illimitée. Basé sur Java,
ce framework fait partie du projet Apache, sponsorisé par Apache Software Foundation [55].

4.2.12 Apache Spark


Apache Spark est un framework open source de calcul distribué, développé pour gérer
le traitement et l’analyse de données à grande échelle. C’est une infrastructure de traite-
ment de données massives qui peut effectuer rapidement des tâches distribuées sur plusieurs
ordinateurs [56].

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].

4.3 Environnement de tests


La réalisation de notre solution a été effectuée sur les systèmes d’ordinateurs ayant les
caractéristiques suivantes :

Machine 1 :

• Processeur : Intel Core -i5-6200U 2.40GHz CPU.


• RAM : 16.00 Go.
• Système d’exploitation : Windows 10 Professionnel 64bit.
• Disque dur : 256 GO.

Machine 2 :

• Processeur : Intel Core i5-8350U 1.70GHz CPU.


• RAM : 8.00 Go.
• Système d’exploitation : Windows 10 Professionnel 64bit.
• Disque dur : 256 GO.

4.4 Ré-échantillonnage des données


Dans notre étude, nous avons été confrontées au problème de déséquilibre entre les classes,
dans lesquelles il n’y avait pas suffisamment d’échantillons dans la classe minoritaire. Cer-
tains algorithmes ne sont pas adaptés à cette situation car les classes minoritaires peuvent être

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].

4.5 Implémentation des modèles


À ce stade, différents modèles ont été formés en appliquant diverses variétés de modes de
formation. Des expériences ont été menées sur les trois algorithmes sélectionnés, pour trouver
le meilleur modèle pour la détection de fraude par SIM box.
Toutes les combinaisons possibles de paramètres ont été expérimentées et en conséquence,
un total de N modèles ont été construits pour chaque algorithme.
Les prochaines sous-sections traitent la construction des différents modèles. Pour chaque
algorithme, la construction des modèles, le choix des hyper-paramètres, ainsi que l’évaluation
de leurs performances sont discutés en détails.

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.

Table 4.1 – Évaluation du ANN en fonction du nombre de couches cachées

Nombre de couches cachées ACC P R F1-score AUC

1 92.69% 90.96% 89.39% 92.68% 92.03%

2 93.01% 91.76% 89.39% 92.99% 92.29%

3 91.40% 86.84% 90.83% 91.44% 91.29%

4 91.94% 88.7% 89.97% 91.95% 91.54%

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.

Figure 4.1 – Courbes de perte du ANN en variant les fonctions d’activation

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.

D) Initialisation des poids

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

La figure 4.2 montre que He_uniform permet à la fonction de perte de converger un


peu plus que les autres et continue de minimiser l’erreur d’apprentissage tout au long du
processus. He_uniform a donc été choisi comme mode 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.

Figure 4.3 – Courbes de perte du ANN en fonction des optimiseurs

D’après la figure 5.1, Nadam (Nesterov-accelerated Adaptive Moment Estimation) permet


à la fonction de perte de converger un peu plus rapidement que Adam (Adaptive Moment
Estimation) et RMSprop (Root Mean Square Propagation), et permet de minimiser l’erreur de
l’apprentissage dés le début, en continuant ainsi tout au long du processus, jusqu’à atteindre
une valeur de 0.05 au bout de 100 itérations.
D’autre part, Adam et RMSprop montrent des performances assez proches et permettent à la
fonction de perte d’atteindre une valeur autour de 0.085 au bout de 100 itérations (atteinte
en utilisant Nadam au bout de 60 itérations seulement). Adamax (Adaptive Max Pooling)
quant à lui, n’aide pas la fonction de perte à accélérer sa convergence qui compte une valeur
de 0.13 au bout de 100 itérations.
L’optimiseur le plus approprié à notre problème est donc : Nadam, qui se base sur une
méthode adaptative pour définir les valeurs du taux d’apprentissage [68].

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.

Table 4.2 – Évaluation du ANN en fonction du taux d’apprentissage

Learning rate 0.1 0.01 0.001 0.0001

AUC 50% 94.31% 95.4% 92.61%

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.

Table 4.3 – Évaluation de ANN en fonction de la taille de lot

Taille de lot 32 64 128 256 512

AUC 94.98% 93.54% 93.60% 94.1% 93.8%

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

Le nombre d’itérations (epochs) est un hyper-paramètre très important, il représente le


nombre total d’itérations pour lequel le modèle est entraîné.
La méthode la plus courante pour fixer le nombre d’itérations est de tracer la courbe de perte
pour l’ensemble d’entraînement et de validation. A partir du moment où le modèle commence
à sur-ajuster, ou la fonction de perte augmente ou cesse de diminuer de manière significative,
on arrête l’entraînement. Durant tout le processus du choix des paramètres, nous avons utilisé
ce principe pour déterminer le nombre d’itérations à utiliser pour éviter le sur-apprentissage.
Dans le graphe de la figure 4.4, nous remarquons qu’à partir de 100 itérations, la fonction
de perte pour l’ensemble d’entraînement continue de diminuer, alors que pour l’ensemble de
validation, elle commence à augmenter, amenant le modèle à sur-ajuster.

Figure 4.4 – Courbes de perte du ANN par rapport au nombre d’itérations

I) Modèle final

i) Paramètres
Les paramètres du modèle final sont :

• Nombre d’itérations : 100.


• Nombre de couches cachées : 2.
• Nombre de neurones d’entrée : 12.
• Nombre de neurones cachés : 13.
• Taux d’apprentissage : 0.001.
• Taille de lot : 32.

77
ii) Performances
Les performances du modèle final sont présentes dans le tableau ci-dessous :

Table 4.4 – Évaluation du modèle ANN final

ACC P R F1-score AUC

96.13% 94.69% 95.22% 96.13% 95.96%

iii) Les courbes d’apprentissage

Figure 4.5 – Courbes de perte du Figure 4.6 – Précision globale du modèle


modèle ANN final par rapport au ANN final par rapport au nombre
nombre d’itérations d’itérations

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

La taille de la forêt comprend deux paramètres : la profondeur maximale (max_depth)


et le nombre d’arbres (n_estimators).
Dans une forêt aléatoire, un nombre excessif d’arbres rend le processus d’apprentissage plus
lent tandis que peu d’arbres affecte la capacité de généralisation du modèle, et plus l’arbre
est profond, plus il est divisé et capture plus d’informations sur les données, cependant, il
est susceptible de sur-ajuster. Choisir le bon nombre d’arbres et la bonne profondeur qui
permettent d’augmenter les performances et d’optimiser le temps d’apprentissage est donc
très important lors de la construction du modèle.
Afin de limiter l’intervalle de choix pour la profondeur maximale, nous avons tracé les
courbes de perte pour les ensembles d’entraînement et de validation en variant max_depth.

Figure 4.7 – Score AUC du RF en variant max_depth

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.

Figure 4.8 – Score AUC du RF en fonction de n_estimators et max_depth

Le modèle atteint un score AUC maximal de 99.73% pour l’ensemble d’entraînement et de


98.93% pour l’ensemble de validation quand le nombre d’arbres est égal à 200 et la profondeur
maximale est égale à 5.
Nous avons donc fixé la profondeur maximale à 5 et le nombre d’arbres à 200.

B) Nombre minimum d’échantillons

Lorsque nous augmentons le nombre minimum d’échantillons requis pour diviser un


nœud interne (resp. le nombre minimum d’échantillons requis pour être au niveau d’un
nœud feuille), chaque arbre de la forêt devient plus contraint car il doit considérer plus
d’échantillons à chaque nœud (resp. feuille). Ici, nous allons faire varier les deux paramètres :
min_samples_split et min_samples_leaf pour en tirer le meilleur résultat.

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.

C) Nombre maximum de caractéristiques

L’augmentation du nombre maximum de caractéristiques que le modèle est autorisé à


essayer dans un arbre individuel (max_features) améliore généralement les performances du
modèle car à chaque nœud, plus d’options sont à considérer, néanmoins cela peut diminuer
la vitesse.
Le choix du nombre maximum de caractéristiques dépend de la profondeur maximale. Afin
de trouver la meilleure combinaison de ces deux paramètres et choisir le nombre maximum
de caractéristiques optimal ; nous avons utilisé GridSearchCV pour varier les valeurs de
max_features dans l’intervalle [1,27] et max_depth dans l’intervalle [3,6]. Les résultats sont
présents dans la figure 4.11.

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.

D) Complexité des coûts

La complexité des coûts (ccp_alpha) est un paramètre de l’algorithme d’élagage à coût-


complexité minimale qui permet de contrôler la taille d’un arbre individuel, donc de contrôler
le problème de sur-ajustement. Des valeurs élevées signifient l’augmentation du nombre de
nœuds élagués.
Nous avons tracé les courbes du score AUC pour les ensembles d’entraînement et de validation
en variant le paramètre ccp_alpha.

Figure 4.11 – Score AUC du RF en variant ccp_alpha

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 :

• Nombre d’arbres : 200.


• Nombre minimum d’échantillons requis pour diviser un nœud interne : 7.
• Nombre minimum d’échantillons requis pour être au niveau d’un nœud feuille : 4.
• Profondeur maximale : 5.
• Nombre maximum de caractéristiques : 13.
• Complexité des coûts : 0.001.

ii) Performances
Les performances du modèle final sont présentes dans le tableau 4.5.

Table 4.5 – Évaluation du modèle RF final

ACC P R F1-score AUC

96.88% 97.66% 94.10% 95.58% 96.35%

iii) Les courbes ROC


Les figures ci-dessous montrent des courbes d’entraînement et de test qui se rapprochent
du coin supérieur gauche indiquant ainsi de bonnes performances pour modèle.

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

iv) Les courbes d’apprentissage

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 :

• Paramètres globaux : guider le fonctionnement général.


• Paramètres du booster : guider le booster individuel (arborescence/régression) à chaque
étape.
• Paramètres d’apprentissage : liés à la fonction objectif et aux métriques d’évaluation.

A) Variation des Paramètres globaux

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.

B) Variation des Paramètres du booster

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.

i) Taux d’apprentissage et nombre d’arbres


Le taux d’apprentissage rend le modèle plus robuste en réduisant les poids à chaque étape.

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.

Figure 4.15 – Score AUC de XGBoost en variant le taux d’apprentissage

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.

ii) Profondeur maximale, échantillon de colonne par arbre et sous-échantillon


La profondeur maximale (max_depth) est le nombre maximum de nœuds autorisés de la
racine à la feuille la plus éloignée dans un même arbre.
L’échantillon de colonne par arbre (colsample_bytree) correspond au ratio des caractéris-
tiques à utiliser pour chaque arbre.
Le sous-échantillon (subsample) désigne la fraction des observations à échantillonner au ha-
sard pour chaque arbre.

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.

Figure 4.16 – Résultat du GridSearchCV de XGBoost en variant max_depth, col-


sample_bytree et subsample

Le résultat du GridSearchCV donne les paramètres permettant au modèle d’atteindre


ses meilleures performances, néanmoins, le modèle peut souffrir de sur-ajustement ou sous-
ajustement. Nous avons donc tracé les courbes AUC pour les ensembles d’entraînement et de
validation présentées dans la figure 4.17.

Figure 4.17 – Score AUC de XGBoost en utilisant les résultats du GridSearchCV

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

Nous avons ré-entraîné le modèle en utilisant cette combinaison de paramètres, et en


fixant le nombre d’arbres à 70. La figure 4.19 montre que le sur-ajustement a largement
diminué, cependant, d’autres modifications peuvent avoir lieu en fonction de la variation des
paramètres à suivre.

Figure 4.19 – Score AUC de XGBoost en utilisant les résultats de la 2 ème itération du
GridSearchCV

iii) Poids minimum du descendant


Le poids minimum du descendant (min_child_weight) est le poids minimum requis pour
créer un nouveau nœud dans l’arborescence. Une petite valeur permet à l’algorithme de créer
des descendants qui correspondent à moins d’échantillons, permettant ainsi d’avoir des arbres
plus complexes, mais plus susceptibles de sur-ajuster.
Nous avons utilisé la fonction GridSearchCV en limitant les intervalles à [0,10] pour
min_child_weight et [0,0.2] pour learning_rate.

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 :

• Nombre d’arbres : 70.


• Profondeur maximale : 4.
• Poids minimum de descendant : 1.
• Sous échantillon : 0.4.
• Echantillon de colonne par arbre : 0.5.
• Taux d’apprentissage : 0.19.
• Gamma : 5.

90
ii) Performances
Les performances du modèle final sont présentes dans le tableau 4.6.

Table 4.6 – Évaluation du modèle XGBoost final

ACC P R F1-score AUC

97.8% 98.28% 96.34% 97.30% 97.65

iii) Les courbes ROC


Les figures ci-dessous montrent que les courbes d’entraînement et de test se rapprochent
du coin supérieur gauche démontrant ainsi une bonne performance du modèle.

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

iv) Les courbes d’apprentissage


La figure 4.24 montre que le score de l’ensemble d’entraînement est toujours autour du
maximum et le score de validation est très proche de ce dernier. Ceci indique que le modèle
ne souffre pas de problèmes de sous-ajustement ou sur-ajustement.

91
Figure 4.24 – Score AUC par rapport au nombre d’itérations pour le modèle final de XG-
Boost

4.6 Résultats et discussion


Cette section présente une comparaison des performances des modèles ANN (Artifrcial
Neural Network), RF (Random Forest) et XGBoost. Les modèles sont comparés en termes
de précision et de temps.

4.6.1 Évaluation en terme de métriques


Dans notre problème de détection de fraude, le coût d’inclusion d’un cas négatif est moins
coûteux que de manquer un fraudeur. Pour cela, dans l’évaluation des performances entre les
différents modèles, le rappel représente une métrique très importante.
En plus de pouvoir calculer la précision, le rappel et f1-score pour le modèle en général,
ils peuvent aussi être calculés à l’intérieur de chaque classe, permettant ainsi une meilleure
interprétation des résultats, et donnant une intuition plus profonde du comportement du
classificateur par rapport à la précision globale qui peut masquer des faiblesses fonctionnelles.

92
Table 4.7 – Les performances des 3 modèles à l’intérieur de chaque classe

Modèles/ Métriques P R F1

ANN 97.03% 96.70% 96.86%

Classe 0 RF 96.43% 98.61% 97.51%

XGBoost 97.77% 98.96% 98.36%

ANN 94.69% 95.22% 94.96

Classe 1 RF 97.67% 94.10% 95.85%

XGBoost 98.28% 96.35% 97.30%

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

Modèle ACC P R F1-score AUC

ANN 96.13% 94.69% 95.22% 96.13% 95.96%

RF 96.88% 97.66% 94.10% 95.58% 96.35%

XGBoost 97.8% 98.28% 96.34% 97.30% 97.65%

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.

4.6.2 Évaluation en terme de temps de calculs


Pour une comparaison extensive, nous avons représenté dans les tables 4.9 et 4.10 le temps
(en secondes) nécessaire pour l’entraînement et la prédiction pour chaque modèle en variant
la taille de l’ensemble d’entraînement/test.

Table 4.9 – Comparaison des 3 modèles en terme de temps de calcul durant l’entraînement

taille du training set(%) 30 50 70 90

ANN 14.172 19.64 25.407 28.375

RF 0.531 0.844 1.343 1.515

XGBoost 0.25 0.406 0.516 0.563

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

taille du test set(%) 30 50 70 90

ANN 0.109 0.172 0.219 0.312

RF 0.016 0.032 0.047 0.063

XGBoost 0.0001 0.015 0.015 0.031

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.

5.2 Systèmes distribués


En télécommunication, un CDR est généré à chaque transaction (Appel, SMS, GPRS),
produisant ainsi un flux de données énorme qui nécessite un outil adapté à son traitement.
A cette issue, des milliers de machines peuvent être regroupées en clusters de calcul adaptés
au big data. Ces systèmes distribués sont généralement très complexes, car ils nécessitent
une surcharge en ce qui concerne la réplication, la tolérance aux pannes et la communication
intra-cluster entre les différentes machines. Cependant, des API de haut niveau pour le trai-
tement de grands volumes de données ont été créées ces dernières années. Un des plus grands
catalyseurs de cette adoption rapide des technologies big data a été Hadoop [69].

5.2.1 Apache Hadoop


Apache Hadoop fait partie de l’Apache Project Foundation. C’est un framework open
source destiné à faciliter la création et le test des applications scalables et distribuées, per-
mettant la répartition et l’exécution des tâches sur plusieurs milliers de nœuds. Au début, le
but de Hadoop était d’exécuter des jobs MapReduce [70]. Cependant, Hadoop 2.0 a introduit
YARN, qui a permis à d’autres applications de s’exécuter dessus [71]. Hadoop propose et
gère son propre système de fichiers distribués HDFS ((Hadoop Distributed File System) [55].

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].

5.2.3 Écosystème Hadoop


De nombreuses technologies fonctionnent sur Hadoop, son écosystème est donc assez vaste.
Nous mentionnons dans ce qui suit les composants Hadoop utilisés dans notre travail :

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.

Figure 5.1 – Architecture de Spark

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].

5.3 Processus de déploiement du modèle


Une fois le modèle est validé selon les objectifs et les besoins de l’entreprise, le déploiement
de ce dernier est nécessaire afin de l’exploiter. Les figures 2 et 3 dans l’annexe des figures
résument le processus de déploiement du modèle.
La phase 1 concerne le développement des différents modèles d’apprentissage automatique,
qui après évaluation, nous a permis de choisir le bon modèle à exploiter dans l’environnement
de production. Les étapes de cette phase ont déjà été expliquées à travers les chapitres 3 et
4.
La phase 2 présente les différentes étapes de mise en production du modèle choisi, qui
seront expliquées dans ce qui suit.
Il est à noter que les étapes : acquisition des données, prétraitement des données et prédiction
sont implémentées à l’intérieur de scripts Python permettant d’automatiser le processus.

5.3.1 Acquisition des données


Pour l’acquisition des données, nous avons développé un script python qui effectue des
requêtes SQL sur Hive via SSH. Ces requêtes permettent d’obtenir les CDR appel, GPRS
et SMS d’un jour pour les utilisateurs ayant effectué des transactions la dernière heure. Les
résultats des requêtes sont re-dirigés vers des fichiers CSV stockés dans HDFS.

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.

Table 5.1 – Paramètres de la soumission du job Spark

mode master num-executors driver-memory executor-memory executor-cores

cluster yarn 300 50g 50g 20

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

5.3.4 Stockage des données


Il est primordial de conserver les données relatives aux cas détectés afin de les visualiser
à travers un tableau de bord. La base de données que nous avons implémentée compte les
tables suivantes :

• 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.

Le schéma final de notre base de données est représenté ci-dessous.

Figure 5.3 – Architecture de la base de données

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.

Figure 5.4 – Schéma explicatif du script python

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.

Figure 5.5 – Onglet login

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.

Figure 5.6 – Onglet Dashboard (partie1)

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.

Figure 5.8 – Onglet Dashboard (partie3)

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.

Figure 5.9 – Onglet Detection

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).

Figure 5.11 – Fenêtre "Add CSV"

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.

Figure 5.12 – Onglet Whitelist

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).

Figure 5.13 – Fenêtre "Add phone number"

Onglet Suspected Imei

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.

Figure 5.14 – Onglet Suspected IMEI

Onglet Suspected CellID

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.

Figure 5.16 – Onglet Queries

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).

Figure 5.18 – Onglet Charts (partie2)

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.

Figure 5.20 – Onglet Performance (partie1)

113
Figure 5.21 – Onglet Performance (partie2)

Les rectangles 1, 2, 3 et 4 permettent d’afficher respectivement les TP, FP, TN, FN


du modèle XGBoost calculés à partir des informations stockées dans les tables : detection,
whitelist, blacklist et true_negative.
Les donut charts dans les rectangles 5, 6, 7 et 8 permettent de visualiser l’état du modèle
à travers les métriques : accuracy, precision, recall et f1-score.

Onglet Users administration

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.

Figure 5.22 – Onglet Users administration

Le bouton (1) permet à l’administrateur d’ajouter un utilisateur en remplissant ses diffé-


rentes informations : username, firstname, lastname, adresse email, mot de passe, et son rôle
(figure 5.23).

114
Figure 5.23 – Fenêtre "Add user"

Le bouton (2) permet de modifier le mot de passe de l’utilisateur (figure 5.24).

Figure 5.24 – Fenêtre "Edit password"

Onglet Cellid table

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.

Figure 5.25 – Onglet Cellid table

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

[1] A propos de djezzy. [Link]


a-propos-de-djezzy/, (consulté le 26 mars, 2020).

[2] Introduction au standard gsm. [Link]


telephonie-mobile/[Link], (consulté le 20 mars, 2020).

[3] Telecom fraud prevention guide. [Link]


telecom-fraud-prevention-guide/, (consulté avril, 2020).

[4] Over the top bypass fraud. [Link]


3Cfont-color%3D%27dd0000%27%3Eover-the-top-bypass-fraud%3Cfont%3E-1056.
html, (consulté avril, 2020).

[5] Sim box fraud scenario. [Link]


SIM-box-fraud-scenario_fig2_311628734, (consulté avril, 2020).

[6] Why sim box bypass fraud is a growing concern in a2p sms, especially on the roaming
side. [Link] (consulté avril, 2020).

[7] Everything about grey traffic simbox interconnect piracy.


[Link]
everything-about-grey-traffic-simbox-interconnect-piracy-1, (consulté
avril, 2020).

[8] Eliminating telco fraud with self learning machines. [Link]


pdf/wa_sb.pdf, (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.

[13] Opérateur de télécommunications. [Link]


fr/Op%C3%A9rateur%20de%20t%C3%A9l%C3%A9communications/fr-fr/, (consulté le
26 mars, 2020).

[14] Opérateur mobile. [Link]


operateur-mobile/, (consulté le 26 mars, 2020).

[15] La voip, qu’est-ce que c’est et comment ça marche ? [Link]


comprendre/voip-kesako-comment-ca-marche/, 9 février 2018 (consulté mars, 2020).

[16] Chris VOLINSKY Richard A. BECKER and Allan R. WILKS. Fraud detection in
telecommunications : History and lessons learned. février 2010.

[17] M. Johnson. Cause and effect of telecoms fraud. 1996.

[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.

[26] Rock Lefebvre Kamalesh Gosalia. Introduction à l’apprentissage automatique. 2019.

[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).

[28] Valentin Bisson. Algorithmes d’apprentissage pour la recommandation. Master’s thesis,


Université de Montréal, 2012.

[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.

[30] M. Bouguessa. Évaluation de l’apprentissage. cours-djc9370. 2015.

[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.

[34] Renu Khandelwal. Régularisation l1 et l2. 4 Novembre 2018.

[35] Juan Orozco Villalobos. Test, training and validation sets. 2020.

[36] ITbodhi. Overfitting and underfitting.

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.

[38] Réseaux de neurones. [Link]


reseaux-de-neurones-automatises/[Link]#
.XoYetogzY2w.

[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.

[46] Commencer avec anaconda. [Link]


6795/commencer-avec-anaconda.

[47] About us. [Link]

[48] Package overview. [Link]


started/[Link].

121
[49] Pyplot in matplotlib. [Link]

[50] seaborn : statistical data visualization. [Link]

[51] Scikit-learn, un outil central en ia et data science. [Link]


[Link]/accueil/#:~:text=Scikit%2Dlearn%2C%20un%20outil%
20central,de%20la%20science%20des%20donn%C3%A9es.

[52] Bastien L. Tensorflow : tout savoir sur la bibliothèque machine learning open source.
2018.

[53] Hausmane Issarane. 6 librairies machine learning open source. https://


[Link]/machine-learning-open-source/, 2019.

[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.

[58] The scala programming language. [Link]

[59] Introduction à django. [Link]


Server-side/Django/Introduction.

[60] Ajax (asynchronous javascript and xml). [Link]


[Link].

[61] Qu’est-ce que le javascript. [Link]


glossaire-marketing-digital/definition-javascript/.

[62] La bibliothèque javascript open source [Link] disponible. [Link]


com/actu/53168/.

[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.

[69] V. k. vavilapalli, a. c. murthy, c. douglas, s. agarwal, m. konar, r. evans, t. graves, j.


lowe, h. shah, s. seth et al., “apache hadoop yarn : Yet another resource negotiator,” in
proceedings of the 4th annual symposium on cloud computing. acm, 2013, p. 5.

[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.

[71] V. k. vavilapalli, a. c. murthy, c. douglas, s. agarwal, m. konar, r. evans, t. graves, j.


lowe, h. shah, s. seth et al., “apache hadoop yarn : Yet another resource negotiator,” in
proceedings of the 4th annual symposium on cloud computing. acm, 2013, p. 5.

[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

Figure 1 – La corrélation des 45 caractéristiques


Figure 2 – Processus de déploiement du modèle (Phase1)
Figure 3 – Processus de déploiement du modèle (Phase2)

Vous aimerez peut-être aussi