Académique Documents
Professionnel Documents
Culture Documents
Je dédie ce travail à mes chers parents. Aucune dédicace ne saurait l’amour, le respect
et l’attachement que j’ai pour vous. Je suis reconnaissant pour les sacrifices que vous avez fait
pour mon bien-être, mes études et surtout pour mon instruction. J’espère que vous êtes fiers de
moi et je fais de mon mieux afin de prendre en considération vos confiances et vos sacrifices. Je
vous remercie d’avoir toujours cru en moi et un grand merci d’être toujours présents autour de
moi, cette présence m’a provoqué tant de force.
Aussi, je dédie ce projet à tous mes enseignants, qui m’ont enseigné et m’ont procuré un
encadrement au sein de l’école supérieure privée d’ingénierie et de technologie, et également à
toutes les personnes, de près ou de loin, et qui m’ont donné la motivation et qui représentent
pour moi une source de courage et qui m’ont aidé à avancer malgré les difficultés rencontrées.
J’espère que vous serez toujours présents à mon côté.
Remerciements
J’adresse mes vifs remerciements à tous ceux qui ont contribué à l’élaboration de ce
projet. Je les adresse tout d’abord aux membres du centre nationale d’informatique pour
m’avoir accepté en tant que stagiaire et m’accueillir au sein la société.
Mes remerciements s’adressent aussi à Madame SAMMAR ABBADI mon encadrante
d’entreprise pour sa disponibilité et ses conseils précieux qui m’ont conduit à accomplir ce
modeste travail et à enrichir mes connaissances tout au long du stage.
Je tiens à remercier également les membres du jury de m'avoir fait l'honneur d'accepter
d’évaluer et de juger ce travail, et surtout mon encadrant pédagogique Monsieur JBALIA AYMEN
et l’expert Madame MARWA AMMAR DAOUD pour leurs directives, leurs critiques constructives
et leurs conseils tout au long de la période du stage jusqu’à la finalisation de ce projet
Je n’oublierai pas de remercier mes parents pour leur contribution, leur patience et leur
soutien durant ce stage ainsi que pendant mes années d’études.
Résumé
Mot clés : Machine Learning, Deep Learning, Spring Boot, ANGULAR, Masse Salariale,
Modèle, Métriques, déploiement, Algorithme de prédiction, Data Science
Abstract
This report summarizes the work organized within the host establishment “National
Computing Center”. The aim of this internship is to create a visualization system for the
evolution and the prediction of the payroll of the Tunisian governorate, which consists in the
implementation of a prediction model and the deployment of this model in a web application to
help in decisions making regarding the payroll and its factors.
This subject is mainly based on the use of MACHINE LEARNING and DEEP LEARNING
algorithms in order to generate a robust, efficient and rapid model for the estimation of
prediction results and the preparation of a SPRING BOOT application for the BACK-END part and
ANGULAR for the FRONT-END part.
Keywords : Machine Learning, Deep Learning, Spring Boot, ANGULAR, Payroll, Model,
Metrics, deployment, Prediction algorithm, Data Science
Table des matières
De nos jours, l’informatique occupe une place prépondérante au sein des entreprises.
Ceci revient aux différents changements rencontrés par ces entreprises dans un monde
révolutionné par les sciences informatiques et les technologies novatrices. Par conséquent, se
familiariser avec de telles circonstances s’avère inévitable afin de poursuivre le développement
et d’occuper une place remarquable dans le marché.
De nos jours, les grandes entreprises se sont tournées vers un nouveau domaine qui est
la DATA SCIENCE et fournissent des efforts afin de l’intégrer dans les différents départements
de leurs secteurs de travail. Elles sont devenues de plus en plus conscientes du fait que
déchiffrer les données s’avère une véritable opportunité et contribue à la puissance de toute
entreprise dans le monde. Elles ont aussi compris que l’insertion de l’apprentissage
automatique dans les établissements de type informatique devient primordiale pour
l’éclaircissement et l’estimation de l’avis du client afin d’arriver à fournir tout ce qu’il veut
efficacement. Cette nouvelle notion est, en effet, liée à l’apparition d’une quantité massive de
données qui doit être traitée pour que les entreprises atteignent leurs objectifs métiers et
commerciaux et puissent prendre des décisions convenables à leurs secteurs d’activités.
Dans ce cadre, j’ai effectué un projet de fin d’études de 6 mois au sein de l’entreprise
« Centre Nationale de l’Informatique » intitulé « Mise en place d’un système de prédiction et de
visualisation de la masse salariale ». Il consiste à générer un modèle adéquat pour l’estimation
de la masse salariale dans le gouvernorat tunisien et à déployer ce modèle dans un système
d’information.
1
Chapitre 1 : Cadre général et aperçu du projet
1.1 Introduction
Dans ce chapitre, nous allons découvrir l’organisme d’accueil : « Centre Nationale de
l’Informatique », l’entreprise dans laquelle nous avons réalisé notre projet de fin d’études.
Ensuite, nous procéderons à la présentation du cadre du projet qui nous permet de mieux
comprendre la problématique. Puis, nous terminerons le chapitre en mettant en relief
l’importance du sujet de l’étude et en justifiant le choix de la méthodologie adoptée tout au long
du projet
FIGURE
Figure1.1 – LOGO
1 : LOGO CNICNI
1.2.2 Missions :
✓ Développement :
• Assurer le développement des systèmes d’informations et leurs rétablissements.
2
• Organiser des séances de formations afin de présenter les logiciels développés par
CNI.
• Réaliser des projets à l’aide de ses propres compétences ou en partenariat
✓ Hébergement du système :
• Héberger des applications et des données avec ou sans l’utilisation.
✓ Formations et Certifications :
• Formation sur les applications nationales.
• Formation dédiée à l’expertise.
• Formation continue et certifiante.
• Stages pour la l’adaptation au monde professionnel
Data Center : dédié à l’hébergement des grandes applications pour l’état, doté d’une
infrastructure réseau formé par différents composants matériels, logiciels et réseau
assurant la sécurité des données, la disponibilité et l’accès aux différentes applications.
Centre de Backup : Afin d’augmenter la sécurité des données et garantir la disponibilité des
systèmes d’informations et la continuité de leur activité.
Système de suivi et d’évaluation de l’exécution des projets publics : constitue
l’unique référence des données financière et humaine des projets. C’est un système d’aide
à la décision qui permet le suivi des projets/programmes, leur planification et la prédiction
de leurs coûts en ressources humaines et financières.
Système INSAF : permet de gérer l’aspect administratif et financier des établissement
publics du gouvernorat tunisiens c’est-à-dire les recrutements, les informations concernant
l’employé depuis son recrutement jusqu’à quitter son poste ainsi que ses fiches de paie.
3
Rached : c’est un système dédié au suivi des missions à l’étranger par les différentes
administrations tunisiennes. Il permet de gérer les différentes étapes de ces missions à
travers d’un système décisionnel.
MADANIA : c’est un réseau formé d’un serveur central et un autre de backup, 24 serveurs
dans les sites des gouvernorats et 396 serveurs dans les sites des utilisateurs. Il assure la
gestion de toutes les informations relatives à l’état civil (Naissance, divorce, mariage …) et
la mise à disposition de ces fiches dans les différentes municipalités
Les figures ci-dessous présentent deux applications développées par des établissement
appartenant au secteur public qu’on va critiquer :
FIGURE
Figure1.2 – LOGO TASSAROF
2 : TASSAROF AMALA Amala
TASSAROF AMALA est une application de gestion de la paie tunisienne qui permet de gérer les
employés de différents établissements publics. Elle offre l’accès aux différentes informations
qui concernent le personnel dont nous citons comme exemple : les primes, le salaire de base,
les départs, etc. De plus, elle nous donne une idée sur les mouvements des personnes c’est-à-
dire les absences et les congés ainsi que les salaires, les avances sur les salaires générés ainsi
que les heures supplémentaires. Les points faibles de cette application sont l’ancienneté des
informations, l’interface est confuse et désorganisée et elle ne donne pas une idée sur la
variation de la masse salariale en Tunisie ainsi que l’absence d’une partie dédiée à la
prédiction.
5
fonctionnalités qui varient selon le type de la solution utilisé car elle est payante d’une part et
elle ne comporte ni visualisation de la masse salariale ni prédiction, d’autre part.
Figure 4 : CRISP-DM
3. Préparation des données : cette phase est avec une durée plus longue ayant pour
objectif la construction de la base de données finale. Pour arriver à cette objectif, les données
passent par plusieurs étapes de préparation variant en fonction de la nature de ces variables
commençant par le nettoyage et la sélection puis l’encodage des variables afin d’arriver aux
solutions plus appropriées.
6
modèles devront être préparés en se basant sur les données traités et différents outils de
modélisation
5.Evaluation : Dans cette étape on procède à l’évaluation des algorithmes déjà implémentés
dans le but de déterminer s’ils arrivent à satisfaire les besoins du client et apportent une
solution au problème étudié.
6.Déploiement : cette phase consiste à présenter les informations acquises au client d’une
façon organisée et exploitable par le client.
1.5.2 KDD
La notion de KNOWLEDGE Discovery in DATABASES, correspond au processus
d’extraction des connaissances dans le domaine d’exploration des données. C’est un domaine
intéressant pour les chercheurs en apprentissage automatique, bases de données,
INTELLIGENCE ARTIFICIELLE, acquisition des connaissances pour les systèmes experts et
visualisation de données.
Voici un schéma qui illustre le processus de KDD :
8
- Détection des anomalies : consiste à l’identification et à la détection des valeurs
anormales dans tout événement ou observation qui diffèrent du reste des
données.
- Réduction de dimensionnalité : permet de réduire le nombre des variables
d’entrées dans un ensemble de données, plus de nombre de fonctionnalités
d’entrée rendant souvent la tâche de prédiction plus difficile à réaliser.
Exemples d’algorithmes d’apprentissage non supervisé : on peut citer k-MEANS pour la
segmentation et Apriori pour l’association
1.7 Conclusion :
Ce chapitre de nature introductive nous a permis de mettre l’accent sur le cadre général
du projet en effectuant une présentation de l’entreprise qui nous a accueilli durant ce stage, ses
missions et ses objectifs. Puis, nous avons mis en relief notre solution proposée, la
problématique du sujet ainsi que les objectifs de notre système. Nous avons également évoqué
le choix méthodologique à suivre pour arriver à implémenter notre solution proposée.
Le chapitre suivant couvre la 1ère phase du notre méthodologie choisie qui porte sur la
compréhension métier c’est-à-dire la fixation des objectifs DATA MINING, les objectifs métiers
et commerciaux et les différentes technologies qu’on va utiliser pour élaborer cette application.
10
Chapitre 2 : Compréhension métier
2.1 Introduction :
La première étape du processus CRISP-DM commence par la compréhension métier qui
consiste à comprendre l’objectif visé par le client d’un point de vue commerciale. Dans ce
chapitre, on va se focaliser sur les différents objectifs à travers lesquels on va réaliser un plan
d’action qui contribue à la réussite de l’entreprise.
➢ PYTHON :
Python [7] est le langage de programmation Open Source le plus manipulé par les
employeurs dans le domaine de l’informatique. PYTHON a occupé une place primordiale dans
plusieurs domaines comme la gestion de l’infrastructure, le développement d’applications web,
le traitement des données, etc.
12
➢ JUPYTER :
JUPYTER [8] se définit comme un Notebook de calcul Open source, gratuit qui assure
l’écriture du code informatique et son partage dans le but de collaborer. C’est un atout
indispensable pour les DATA SCIENTISTS. D’une manière générale, c’est une application web
côté client qui assure la création de code, des formules de calcul, des courbes qu’on peut
visualiser ou du texte. Grâce à cet outil, il est possible de visualiser le code, l’exécuter et même
y apporter des changements.
➢ ANACONDA :
ANACONDA est un outil sa distribution possède les caractéristiques : libre et Open Source.
Dédié à la programmation dans un environnement R et PYTHON. Utilisé dans plusieurs
domaines comme le traitement de données, l’intelligence Artificielle et la machine Learning.
D’une manière générale, c’est un gestionnaire d’environnements. Possède une installation
l’environnement PYTHON, des environnements de développements intégrés, Des packages
dédié pour le développement DATA SCIENCE comme PANDAS, NUMPY et KERRAS avec une
installation et mis à jours des paquets invoqués grâce à la commande « CONDA ».
➢ Spring BOOT :
JAVA Spring BOOT [9] est un Framework applicatif pour le langage JAVA. Il est open-
source, assure le développement d’applications web et de micro-services et permet aussi
la création d’API web. Il se caractérise par sa légèreté, sa facilité d’intégration avec les
13
architectures en micro-services et sa simplicité dans la création des APIS de services. Il est
composé par des librairies dont le projet nécessite.
➢ ANGULAR :
ANGULAR [10] est une plateforme de développement qui assure la création de pages
web sophistiquées. Il comprend :
❖ PANDAS :
PANDAS se définit comme un package python. Il est de type open-source qui nous offre
des structures de données et des atouts pour l’analyse de données de haute performance et se
caractérise par sa facilité d’utilisation pour les données étiquetées dans PYTHON. Son
acronyme est PYTHON AND DATA ANALYSIS library. Il sert à effectuer différentes opérations de
manipulation rapides et faciles des données comme la lecture, l’agrégation et la visualisation
des données.
14
❖ NUMPY :
NUMPY signifie POOR NUMERICAL PYTHON. C’est un outil idéal pour le calcul
scientifique et la réalisation de différentes opérations de base et des opérations sophistiquées
sur les tableaux et les matrices.
❖ MATPLOTLIB :
Il présente un outil pour la visualisation et grâce à lui, on peut tracer des histogrammes,
des graphes, etc.
❖ SEABORN :
C’est une bibliothèque dédiée à la visualisation basée sur MATPLOTLIB tout simplement,
c’est une extension de MATPLOTLIB mais avec des fonctionnalités avancées. Elle est sous forme
d’une interface de haut niveau qui nous permet dessiner des graphes dédiés aux statistiques
informatives.
❖ SKLEARN :
C’est une bibliothèque fournissant des outils réservés pour la Machine Learning et la
Data Science dans Python.
❖ TENSORFLOW :
Cette bibliothèque appartient aux frameworks open-source, elle est développée par des
chercheurs GOOGLE pour l’exécution de Machine Learning, Deep Learning et d’autres tâches
en relation avec l’analyse statique et la prédiction. Elle a pour but la manipulation de l’ensemble
de données sous forme de nœuds de calcul, et les arrêtes qui joint les nœuds représentent les
matrices multidimensionnelles.
15
2.4 Conclusion :
Durant ce chapitre, nous avons mis l’accent sur les objectifs du projet du point de vue
métier, ensuite les objectifs DATA MINING qui nous mènent à l’élaboration d’un plan de travail
que nous suivrons ultérieurement. Nous avons également détaillé les outils manipulés afin
d’arriver à notre finalité. Dans le deuxième chapitre, nous procèderons à la compréhension des
données.
16
Chapitre 3 : Compréhension des données
3.1 Introduction :
La deuxième phase du processus CRISP-DM nécessite d’avoir un accès aux donnés qui
est dans le répertoire des ressources du projet. D’abord, on commence par le chargement des
données qui est un point important dans la compréhension des données. Un bon stade de
prétraitement résulte du fait que les données seront assez claires et faciles à comprendre. On
procède à l’identification de la qualité des données disponibles pour faire la liaison entre les
données et leurs significations dans le côté métier.
17
Figure 14 : CONVERSION DU FICHIER TEXTE D’ENTREE
Figure 16 : DATASET18
RECRUTEMENT
3.3 Description des variables :
19
• fonc : ce sont des fonctionnalités des agents dont on cite comme exemples : Directeur
régionale ,Econome d’établissement …
• date_naissance : c’est la date de naissance de l’employé.
• Date_ent : c’est la date ou l’employé commence son emploi.
• dire : correspond à l’équipe ou la direction chargée de la gestion des ressources
humaines, recrutements,…
• gouv : correspond au gouvernorat.
• natorg : c’est la nature de l’organisme.
• sitfam :l’état civile de l’employé par exemple mariée ou divorcé.
• sexe :cela signifie que l’employé est Homme, Femme ou non renseignée.
20
Variables catégoriques :
On a effectué cette classification par la séparation des variables numériques des variables
catégorielles dans Notre DATASET.
21
3.4.1 Description des données :
Cette partie est réservée pour l’analyse de notre variable cible qui est
« montant_ind_masse_salariale ». Le but principal de cette application est de prédire la masse
salariale : nous commençons alors par le calcul de la masse salariale qui est la somme des
montants indemnités pour chaque mois et on ajoute ces valeurs à notre jeu de données :
D’après cette figure, nous pouvons déduire que nous avons un nombre de 799914 masses
salariales. On peut remarquer qu’il n’existe pas une grande différence entre la valeur minimale
qui est de 11 435 670 avec la valeur maximale qui est de 14 125 860 ce qui explique que nous
n’avons pas de valeurs qui ne sont pas logiques que nous devons traiter. On peut constater que
la médiane dont la valeur 12 784 630 est un peu inférieure à la moyenne 13 032 530 .
Autrement dit, la distribution des valeurs de la variable cible est légèrement inclinée vers la
22
gauche (elle a une queue de distribution plus courte à gauche). Cela signifie que la majorité des
valeurs sont regroupés autour d’une valeur légèrement inférieure à la moyenne. Cependant, il y
a quelques valeurs plus élevées ou ce qu’on appelle OUTLIERS qui tirent la moyenne vers le
haut.
A partir du graphe de test de normalité, nous pouvons observer que pour une masse
salariale d’environ de 1.15e+07, la fréquence est de l’ordre de 0.5e-6, ce qui indique un nombre
réduit d’occurrences de masse salariales à cette valeur. Entre 1.25e+07 et 1.30e+07, la
fréquence s’agrandit d’une manière considérable jusqu’à atteindre environ de 1.2e-06, puis, on
obtient un pic de 1.75e-6. Cela suggère une augmentation des montants_ indemnités dans
certains mois. Ensuite, nous remarquons une diminution de la masse salariale de 0.6 e-06 qui
correspond à ceux ayant la masse salariale de 1.35e+07 ; cela indique qu’une majorité des
montants indemnités est en dessous de cette valeur.
23
D’après cette figure on remarque une SKEWNESS de valeur négative -0.2481, donc, on
peut déduire une légère asymétrie vers la gauche, mais, en même temps proche de 0, ce qui
indique une asymétrie relativement faible d’où la distribution de la colonne cible est symétrique
de façon approximative. Concernant le kurtosis qui nous a donné la valeur -0.0054, c’est un
léger aplatissement par rapport à une distribution normale. Donc on peut déduire de ces deux
métriques que la colonne cible se rapproche d’une distribution normale.
3.4.3 Corrélation :
Pour mieux avoir une idée sur nos variables, il est nécessaire de comprendre les
relations entre nos variables. Pour effectuer cette comparaison entre les différentes variables
de notre jeu de données, on a eu recours à la matrice de corrélation :
La figure ci-dessus met en exergue la corrélation entre les variables. On peut conclure
que les variables « echellon » et « indice » sont fortement corrélées et c’est normal car ces deux
variables nous donne une idée sur le niveau de classification de l’employé côté expérience,
24
performance et compétence dans le secteur public. On trouve aussi une corrélation forte entre
les deux variables « fonc » et « efonc » qui nous indiquent les différentes fonctions occupées par
les employés du secteur public. Même déduction pour « cat » et « codfam » car ce sont des
niveaux de classification des employés du secteur public selon le statut ou le niveau de
compétence. Dans le cas de l’application de l’apprentissage automatique, il n’est pas
nécessaire de traiter les variables de corrélations fortes. Donc, on procède à l’élimination d’une
entre elles.
25
Figure 28 : SCRIPT DE CALCUL DES VALEURS MANQUANTES
On peut remarquer qu’il existe des variables comme « parag » et « sparag » qui n’ont
aucun effet sur la prédiction et qui possèdent un taux de valeurs manquantes qui est égal à 55%
Donc, on peut les éliminer. Concernant les autres variables ayant un taux faible, on peut les
traiter facilement par le remplissage des variables d’une valeur estimée dans les champs vides
comme la moyenne par exemple. Les valeurs manquantes sont dues au mauvais remplissage
des valeurs dans notre base qui nous oblige à remplacer ces valeurs par d’autres qui sont
proches de la réalité ou l’élimination de toute la colonne quand elle contient un taux élevé de
valeurs manquantes. La figure ci-dessous met en relief le calcul du pourcentage des valeurs
manquantes :
26
3.5 Description des données :
3.5.1 Analyse de la répartition de « montant_ind » par mois :
Tracer la distribution de la variable « montant_ind » par mois est important car il permet
d’aider les décideurs à la planification budgétaire à travers le suivi du montant des indemnités
au fil de temps pour réduire l’effet des indemnités sur la masse salariale. La figure ci-dessous
nous donne un éclaircissement sur la variation des montants des indemnités au cours du
temps pour savoir les valeurs aberrantes :
29
3.5.5 Analyse de la variation de la masse salariale par mois :
3.6 Conclusion :
Au cours de ce chapitre, nous avons réalisé une explication de la démarche que nous
avons suivi pour garantir l’étape de compréhension de données. Dans le prochain chapitre,
nous allons traiter et corriger les données pour assurer la fiabilité des résultats de la prédiction.
30
Chapitre 4 : Préparation des données
4.1 Introduction :
La préparation des données constitue l’une des phases les plus importantes et
nécessite beaucoup de temps dans un projet de Data Mining. Elle nécessite environ 70%
environ du temps et de l’effort nécessaires à un projet. En fait, accorder de l’importance aux
différentes phases de compréhension des données côté métier nous aide à minimiser des
coûts considérables. Nous allons voir comment nos données sont transformées et préparées
pour la phase de modélisation qui fera l’objet de notre prochain chapitre.
31
4.3 Nettoyage des données :
Dans la plupart des projets de Data Science, il est pratiquement impossible d’avoir un cas
parfait et une base de données aussi propre, homogène et complète. Ainsi, il faut procéder à la
correction de certaines ambiguïtés. Ces problèmes doivent être corrigés manuellement à
travers la modification du fichier XLSX ou l’utilisation d’un script python pendant la phase de
prétraitement. Alors, nous allons insérer des données par défaut pour l’amélioration de la
qualité de nos données. Il faut choisir la transformation la plus appropriée selon l’objectif
métier qui conduit à une bonne performance du modèle à implémenter.
Dans ce cas, nous avons proposé quelques modifications nécessaires relatives aux données
manquantes et la suppression de certaines colonnes inappropriées n’ayant aucun impact sur la
qualité de nos données.
• COLONNES A UTILISER :
'matricule'/'mois'/'annee'/'type_paie'/'codind'/'montant_ind'/'nature_ind'/'grd'/'cat','corps'/'cod
sfam'/ 'indice'/ 'echellon'/ 'nature'/ 'fonc'/ 'dire'/ 'sdir'/ 'serv'/ 'centreg'/ 'gouv'/ 'gouvn'/
'natorg'/'budg'/'sitfam'/'sexe'/'total_recrutements'/'montant_ind_total'
• COLONNES A EXCLURE :
'codetab'/'num_ligne'/ 'parag'/ ‘sparag’
Ces attributs n’ont pas un impact sur la masse salariale ettcontiennent un nombre
élevé de valeurs manquantes ou comme la colonne ‘codetab’ qui contient la même valeur pour
toutes les lignes. Dans ce qui suit, nous allons détailler le processus de traitement des valeurs
manquantes :
Avant de procéder à l’ENCODING des variables, nous avons procédé à transformer les
colonnes de type objet en des colonnes de type chaîne de caractères. Pour ce faire, nous avons
procédé à la préparation d’une fonction dédié à la conversion de type OBJECT en STRING :
33
4.3.4 Label Encoder :
Le Label Encoder est une technique visant au prétraitement des données qui sert à
convertir les variables catégorielles en variables numériques. D’une manière générale, il s’agit
de remplir les catégories par des nombres allant de 1 à n-1 tel que n est le nombre de
catégories distinctes de la variable. Pour l’application de cette technique, nous avons eu
recours à la création d’une instance Label Encoder, ensuite nous appliquons la transformation :
On peut citer comme Exemple d’application de Label Encoder pour la variable ‘nature’ :
nature : [2 9 3 1 8 '2' '3' '9' '8' '5' '1' 'A' 'B' '4' '7' 5 4] => nature: [1 7 2 0 6 4 8 9 3 5]
Les données manquantes ont des effets négatives sur la qualité du modèle ML,
affecte la distribution globale de données et réduit l’efficacité de l’estimation. C’est alors qu’on
a recours à l’imputation qui est la solution idéale et qui a pour but de remplacer les valeurs
nulles ou manquantes par une valeur particulière dans l’ensemble de données.
Dans notre jeu de donnée, nous allons utiliser l’imputation par modèle et on a utilisé
l’estimation des valeurs manquantes par la Régression linéaire et la stratégie d’imputation par
la moyenne. Pour cela, nous avons eu recours à la création d’un modèle de régression linéaire
ayant pour objectif l’estimation des valeurs manquantes en fonction des valeurs existantes
34
dans les données à travers l’instanciation de la classe ‘LinearRegression() ’. Ensuite, nous
attribuons une spécification de la stratégie qui est la moyenne ‘mean’ après la création d’un
simple imputeur ’Simple Imputer’ qui va remplir les valeurs vides ou nulles par la moyenne des
valeurs existantes dans chaque colonne. Effectivement, nous représentons les valeurs
manquantes par NAN et dans notre code nous faisons l’attribution d’une valeur binaire à
chaque valeur imputée. Puis, nous faisons une liaison entre le modèle de régression linéaire
avec l’estimateur de l’imputeur moyennant la fonction ‘estimator_’, cela indique au imputeur
d’utiliser le modèle pour l’estimation des valeurs manquantes méthodiquement. Lorsqu’on
appelle la méthode ‘fit_transform’, l’imputation des valeurs manquantes aura lieu en fonction
des valeurs existantes dans ces colonnes et le résultat va être stocké dans un DATAFRAME
appelé ‘X_IMPUTED’ :
Puis, nous allons vérifier à travers le script de calcul des valeurs manquantes l’existence
des colonnes vides et voir les résultats :
35
4.3.6 Matrice de corrélation :
La matrice de corrélation est tout simplement une matrice de coefficients de
corrélations statistiques calculés sur plusieurs variables prise deux à deux. Elle assure la
détection des relations rapidement.
4.4 Conclusion :
Dans ce chapitre, on a appliqué tout un processus d’analyse et de traitement des
données. Nous avons commencé par la suppression des colonnes inutiles. Puis, nous avons
converti les valeurs catégoriques en numériques moyennant du Label Encoder. Nous avons
ensuite rempli les valeurs manquantes, nous avons détecté et supprimé l’une des variables
ayant une corrélation forte en se basant sur la matrice de corrélation. Il est temps de
commencer la modélisation dans le chapitre suivant.
36
Chapitre 5 : Modélisation
5.1 Introduction :
Maintenant, notre jeu de données est bien nettoyé et préparé à être exploité pour les
modèles de prédiction. En fait, la modélisation est effectuée sur plusieurs itérations. Les
experts en Data Mining exécutent plusieurs modèles en utilisant des paramètres par défaut de
plusieurs algorithmes, puis affinent ces derniers en réalisant un ajustement des paramètres ou
reviennent vers la phase de préparation des données pour faire les modifications requises par le
modèle de leur choix. Dans ce chapitre, nous allons détailler les algorithmes de prédiction,
leurs spécifications et fonctionnement.
37
5.3 Choix du modèle :
Le choix du modèle est basé sur la nature des données mises à notre disposition. Dans
notre projet, notre variable cible est la masse salariale qui représente une variable quantitative
continue. On est face alors à un problème de régression.
38
5.3.3 Test des fonctionnalités :
La sélection des fonctionnalités est un processus par lequel on sélectionne les
fonctionnalités automatiquement qui contribuent le plus à la variable cible. Le fait d’avoir des
fonctionnalités qui ne sont pas pertinentes dans les données a des conséquences dans la
réduction de la précision des modèles et permet au modèle d’apprendre à partir de
fonctionnalités non pertinentes.
D’après l’histogramme précédant, nous avons pu identifier les attributs qui ont un impact sur la
masse salariale qui sont :
« mois »,« montant_ind »,cod_ind », »echellon », »indice », «cat », « montant_ind_total », « total_re
crutements »
39
5.4 Construction du modèle de prédiction :
Après avoir une idée sur les critères sur lesquelles se base l’apprentissage des modèles,
nous passons maintenant à appliquer nos modèles de régression.
40
5.4.2 DECISION TREE REGRESSOR :
5.4.2.1 Implémentation :
C’est un modèle de régression linéaire qui établit une relation entre les variables
d’entrées et la variable cible en utilisant un arbre de décision. D’abord, le modèle commence
par diviser l’ensemble de l’entrainement en sous-ensembles de manière récursive. A chaque
phase, il procède au choix de la caractéristique et le seuil qui arrive à minimiser l’erreur de
régression. L’arbre est construit jusqu’à obtenir un critère d’arrêt qui est l’un des deux
paramètres qui est la profondeur maximale de l’arbre ou un nombre minimal d’échantillons par
feuille. Chaque feuille de l’arbre contient une valeur de prédiction qui est en générale la
moyenne des valeurs dans cette variable cible. Parmi les avantages de cet algorithme, c’est la
simplicité qui est le fait qu’on peut visualiser sous forme d’arbre d’une part. D’autre part, on a la
possibilité de générer des relations non linéaires et des interactions entre les caractéristiques.
Les figures ci-jointes représentent l’application de l’algorithme Decision Tree Regressor.
Parmi ses inconvénients, c’est la possibilité d’un surajustement si l’arbre n’est pas régularisé
correctement.
41
Figure 55 : ARBRE DE DECISION
La racine a été segmentée avec la variable « mois » et admet la valeur seuil « 11.5 ». La
branche à gauche (True) correspond à la condition « mois<=11.5 », la branche à droite (False)
correspond à la condition « mois>=11.5 ». Chaque chemin aboutissant à une feuille correspond
à une règle.
42
l’ensemble de test. La figure ci-dessous résume le process qu’on a effectué pour le modèle
RANDOM FORREST REGRESSOR :
43
5.4.5 ADABOOST :
C’est un modèle ensembliste dédié à l’apprentissage automatique qui consiste à
augmenter la prédiction d’un apprenant ayant un score atténué en faisant l’assemblage de
plusieurs instances de ce modèle de mauvaise qualité. Son fonctionnement est comme suit :
On commence par entrainer un modèle de régression qui est faible bien précisément, peu
profond. Ensuite, on passe à la phase d’attribution de poids ayant pour principe l’attribution de
poids élevé pour les exemples d’entrainements mal prédits et les exemples d’entrainements
bien prédits qui reçoivent un poids plus faible après l’application de l’erreur de prédiction
concernant ce modèle faible. Ensuite, nous faisons un entrainement de façon itérative par
l’algorithme en ajustant un modèle faible sur les données d’entrainement qui calcule l’erreur et
attribue le poids en se basant sur ce taux d’erreur. Puis, il construit un modèle fort à partir de
ces modèles faibles. Enfin, on passe à la prédiction qui consiste à l’obtention de la prédiction
finale à partir des prédictions des modèles faibles :
Figure 58 : ADABOOST
5.4.6 XGBOOST :
Ceci correspond à une bibliothèque Open-Source utilisée pour obtenir des modèles de
haute performance en se basant sur techniques d’amélioration appliqués sur des arbres de
décision. L’implémentation de cet algorithme commence par la création d’un modèle de
XGBOOST. Ensuite, on met en place une grille de recherche qui admet différents
hyperparamètres comme
Le nombre d’estimateurs, le taux d’apprentissage, profondeur maximale des arbres,
fraction de sous échantillonnage ainsi que fraction des colonnes. Puis, on effectue la création
d’un GRIDSEARCHCV en utilisant une la métrique R2 pour évaluer les performances. En exécute
ensuite la recherche en grille afin d’obtenir le meilleur modèle et les meilleurs hyperparamètres
en combinaison et on affiche les résultats de notre recherche.
Ci-joint l’implémentation de notre algorithme :
44
Figure 59 : XGBOOST
5.4.7.2 Implémentation :
On commence par l’importation des bibliothèques nécessaires comme NUMPY,
PANDAS et KERRAS qui est une bibliothèque dédiée à l’apprentissage par profondeur. Ensuite,
on divise les données en X qui sont les caractéristiques et Y la variable cible. Puis, on fait une
sélection des meilleures caractéristiques en utilisant KBEST afin d’avoir les caractéristiques les
plus informatives. Subséquemment, on effectue la division des données en X_TRAIN_SCALED,
X_TRAIN et Y_TRAIN moyennant Y_TRAIN_SPLIT. On arrive maintenant à l’étape de
standardisation qui signifie avoir une échelle commune entre les variables explicatives. On
arrive à la phase de création du modèle de réseau de neurones ayant 64 unités dans la couche
d’entrée avec une fonction d’activation Relu, une couche de sortie et une unité pour la
régression. Après la création, on compile le modèle et on entraine le modèle sur les données
réservés pour l’entrainement pendant 100 époques pendant lequel l’optimiseur régularise le
poids afin d’avoir une perte minimale. Enfin, après l’entrainement du modèle, on effectue les
prédictions sur l’ensemble de test. Le fonctionnement du modèle est illustré par la figure ci-
dessous :
45
Figure 60 : RESEAUX DE NEURONES
5.4.8 LSTM :
C’est un type de réseau de neurones récurrentes (RNN) conçu pour le traitement des
données en séquences. La prédiction se fait à travers trois portes principales :
✓ Porte d’oubli : Son rôle principale est de décider quelles informations à prendre en
considération dans la mémoire ou à oublier.
✓ Porte d’entrée : Il décide les informations à sauvegarder dans l’état de cellule. Cette
étape nécessite l’état caché précédente et l’entrée actuelle afin de fournir un vecteur de
mise à jour.
✓ Porte de sortie : Il indique la sortie de la cellule LSTM, c’est une prédiction de
l’information à transférer à la couche qui suit. Cet objectif nécessite l’état cachée
précédente et l’état actuelle pour la génération d’un vecteur de sortie.
Ces opérations qui auront lieu pour chaque pas de temps dans la séquence. Il est
nécessaire de faire l’organisation de plusieurs couches LSTM afin d’obtenir un modèle
complexe capable de dégager des dépendances à différentes échelles de temps. Ensuite, le
modèle est entrainé en attribuant des poids de connexion entre les cellules LSTM afin d’avoir un
cout minimal de moyenne d’erreur quadratique pour notre cas de régression. Après
l’entrainement du modèle, on fait la prédiction sur autre séquences de données. Le résultat
final de prédiction est obtenu après l’accumulation de plusieurs couches de ce modèle. La
figure ci-jointe est la description du fonctionnement LSTM en prenant juste la variable cible et
les variables explicative liés aux temps avons de faire l’entrainement, on a effectué la création
de nouvelle caractéristiques trigonométriques afin d’avoir des tendances saisonnières de
données.
46
Figure 61 : LSTM
5.5 Conclusion :
Nous avons mis l’accent sur les différents modèles de régression et de série temporelle
appliqués pour bien évidemment choisir le modèle qui convient à notre jeu de données et afin
de trouver le modèle le plus convenable qui nous donne une réponse à notre objectif à savoir la
prédiction de la masse salariale en Tunisie. C’est dans la partie suivante qu’on va évaluer notre
modèle.
47
Chapitre 6 : Comparaison des modèles
6.1 Introduction :
Ce chapitre représente l’avant dernière étape du cycle de vie en CRISP-DM. Cette phase
aura lieu juste après l’obtention des résultats dans la phase dédiée à l’application des
algorithmes. Il s’agit d’une réponse à plusieurs questions parmi lesquelles : Est-ce que notre
modèle arrive à résoudre le problème de manière efficace et appropriée ? Est-ce qu’on a
répondu aux objectifs fixés ?
➢ R Carré Score :
Elle correspond au coefficient de déterminaison multiple. C’est une mesure effectuée pour
évaluer les algorithmes d’apprentissage automatique dans le cas d’un problème de régression.
Ce terme indique la proportion de la variance totale dans la variable qu’on veut prédire. Elle
nous donne une réponse sur la question : « A quel point les prédictions dégagées par notre
modèle se rapprochent des valeurs existantes de notre variable cible ?». Cette métrique prend
une valeur qui varie entre 0 et 1. Trois cas sont possibles :
- Si R2<=0 : le modèle nous donne plus une explication sur les variances dans la
variable cible. Cela indique que le modèle n’a pas le pouvoir de faire des
estimations utiles.
- SI R2=1 : le modèle est capable de donner une explication de la totalité de la
variance dans notre variable qui est notre objectif. Autrement dit, Il y a une
correspondance entre les estimations et les valeurs actuelles.
- Si 0 <R2< 1 : Le modèle peut générer une partie de l’explication de la variance de
notre variable qui est l’objectif de notre estimation. Plus R SQUARED se rapproche
de la valeur 1 plus la qualité du modèle et sa capacité d’explication des données
augmente.
48
➢ MEAN SQUARED ERROR(MSE) :
C’est la moyenne de la soustraction des valeurs estimées des valeurs existantes en réalité.
Il est préférable que la valeur de cette mesure soit plus petite pour nous indiquer une
meilleure performance du modèle.
49
✓ OVERFITTING : C’est le surajustement qui se caractérise par l’incapacité du modèle à la
généralisation pour des données en état invisible. L’indice de sur-apprentissage c’est la
supériorité remarquable de l’erreur de test à l’erreur sur les données d’entrainement.
D’une manière générale, le surapprentissage ne peut plus ajuster des données d’autres
sources et peut causer des mauvaises estimations sur les futures visualisations.
50
Concernant le calcul de surapprentissage ou sous-apprentissage, nous avons comparé les
performances sur les données d’entrainements et celles de test. Nous avons trouvé que
R2(Train) = 0.875 est pratiquement égal à R2(Test) donc le modèle n’est ni dans un sur/sous
apprentissage.
51
R2(Train) = 0.926 qui est légèrement différente de R2 de test qui est R2(Test)= 0.875. Donc, il n y
a pas de surapprentissage significatif à noter.
52
Figure 68 : APPRENTISSAGE DE RANDOM FOREST
53
6.3.5 Evaluation du modèle XGBOOST :
Le résultat fourni par ce modèle sur l’ensemble des variables de test est égal à 84.4% pour la
métrique R2 avec un pourcentage d’erreurs pratiquement égal à 1.64% des valeurs existantes,
un temps en entrainement égal à 717.65s et une durée de prédiction égale à 717.71s environ
comme déjà mentionné dans la figure suivante.
Nous pouvons conclure de ces mesures que le modèle est capable de donner une
explication sur la totalité de la variance dans les variables de test, mais, il peut causer des
erreurs significatives et un temps d’entrainement et de prédiction long ce qui signifie que
l’utilisateur doit attendre beaucoup de temps pour obtenir les résultats de prédiction :
54
Cet algorithme nécessite un réglage dans ses hyperparamètres afin de diminuer les
erreurs et réduire le temps d’estimation. D’après les valeurs de test d’apprentissage du modèle,
on a obtenu R2(train) = 73% et R2(test) = 76%, ce qui indique que le modèle a une variance
dans les variables de test qui n’a pas encore d’explication par ce modèle. Ces figures résument
les métriques générées par cet algorithme :
55
6.4 Choix du modèle :
Après l’obtention des différentes mesures nécessaires de chaque modèle, nous avons
fait un histogramme récapitulatif de chaque mesure de performance c’est-à-dire R2 score, MAE,
MAPE, RMSE et MSE. Pour cela, nous avons fait appel à une fonction qui prend en paramètres
les algorithmes utilisés et leurs valeurs de mesures. Puis, nous avons utilisés une fonction de tri
pour les métriques de ces algorithmes par ordre descendant. Il s’agit de la fonction
‘sort_with_algorithm’, puis, nous avons réalisé des graphiques pour chaque mesure de
performance en utilisant la fonction ‘plt_subplots’ et nous avons affiché les graphiques
moyennant la fonction ‘plt_show’. Voici un aperçu du code utilisé :
D’après l’application de ces fonctions, on a déduit que les algorithmes LSTM, RANDOM
Forrest, ADABOOST et DECISION TREE REGRESSOR ont des R2 scores élevées, alors que
DECISION TREE REGRESSSOR et KNN ont des MAPE réduites. Donc, on peut déduire que
Decision Tree Regressor est le mieux performant parmi ces algorithmes. Ces résultats sont
traduits par la figure suivante :
56
Figure 78 : COMPARAISON DES MODELES ML
57
Figure 79 : RAPIDITE DES ALGORITHMES
D’après les résultats obtenus, on a trouvé que DECISION TREE et ADABOOST sont les
deux algorithmes le plus rapides en temps de formation et d’estimation. On peut conclure que
DECISION TREE REGRESSOR est le meilleur algorithme côté performance et vitesse de
génération des estimations. Il peut contribuer le plus à la satisfaction du client.
6.5 Conclusion :
Dans cette partie, on a mis l’accent sur la critique et l’évaluation de chaque modèle
selon différents critères de comparaison à savoir les métriques de performance et de rapidité
des prédictions. Nous avons déterminé le modèle le plus convenable qui répond à nos objectifs
commerciaux fixés dès le début. Dans le chapitre suivant et qui est la dernière phase du cycle
CRISP-DM, nous allons rendre notre modèle élu exploitable dans une application.
58
Chapitre 7 : Déploiement du modèle
7.1 Introduction :
Dans cette dernière étape de l’implémentation de tout projet dans le domaine DATA
SCIENCE, nous allons mettre en exergue la partie empirique c’est-à-dire l’implémentation
technique de notre application contenant le déploiement de notre modèle choisi. De prime
abord, nous allons faire une étude conceptuelle de l’application :
59
7.2.2.2 Logiciel de modélisation :
Pour schématiser les modèles conceptuels de notre application, nous avons utilisé un
logiciel de modélisation « STARUML » qui est dédié aux systèmes informatiques orientés
objets.
60
7.2.5 Besoins non fonctionnels de l’application :
Notre application est capable de fournir comme besoins techniques :
• Rapidité : l’application doit répondre aux requêtes des utilisateurs et à l’affichage des
informations.
• Ergonomie : la facilité de manipulation et l’accessibilité aux différentes parties de
l’application sans demande d’aucune connaissance en informatique avec la clarté des
résultats affichés.
• Sécurité : la sécurité dans le traitement des données qui concernent les utilisateurs et
la confidentialité à travers le cryptage du mot de passe.
• Flexibilité : le traitement des données en quantité et en qualité c’est-à-dire le
traitement d’un nombre maximum de types de variables d’une part. D’autre part, cette
application doit être exécutable sur n’importe quel type de navigateur web.
7.3.1 Authentification :
L’interface ci-jointe nous donne une idée sur le processus d’authentification d’un
utilisateur via son nom d’utilisateur et son mot de passe :
61
Si l’utilisateur n’existe pas dans la base, il doit s’inscrire avant de se connecter et par la
suite avoir un accès à notre application par le remplissage d’un formulaire qui contient toutes
ses informations relatives. La figure ci-dessous nous donne une idée sur la page
d’enregistrement d’un nouvel utilisateur :
62
Dans le but d’avoir un accès aux différentes statistiques concernant les données, il faut
d’abord uploader les fichiers EXCEL qui contiennent les données concernées et leurs valeurs.
La figure ci-dessous présente une interface de téléchargement des fichiers de données :
Après avoir téléchargé nos fichiers, on peut maintenant visualiser les statistiques
relatives à la masse salariale, les recrutements et les montants indemnités. Voici les
statistiques de la masse salariale détaillées dans la figure suivante :
63
On passe maintenant aux statistiques des montants-indemnités illustrées par la figure
suivante :
64
7.3.3 Déploiement :
Dans cette partie, on a effectué un formulaire à remplir par les différents champs
nécessaires pour la prédiction de la masse salariale. Après cliquer sur le bouton « predict » de
notre application, notre modèle élaboré dans la phase de modélisation est chargé dans la partie
BACK-END et effectue le calcul nécessaire pour nous fournir un résultat de la valeur de la
masse salariale. Le schéma de notre process de déploiement est comme suit :
Un dossier qui s’appelle ‘backend_flask’ regroupe tous les fichiers de la partie FRONT-
END ainsi que le fichier FLASK ayant pour objectif la réception des requêtes POST et la
génération des estimations en utilisant le modèle pris en compte. Voici notre formulaire de
prédiction suivi du résultat de prédiction de notre variable cible :
65
Pour notre test, nous avons effectué un test sur Python avec les valeurs suivantes :
7.4 Conclusion :
Le déploiement constitue la dernière étape de notre processus CRISP-DM. En effet,
nous avons mis l’accent sur notre application web implémentée et les différents services offerts
par notre application. En l’occurrence, nous avons mis en valeur la fonctionnalité de prédiction
de la masse salariale, notre cible visée.
66
Conclusion générale et perspectives
67
Bibliographie
[1] http://www.cni.tn/index.php/fr/layout-3/presentation-du-cni-2
[2] https://africanmanager.com/la-masse-salariale-degraissee-a-129-a-lhorizon-
2025/#:~:text=Des%20records%20et%20une%20situation%20in%C3%A9dite&te
xt=La%20masse%20salariale%20de%20la,sociales%20et%20accentuant%20le
%20d%C3%A9ficit%20.b
[3] https://b2b-africa.net/fr/produit/logiciel-gestion-personnel-tunisie-gestion
paie-application-grhpaie-zk/
[4] https://datascientest.com/convolutional-neural-network
[5] https://www.datasciencetoday.net/index.php/fr/machine-
learning/148reseaux-neuronaux-recurrents-et-lstm
[6] https://datascience.eu/fr/apprentissage-automatique/comprendre-les
reseaux-lstm/
[7] https://www.journaldunet.fr/web-tech/dictionnaire-du-ebmastering/1445304-
python-definition-et-utilisation-de-ce-langage-informatique/
[8] https://www.lebigdata.fr/jupyter-notebook
[9] https://www.ibm.com/fr-fr/topics/java-spring-boot
[10] https://angular.io/guide/what-is-angular
68
69