Vous êtes sur la page 1sur 55

UNIVERSITE MOUHAMED 5 DE RABAT

ECOLE NATIONALE SUPERIEUR DES ARTS ET METIERS


Département de Génie Electrique

RappoRt de l’intelligence aRtificielle

Object d’un élément de demi-module en :

Master de recherche
Master génie électrique

Sujet :

« reconnaissance de voitures
&
Classification de la polarité de tweets»

Présenté au département de Génie Electrique par :


-NOUHOU ALIOUM

- Ezzouhri Karima
- Zouita Fatima
Encadré par :
- Monsieur BENMALEK

Page 1 sur 55
Sommaire
Introduction ........................................................................................................................................... 5
I. Définir les concepts IA et le cycle de vie de données .................................................................. 6
II. Machine learning ....................................................................................................................... 7
1. Généralité ................................................................................................................................... 7
1.1. Définition ............................................................................................................................ 7
1.2. principe de fonctionnement .............................................................................................. 7
1.3. Processus d’exécution........................................................................................................ 9
2. Types d’apprentissages de ML ................................................................................................. 9
2.1. Apprentissage supervisé .................................................................................................... 9
2.1.1. Notions théoriques ................................................................................................... 10
2.1.1.1 Définition et principe ........................................................................................... 10
2.1.1.2 Processus d’exécution (principe) ........................................................................ 10
2.1.1.3 Les différentes parties d’un schéma de prédiction de l’apprentissage
supervisé ............................................................................................................................... 11
2.1.2. Types des méthodes de l’apprentissage supervisé ................................................ 11
2.1.2.1 La régression (variable quantitative : sortie continue) ......................................... 12
a. Les méthodes de régression .................................................................................... 12
b. Exemples d’application d’un modèle de régression de ML ................................. 12
2.1.2.2 La classification ou discrimination (variable qualitative : la sortie est une
étiquette ou une catégorie)..................................................................................................... 12
a) Principe de la classification supervisé.................................................................... 13
b) Les méthodes de classification supervisée ............................................................. 13
c) Exemples d’application de la classification supervisé .......................................... 13
2.1.3. Les étapes essentielles pour concevoir un modèle de l’apprentissage supervisé 14
2.1.3.1 Importer un Dataset (x,y) qui contient des exemples (x : les entrées et y : les
sorties). 14
2.1.3.2 Développer un modèle aux paramètres aléatoires ............................................ 15
2.1.3.3 Mesure de performence (Développer une fonction cout qui mesure les erreurs
entre le modèle et le dataset)............................................................................................... 17
2.1.3.4 L’Algorithme d’apprentissage (Développer un algorithme d’apprentissage pour
trouver les paramètres du modèle qui minimisent la fonction cout) ..................................... 17
2.1.4. Mesure de performance d’un modèle d’apprentissage supervisé ....................... 18
❖ Cas de la classification................................................................................................. 18
✓ L'accuracy ................................................................................................................ 19
✓ La précision .............................................................................................................. 19
✓ Le rappel .................................................................................................................. 19

Page 2 sur 55
❖ Cas de la régression ..................................................................................................... 19
✓ La RMSE (Root Mean Squared Error) ................................................................. 19
✓ La MAE (Mean Absolute Error) :.......................................................................... 20
2.2. Apprentissage non supervisé .......................................................................................... 20
2.2.1. Notions théoriques ................................................................................................... 20
2.2.1.1 Définition et principe ........................................................................................... 20
2.2.2. Types de méthodes de l’apprentissage non supervisé .......................................... 21
2.2.2.1. Le clustering ......................................................................................................... 21
2.2.2.2. Modèle génératif : L’association (filtrage collaboratif) ................................... 22
2.2.2.3. La réduction de la dimensionnalité .................................................................... 22
2.2.3. Application de l’apprentissage non supervisé ....................................................... 22
III. Deep learning ........................................................................................................................... 23
1- Definition .................................................................................................................................. 23
2- Pourquoi le Deep Learning ..................................................................................................... 23
3- Concepts de Deep Learning .................................................................................................... 24
4- Les différentes Architectures du Deep Learning .................................................................. 25
4.1- Les réseaux de neurones convolutifs .............................................................................. 26
4.2- Réseau de neurones récurrents ...................................................................................... 26
IV. Les algorithmes standards d’analyse de texte ....................................................................... 27
A. Text Minning............................................................................................................................ 27
B. Natural language processing (NLP) ....................................................................................... 27
V. Critère de choix d’apprentissage ............................................................................................... 27
VI. Approche mathématique des modèles choisis ....................................................................... 28
1) Naïves Bayes Classifier............................................................................................................ 28
2) Logistic Regression .................................................................................................................. 30
3) Machine à Vecteurs de Support (SVM)................................................................................. 31
4) L’algorithme CNN ................................................................................................................... 32
VII. Génération du code python permettant de concevoir un modèle de détection de voiture 33
A. Présentation de différentes parties du programme .............................................................. 33
• Implémentation des bibliothèques ..................................................................................... 33
• Création du chemin d’accès aux données .......................................................................... 33
• Chargement et structuration de données (prétraitement) ............................................... 33
• Convertir les étiquettes en catégoriels ............................................................................... 34
• Séparation des données : ..................................................................................................... 34
• Conception du modèle ......................................................................................................... 34
• Evaluation de performance ................................................................................................ 34
Page 3 sur 55
• Prédiction d’une nouvelle donnée ...................................................................................... 35
❖ S’assurer que les images ne sont pas endommagées ou corrompues .............................. 35
❖ Visualisation de données ..................................................................................................... 35
❖ Définition des callbacks....................................................................................................... 35
B. Programme implémenter ........................................................................................................ 36
✓ Implémentation des bibliothèques ......................................................................................... 36
✓ lister les fichiers dans le répertoire des données et création du chemin d'accès .................... 38
✓ s'assurer que les images ne sont pas endommagées ou corrompues ...................................... 38
✓ chargement et structuration des données ............................................................................... 39
✓ convertir les étiquettes en catégorielles ................................................................................. 39
✓ séparation de données test et données d'entrainement ........................................................... 40
✓ visualisation de données ........................................................................................................ 40
✓ conception du modèle ............................................................................................................ 40
✓ définir les callbacks ............................................................................................................... 40
✓ matrice de confusion ............................................................................................................. 41
✓ évaluation des performances ................................................................................................. 41
✓ prédiction d'une nouvelle donnée .......................................................................................... 42
VIII. Génération du code python permettant concevoir le modèle de classification de la
polarité des tweets ............................................................................................................................... 43
i. Schématisation des étapes du projet ...................................................................................... 43
ii. Data Gathering / obtention des données ................................................................................ 44
iii. Data cleaning / Nettoyage de données ................................................................................ 45
iv. Analyse des données ............................................................................................................ 47
v. Visualisation des résultats....................................................................................................... 49
vi. L’interface graphique ......................................................................................................... 49
• Objectif de l’interface.......................................................................................................... 49
• Page d’accueil ...................................................................................................................... 49
• Page de résultats .................................................................................................................. 50
• Page d’erreur ....................................................................................................................... 51
• Page No-Results ................................................................................................................... 51
• Page d’analyse d’un simple tweet ...................................................................................... 52
Conclusion ............................................................................................................................................ 54
Bibliographies ...................................................................................................................................... 55

Page 4 sur 55
Introduction
Le but de notre travail consiste à détailler des solutions sur deux problèmes pertinentes de la
société active.
De nos jours, les véhicules automatiques deviennent de plus en plus nécessaires face aux
accidents que subit la société pour plusieurs ( conduite en état d’ivresse, embouteillage,
conduite sans concentration sur la route, manque de connaissance de règles de conduites…). Le
marché des véhicules automatiques ne cesse de croitre, alors les véhicules automatiques est
devenu un sujet important pour les chercheurs en mécatroniques. Un véhicule automatique, est
un véhicule qui connais toutes les règles de conduites d’une voiture, un véhicule capable de
reconnaitre tout être ou objets sur son passage (les voitures, les motos les humains, les animaux,
les objets…). D’où vient l’intérêt pour nous de détailler en une partie comment les véhicules
électriques font pour reconnaitre les voitures sur leur passages.
Autre part, nous nous retrouvons aujourd’hui dans un monde connecté, les hommes comme de
femmes, les enfants comme des adultes prennent une grande partie de leurs temps pour se
défouler sur le réseau sociaux. Alors une question importante vient se poser au niveau de
fournisseurs du contenu de réseaux sociaux, les gestionnaires du réseau sociaux, et d’autres
application pareils : comment reconnaitre les sentiments des utilisateurs envers une application
ou un produit (positif ou négatif), on parle de l’analyse des sentiments. C’est sur ce question
que porte l’autre partie de notre travail. Avec l’analyse des sentiments, il devient facile de
déterminer si une écriture est positive, négative ou neutre. Il est également connu sous le nom
de mine d’opinion, dérivant de l’opinion ou de l’attitude d’un orateur. Récemment, l’analyse
de sentiments a reçu beaucoup d’attention non seulement de la part de la recherche scientifique
mais aussi par les domaines de la publicité et du marketing. Cela peut être attribué aux récentes
avancées dans les réseaux sociaux et à la rapidité du relais de l’information. Les grandes masses
de données réelles issues des réseaux sociaux sont largement utilisées pour, justement, l’analyse
des sentiments. Analyser les messages récents issus des réseaux sociaux pourraient donner
l’opinion générale des utilisateurs envers un sujet spécifique. On peut aussi prendre d’autres
cas d’applications de l’analyse de sentiment comme aide aux entreprises à étudier le sentiment
des clients autour d’un produit particulier et évaluer leurs campagnes marketing et ainsi fidéliser
leur clientèle, ou encore la surveillance des médias sociaux qui pourraient permettre de détecter
les tweets à sentiments négatifs, et réduire le harcèlement et déferlement de haine.
Les deux problèmes évoquer, relève du domaine d’intelligence artificielle et de la science de
données. Ainsi nous verrons d’abord en premier lieu c’est quoi une intelligence artificielle et le
concept de cycle de vie de données. Par la suite nous verrons les différentes approches de
l’intelligence artificielle (ML, DL, NLP, Text mining) afin de situer nos deux cas de problèmes
énoncés. Par la suite nous étudierons les théories relatives à nos cas de problèmes (algorithmes :
CNN, naive bayes, SVM, régression logistic). Et par la fin nous allons proposer une solution
pour chaque cas de problème (implémentation du programme).

Page 5 sur 55
I. Définir les concepts IA et le cycle de vie de données
L’intelligence artificielle est un processus d’imitation de l’intelligence humaine qui repose sur
la création et l’application d’algorithmes exécutés dans un environnement informatique
dynamique. Son but est d’agir comme un humain avec une grande capaciter de raisonnement et
une mémoire infinie et assister ainsi dans de taches complexes ou répétitives. Pour y parvenir,
trois composants sont nécessaires : des systèmes informatiques, des données avec des systèmes
de gestion et des algorithmes avancés. On peut donc identifier deux composantes principales :
Un outil d’apprentissage
Les données
Ces deux composants répondent et font parties d’un processus dit cycle de vie de données. Le
cycle de vie de données est …………………
Le cycle de vie de données comportes 05 parties :
• Collecte de données
• Analyse de données
• Traitement de données
• Exploitation de données
• Déploiement et surveillance
Une intelligence artificielle fait deux choses dans son fonctionnement, elle apprend et elle
fournit de résultats. Pour mettre en place une intelligence artificielle, il faut respecter le 05
parties du cycle de vie de donnée.
Dans notre cas de problème, nous nous intéressons de près au traitement et exploitation de
données, supposant que les deux premières étapes ont été effectué à l’avance. En effet, c’est
l’étape qui constitue l’exploitation de données qui fait appel aux composants d’apprentissage
machine. Il existe plusieurs composants d’apprentissage machine répondant aux problèmes de
l’exploitation de données :
Machine learning
Deep learning
Data mining
NLP
… etc.
Nous allons définir quelques composants afin de situer notre cas de problème et savoir lequel
utiliser.

Page 6 sur 55
II. Machine learning

1. Généralité

1.1.Définition
Machine learning : est un sous ensemble de l’intelligence artificiel qui repose sur l’idée que les
systèmes peuvent apprendre des données, identifier des tendances et donner des résultats avec
un minimum d’intervention humaine.
Autre part, c’est outil qui exploite les données traiter par les data scientistes qui permet
l’automatisation à la création de modèles analytiques (techniques qui permettent aux systèmes
automatiques de s’améliorer grâce aux données).
(Model ML) // En effet, tout objet créer après l’entrainement à partir d’un algorithme de
machine learning est appelé modèle. Ainsi, un modèle machine learning est un fichier qui a été
entrainé pour reconnaitre certain type de modèle.
Nous pouvons alors définir le Machine learning comme étant des méthodes permettant de créer
automatiquement des modèles à partir des données. Ces méthodes sont en fait des algorithmes.
(Algorithme ML) // Là ou un algorithme traditionnel (classique) exécute des instructions, un
algorithme de ML améliore ses performances au fur et à mesure de son apprentissage, mais au
fil de l’évolution du contexte et de réentrainements successifs. Les algorithmes du ML utilisent
les données fournies par les data scientistes pour devenir plus intelligents et mieux informés
lors de l’élaboration de résultats. Une machine learning permet donc, à un système d’apprendre
à partir des données qu’on lui donne accès et non à l’aide d’une programmation explicite.
Dans ce contexte, nous dirons que le ML est une application de l’IA qui consiste à développer
des modèles qui permettent aux systèmes d’accéder aux données afin d’apprendre et de
s’améliorer par eux-mêmes, à partir de l’expérience sans être explicitement programmés.
(Approche ML) // Le ML apprend seul grâce à l’analyse d’un jeu de données. Pour cela, il
utilise des procédés automatiques issus des statistiques et des probabilités. Il optimise ses
algorithmes dans un but prédictif ou recommandatif.
Ici, nous pouvons dire que le Machine Learning est un ensemble d’algorithmes basés sur de
techniques de calcul statistiques et probabilités qui apprend à analyser des données, et faire des
prédictions ou recommandation à partir d’une historique de connaissances et d’instructions sous
forme de langage informatique afin d’effectuer de taches (prendre des décisions, automatiser
des taches…etc).
D’une façon résumée, le ML est une manière de modéliser des phénomènes où un système
utilise des données, des algorithmes, des probabilités, des statistiques et la structure neuronal
du cerveau humain pour imiter la manière dont les êtres humains apprennent afin de permettre
aux machines d’apprendre par eux-mêmes, tout en améliorant progressivement sa précision et
devenir plus intelligent.

1.2. principe de fonctionnement


Page 7 sur 55
Pour créer son modèle d’apprentissage, le ML emploie :
• Des algorithmes statistiques et probabilités où,
• Des algorithmes basés sur les réseaux de neurones
Avec Machine learning, comme pour les modèles statistiques, il s’agit :
• De comprendre la structure des données
• D’ajuster des distributions théoriques aux données qui sont bien comprises.
Les propriétés ramenant un modèle ML à un modèle statistique
• En statistique, la cible est une « variable dépendante »
• En ML, la cible est une « étiquette »
• Une variable en statistique est une « caractéristique » en ML
• Une transformation en statistique est une « création de caractéristique » en ML
Le ML repose sur le fait de pouvoir utiliser des ordinateurs pour rechercher une structure dans
les données, même si aucune théorie existante ne permet de se faire une idée de cette structure.
Cependant, vous entrainez un modèle sur un ensemble de données, en lui fournissant un
algorithme qu’il peut utiliser pour raisonner sur les données et apprendre de celle-ci. Une fois
que vous avez entrainé le modèle, vous pouvez l’utiliser pour saisonner sur les données qu’il
n’a encore jamais vues, et faire de prédictions ou recommandations sur ces données.
Les schémas suivants illustrent le fonctionnement simplifié.

Le ML utilise souvent une approche itérative pour apprendre des données, alors il est facile
d’automatiser cet apprentissage. Les données sont soumises à des passages successifs jusqu’à
ce qu’un système cohérant soit établi.
Ainsi en analysant une très grande quantité de données, le ML améliore sa performance. Il peut
affiner ses paramètres afin de s’ajuster aux nouvelles données qu’il reçoit, améliorant donc
progressivement sa performance.
Le test d’un modèle de ML est une erreur de validation de nouvelles données, et non un test
théorique vérifiant une hypothèse nulle.
On peut donc résumer les composants essentiels d’un système de ML performant :

Page 8 sur 55
• Fonctions de préparation des données
• Algorithmes (de base et avancés)
• Processus d’automatisation et itératifs
• Evolutivité
• Modélisation d’ensembles

1.3. Processus d’exécution


• L’utilisateur alimente un algorithme avec une quantité considérable de données
perçus historiques ou sa mémoire (les algorithmes de ML déjà préconçus par un
programmeur et les données obtenu après traitement par un data scientiste)
• L’utilisateur demande à l’ordinateur d’effectuer des
prédictions/recommandations et de prendre des décisions à partir de données
historiques, lorsqu’on aura de nouvelles données à l’entrée
• Des corrections sont appliquées après chaque entrainement avec une nouvelle
donnée, l’algorithme peut incorporer les informations de corrections pour
améliorer ses résultats.
Formellement, en Machine Learning, on cherche à déterminer une fonction mathématique f(x)
où le résultat d'une observation correspond à la réponse du phénomène étudié. Par exemple, si
« x » représentait les caractéristiques d'un logement, le phénomène étudié correspondant au
marché immobilier, la réponse correspondrait au prix de ce logement. Il existe plusieurs types
d'apprentissage pour calibrer cette fonction. Ainsi nous allons voir les différents apprentissages
permettant de générer la fonction f(x).

2. Types d’apprentissages de ML
Les méthodes et techniques d’analyse sont multiples, qu’elles soient descriptives, prescriptives
et prédictives, elles résustent de l’exploration par un utilisateur ou elles sont automatiques ou
encore combinaison de deux.
Selon la pertinence et la finalité de l’analyse, les outils de machine learning peuvent alors se
baser sur des ensembles de données labellisées (supervisée), non labellisées, semi labellisé ou
par renforcement. Ainsi on distingue :
• Apprentissage supervisé
• Apprentissage non supervisé
• Apprentissage semi-supervisé
• Apprentissage par renforcement

2.1.Apprentissage supervisé

Page 9 sur 55
2.1.1. Notions théoriques

2.1.1.1 Définition et principe


L’apprentissage supervisé (donnée labellisé) : comme son nom l’indique, cela consiste à
superviser l’apprentissage de la machine en lui montrant des exemples (des données) de la tâche
qu’elle doit réaliser.
Autrement dit, l’apprentissage supervisé consiste à faire apprendre la cible par des exemples
étiquetés ou annotés (la machine connait déjà les réponses qu’on attend d’elle), les exemples
annotés constituent une base d’apprentissage, à partir de laquelle, la machine fera des
prédictions sur des nouvelles données. La fonction de prédiction apprise peut-être appelée
« hypothèse » ou « modèle ».
Ainsi, elle apprend en se basant sur ces exemples connus et améliore le modèle dit modèle de
prédiction. Les paramètres du modèle s’ajustent en vue ensuite de réagir efficacement face à
des situations similaires. Au fur et à mesure de l’enrichissement du modèle, le résultat gagne
en pertinence, réduisant la marge d’erreur.
Dans l’apprentissage supervisé on a une connaissance préalable de ce que les valeurs de sortie
pour nos échantillons devraient être. Par conséquent, le but de ce type d'apprentissage est
d’apprendre une fonction qui, compte tenu d’un échantillon de données et de résultats souhaités,
se rapproche le mieux de la relation entre les entrées et les sorties observables dans les données.
Il s’agit de bien généraliser la structure des données et faire de prédictions, c’est-à-dire
d’apprendre une fonction qui fasse des prédictions correctes sur des données non présentes dans
l’ensemble d’apprentissage. On utilise donc un algorithme pour apprendre la fonction de
mappage de l’entrée à la sortie. y = f(x). L’exécution s’est faite selon un processus bien établi.
2.1.1.2 Processus d’exécution (principe)
L’algorithme d’apprentissage supervisé est alimenté avec des données de
paramètres provenant de réponses connues, c’est-à-dire il reçoit une série de
données en entrée avec les sorties correctes.
L’algorithme est alors exécuté et des ajustements sont effectués sur le modèle à
l’aide de méthodes précitées. Lors de chaque itération de test, la machine crée
un certain nombre de règles, reliant l’entrée et la sortie, ceci jusqu’à ce qu’une
règle générale soit établie et dont la sortie de l’algorithme(apprentissage) et la
réponse connue correspondent. Le modèle est donc prêt à recevoir de nouvelles
données non étiquetées et accomplir la tâche à laquelle il est entrainer.
Un équipement pourrait comporter des points de données étiquetés <<E>>
(échecs) ou <<R>> (réussites).
A ce stade, des quantités croissantes de données sont saisies pour entrainer le système et traiter
des décisions plus complexes.
Mathématiquement parlant, l’apprentissage supervisé prédit une variable dépendante « Y » à
partir d’un ensemble des prédicteurs « X » et d’une historiques de connaissances (Xhistorique et
Yhistorique).

Page 10 sur 55
Ainsi l’apprentissage supervisé utilise des schémas pour prédire les valeurs de l’étiquette sur
d’autres données non étiquetées.
2.1.1.3 Les différentes parties d’un schéma de prédiction de l’apprentissage
supervisé
On peut donc identifier 03 parties dans le schéma de sa prédiction :
L’algorithme au cœur du processus décisionnel
Les variables et les fonctionnalités qui constituent la décision
La connaissance de base pour laquelle la réponse est connue et qui permet au
système d’apprendre.

Exemples :

2.1.2. Types des méthodes de l’apprentissage supervisé


On distingue les problèmes de régression et des problèmes de classement. Ainsi, on considère
que les problèmes de prédiction d’une variable quantitative sont des problèmes de régression
tandis que les problèmes de prédiction d’une variable qualitative sont des problèmes de
classification. L’apprentissage supervisé, peut être séparé en deux sous types de problèmes
selon de variables quantitative ou qualitative.

Page 11 sur 55
2.1.2.1 La régression (variable quantitative : sortie continue)
C’est une technique de l’apprentissage supervisé qui utilise un algorithme pour comprendre la
relation entre les variables dépendantes et indépendantes. Le modèle de régression sont utiles
pour prédire des valeurs numériques sur la base de point différentes de données.
Un modèle de régression est un modèle de ML dont les sorties y sont des nombres réels continus
(exemple : la température, prix des maisons, émissions CO2,…)
a. Les méthodes de régression
On trouve les méthodes suivantes :
Méthode de régression linéaire simple
Méthode de régression linéaire multiple
Méthode de régression polynomiale
Méthode de régression de poisson
Méthode de régression à vecteur de support (SVR)
Méthode de régression Bayésien
Méthode de régression random forest (forêt aléatoire)
Méthode de régression tree (arbre de décision)
Méthode de régression cox model
Méthode de régression longitudinal joint model
Méthode de régression survival random forest
Méthode de régression de Ridge & Lasso
Méthode de régression Elastic Net
Dans ces méthodes, on attribue une valeur mathématique à des objets : un pourcentage ou une
valeur absolue. Par exemple, une probabilité pour une machine de tomber en panne (15%, 20%,
etc.) ou le prix de vente idéal d’un appartement en fonction de critères comme la surface, le
quartier, etc.
b. Exemples d’application d’un modèle de régression de ML

✓ Secteur de finance
L’ordinateur apprend à prédire de prix de propriétés immobilières en fonction des
caractéristiques et du prix de vente d’autres propriétés vendues récemment dans la région.

2.1.2.2 La classification ou discrimination (variable qualitative : la sortie est


une étiquette ou une catégorie)
Les problèmes de classification utilisent un algorithme pour affecter avec précision des données
et test à des catégories spécifiques. Les algorithmes d’apprentissage supervisé peuvent être
utilisés pour classer les spams dans un dossier distinct de sa boite de réception.
Un modèle de classification est un modèle de ML dont les sorties y appartiennent à un ensemble
fini de valeurs (exemple : bon/moyen/mauvais, diabétique/non diabétique, malin/bénin,….)
• Classifier certains éléments inconnus dans un ensemble discret de classes.

Page 12 sur 55
• La classification tente d'apprendre la relation entre un ensemble de variables de
caractéristiques et une variable cible d'intérêt.
• L'attribut cible dans la classification est une variable catégorielle avec des valeurs
discrètes.

a) Principe de la classification supervisé


On veut construire une fonction de classification telle que
Y = f (X)
L’objectif est de choisir la fonction 𝑓 et ses paramètres 𝐴 telle que l’on minimise l’erreur
théorique

b) Les méthodes de classification supervisée


Ici, on trouve les méthodes suivantes :
Les arbres de décision
Forets aléatoires
Machine à vecteur de support (SVM)
Naïve bayes
Le gradient boosting
Régression logistique
Plus proche voisin (KNN)
Le Bagging (Boostrap Aggregating)
CART
Les séparateurs à vastes marges (SVM)
Toutes ces méthodes consistent à attribuer une classe à des objets.

c) Exemples d’application de la classification supervisé

✓ Secteur bancaire
On peut identifier si une transaction est frauduleuse ou non frauduleuse de manière automatique
à partir d’une base de données de comportement passées, liées à des cas confirmés frauduleux
ou non frauduleux. On parle de détection d’anomalie.
✓ Dans le secteur industriel
On peut déterminer si oui ou non une machine est susceptible de tomber en panne. L’ordinateur
apprend à prédire une défaillance future sur une chaine de production en fonction des données
de défaillance passées associées à différents signaux. On associe une réponse prédéfinie (oui

Page 13 sur 55
ou non, jaune, rouge, vert ou bleu…etc.) à un objet, avant de demander à l’algorithme de réaliser
cette classification. Cela permet aux ingénieurs et techniciens d’intervenir suffisamment tôt sur
la chaine pour éviter la panne. C’est ce qu’on appelle la maintenance prédictive, composante
majeure de l’industrie 4.0.
✓ Dans le secteur de markéting
L’ordinateur apprend à recommander des articles aux clients sur la base de données antérieures,
notamment l’historique des achats et les profils d’autres clients.
Ou bien le cas où l’ordinateur apprend à prédire le risque de désinscription de clients en fonction
des données de comportement passées.
✓ Dans le secteur de la médecine
L’ordinateur apprend à prédire la prédisposition de patients à une maladie sur la base de données
génétiques associées à des cas de patients confirmés malades ou sains.

2.1.3. Les étapes essentielles pour concevoir un modèle de l’apprentissage


supervisé

2.1.3.1 Importer un Dataset (x,y) qui contient des exemples (x : les entrées et
y : les sorties).
La première étape d’un algorithme de Supervised Learning consiste donc à importer un Dataset
qui contient les exemples que la machine doit étudier.
Ce Dataset inclut toujours 2 types de variables :
• Une variable objective (target) y
• Une ou plusieurs variables caractéristiques (features) x
Par exemple, imaginez que vous visitez une série d’appartements. Pour chaque appartement,
vous notez dans un tableau Excel le prix y et les caractéristiques x de l’appartement (la surface,
la qualité, ville, etc.)

Par convention, on dit que notre Dataset contient m exemples, c’est-à-dire m lignes. Si vous
avez visité 6 appartements, alors m=6.

Page 14 sur 55
Par convention, on note également n le nombre de features dans notre Dataset, c’est-à-dire le
nombre de colonnes (hormis la colonne y). Si vous avez noté 3 caractéristiques pour vos
appartement (Surface, qualité, ville), alors n=3.
Quand on développe un programme de vision par ordinateur, les features de notre Dataset
peuvent être les pixels présents sur l’image. Un Dataset d’images de 8×8 pixels donne donc 64
features (n=64). Chacune de ces features correspondra à la valeur du pixel (un pixel noir = 1,
un pixel blanc = 0)

Dernière convention : pour désigner une cellule de notre tableau, on note en général ,
c’est-à-dire que pour désigner la qualité du 3ème appartement que vous avez visité, on écrit :

. Ainsi on obtient :

Avec un tel Dataset, il devient possible de prédire de nouvelles valeurs y à partir de valeurs x
en développant un modèle, et c’est là que intervient notre 2ème étape dans la résolution d’un
problème de Supervised Learning !
2.1.3.2 Développer un modèle aux paramètres aléatoires
Pour rappel, un modèle est une représentation simplifiée de la réalité, que l’on peut utiliser pour
prédire ce qui se passerait dans certaines conditions. Ça peut être un dessin, une équation
physique, une fonction mathématique, une courbe… bref, n’importe quelle représentation.
Par exemple, si je lâche une pomme de 100 g depuis une hauteur de 4 mètres, en combien de
temps tombera t’elle sur la tête de ce bon vieux Newton ? On peut prédire cela avec les
équations de Newton. Dans ce cas, notre modèle est déterministe : il donnera toujours la même
réponse sous les mêmes conditions.

Page 15 sur 55
Mais pour prédire le prix d’un appartement en fonction de toutes ses caractéristiques, quelle est
L’équation mathématique à entrer dans la machine ? Et quelle est l’équation pour reconnaître
un chat sur une photo ? Nul ne le sait !
La solution ? Laisser la machine trouver le modèle qui correspond le mieux à votre Dataset
(x,y).

Les modèles de Machine Learning


A la différence du modèle illustré plus haut, un modèle de Machine Learning ne repose pas sur
une démonstration mathématique ou une équation physique. A la place, il est construit à partir
de données, comme un modèle statistique.
Si par exemple votre Dataset vous donne le nuage de point suivant, alors la machine devra
trouver le modèle qui rentre le mieux dans ce nuage de point.

Cependant, ce n’est pas à la machine de faire tout le travail !


Dans les faits, c’est à nous de choisir le type de modèle (linéaire, polynomiale…) qui définit la
fonction mathématique et c’est à la machine de trouver les coefficients de cette fonction qui
donnent les meilleurs résultats. Par convention on appelle ces coefficients les paramètres du
modèle.
Par exemple, on peut choisir de développer un modèle linéaire f(x) = ax+b et on laisse la
machine trouver la valeur de a et b qui donne les meilleurs résultats.
Ou bien on peut choisir un modèle non-linéaire, par exemple

Où a, b, c sont les paramètres. Les possibilités sont infinies, mais nous


verrons plus tard comment choisir un modèle plutôt qu’un autre.

Maintenant, la question est : comment faire pour que la machine trouve le meilleur modèle ?
Autrement dit, comment faire pour que la machine apprenne (c’est-à-dire trouver de valeurs
optimaux des paramètres)?
La réponse est dans les étapes 3 et 4 !

Page 16 sur 55
2.1.3.3 Mesure de performence (Développer une fonction cout qui mesure les
erreurs entre le modèle et le dataset)
Pour que la machine trouve le meilleur modèle, il faut déjà qu’elle puisse mesurer la
performance d’un modèle donné.
Pour savoir quel modèle est le meilleur parmi 2 candidats, il faut les évaluer. Pour cela, on
mesure l’erreur entre un modèle et le Dataset, et on appelle ça la Fonction Coût.
Dans le cas d’une régression, on peut par exemple mesurer l’erreur entre la prédiction du
modèle f( ) et la valeur qui est associée à ce dans notre Dataset.
Maintenant, dans le cas d’une classification, on peut construire notre Fonction Coût en mesurant
le nombre d’exemples du Dataset que notre modèle aura mal classé avec sa frontière de décision

Il existe beaucoup de métriques pour mesurer nos erreurs (MSE, MAE, RMSE, etc.)
Voilà pour l’étape 3 de notre problème d’apprentissage.
Il est temps de passer à l’étape la plus importante en Machine Learning, celle qui donne vie à
notre programme, l’étape d’apprentissage.

2.1.3.4 L’Algorithme d’apprentissage (Développer un algorithme d’apprentissage


pour trouver les paramètres du modèle qui minimisent la fonction cout)

Avoir un bon modèle, c’est avoir un modèle qui a de petites erreurs.


Ainsi, en Supervised Learning, la machine cherche les paramètres de modèle qui minimisent la
Fonction Coût. C’est ça qu’on appelle l’apprentissage.
Pour trouver les paramètres qui minimisent la fonction Coût, il existe un paquet de stratégies.
On pourrait par exemple développer un algorithme qui tente au hasard plusieurs combinaisons
de paramètres, et qui retient la combinaison avec la Fonction Cout la plus faible. Cette stratégie
est cependant assez inefficace la plupart du temps.
Une autre stratégie, très populaire en Machine Learning, est de considérer la Fonction Coût
comme une fonction convexe, c’est-à-dire une fonction qui n’a qu’un seul minimum, et de
chercher ce minimum avec un algorithme de minimisation appelé Gradient Descent. Cette
stratégie apprend de façon graduelle, et assure de converger vers le minimum de la fonction
Coût (si convexe).

Page 17 sur 55
Dans le jargon, on appelle cette étape la phase d’entrainement du modèle. La machine choisit
des paramètres pour le modèle, puis évalue sa performance (Fonction Coût) puis cherche des
paramètres qui peuvent améliorer sa performance actuelle, etc

2.1.4. Mesure de performance d’un modèle d’apprentissage supervisé


Maintenant que l'on a déterminé la fonction comment évaluer la qualité et les performances de
son modèle ? Aujourd'hui, le data scientist teste les performances de différentes calibrations de
différents algorithmes sur les données. Au bout du compte, l'algorithme avec la calibration qui
affiche les meilleures performances est conservé pour prédire.
La performance d'un algorithme de Machine Learning Supervisé est mesurée par validation
croisée. Le principe est de construire un modèle prédictif et de le tester sur des données qu'il
n'a jamais vues. Ceci imite le monde réel où le modèle sera déployé et utilisé comme outil
prédictif. Les données sont divisées en deux ensembles d'observations : l’échantillon
d’apprentissage (= entraînement), de taille généralement plus importante, et l’échantillon test.
L'ordinateur utilise l'échantillon d'apprentissage pour construire un modèle prédictif. Les
performances prédictives du modèle sont mises à l'épreuve avec l'échantillon test. Le modèle
prédit les résultats Y sur la base des données X de l'échantillon test. Si les prédictions et les
données Y réelles (= observées) sont proches, alors l'algorithme a une bonne performance.
Il existe plusieurs métriques permettant de mesurer les performances d'un modèle d'un point de
vue quantitatif.

❖ Cas de la classification
Dans les problématiques de classification, la plupart des indices de performance sont calculés
à partir d'une matrice de confusion. Cette matrice affiche le nombre de succès et d'échecs de
prédiction pour chaque catégorie de la variable Y. Pour une variable Y binaire (survie / mort,
fraude oui / non…), la matrice de confusion comporte quatre cellules. Dans la matrice suivante,
les deux catégories sont désignées par 1 et 0.

Page 18 sur 55
L’indice le plus intuitif que nous pouvons calculer à partir de cette matrice est la proportion de
prédictions correctes (Accuracy en anglais) :

Cet indice n'est pas ¦able en cas de déséquilibre important entre les catégories de Y dans les
données. Par exemple, lorsque l'algorithme apprend à détecter une fraude, les données d'entrée
contiennent souvent beaucoup plus de cas historiques non frauduleux que de cas frauduleux.
D'autres indices peuvent être utilisés en cas de déséquilibre de classe. Par exemple, l'indice
d’Aire Sous la Courbe (AUC) calculé à partir d’une courbe ROC.
D'autres indices tels que le recall, la sensibilité ou la spécificité peuvent être plus appropriés
dans des situations spécifiques.
Considérons un problème de classification binaire : les réponses prennent les valeurs 0 ou 1.

✓ L'accuracy
✓ La précision
qui est la proportion d'observations correctement prédites positivement parmi toutes celles qui
sont prédites positivement. Quand je prédis positif, est-ce que la bonne réponse était souvent
positive ?

✓ Le rappel
qui est la proportion d'observations correctement prédites positivement parmi toutes celles qui
devraient être prédites positivement. Est-ce que je n'ai pas tendance à trop souvent prédire
négatif à tort ?

Cela aboutit donc à la création du F1 score :

❖ Cas de la régression
Dans le cadre de la régression, le calcul est différent : les valeurs ne sont plus discrètes (0 ou 1)
mais continues (à valeurs dans R). Il faut donc utiliser des métriques adaptées.

✓ La RMSE (Root Mean Squared Error)


calcule cette différence avec une élévation au carré pour ne pas avoir de problèmes de signe.
Le meilleur moyen pour comparer les performances sur un modèle de régression est de calculer
les différences entre les réponses théoriques et les réponses prédites. Cet indice est à minimiser.

Page 19 sur 55
✓ La MAE (Mean Absolute Error) :
ressemble fortement à la RMSE, puisque la valeur absolue est utilisée à la place de l'élévation
au carré

L'avantage de ces deux métriques est qu'elles permettent de quantifier les performances en
termes d'écart (absolu ou quadratique), mais ne permettent pas d'obtenir un score en
pourcentage. Dans ce dernier cas de figure, on se tournera plutôt vers le coefficient de
détermination R2.

Performance des modèles : évaluer le biais et la variance


Un modèle performant a un biais faible et une variance faible.
Le biais mesure le décalage entre les Y réels et les prédictions d'un modèle de Machine
Learning. Un modèle avec un biais élevé est peut-être trop simple ou n'est pas suffisamment
entraîné. Le biais se traduit par une mauvaise performance prédictive à la fois sur les
échantillons d'apprentissage et de test.
La variance mesure le bruit des prédictions. Un modèle avec une variance élevée est trop ajusté
aux données d’entraînement et se généralise mal sur de nouvelles données. La variance se
traduit par une performance bien meilleure de l’algorithme sur l’échantillon d’apprentissage
par rapport à sa performance sur l’échantillon test.

2.2.Apprentissage non supervisé

2.2.1. Notions théoriques

2.2.1.1 Définition et principe


Il utilise des algorithmes de ML pour analyser et regrouper des ensembles de données non
étiquetées.
Ici, les réponses que l’on cherche à prédire ne sont pas disponibles dans les jeux d données. On
demande alors à la machine de trouver une structure et de créer ses propres réponses à partir de
la tendance de données. Elle propose ainsi des réponses à partir d’analyses et de groupement de
données. Ici la machine fait une recommandation à la place de la prédiction lors d’un
apprentissage supervisé.
Ainsi les algorithmes découvrent des modèles cachés dans les données sans nécessiter
d’intervention humaine.

➢ Les étapes de la recommandation

Page 20 sur 55
Exemple :

2.2.2. Types de méthodes de l’apprentissage non supervisé


Les modèles d’apprentissage non supervisé sont utilisés pour trois taches principales :
2.2.2.1.Le clustering
Est une technique d’exploration de données permettant de regrouper des données non étiquetées
en fonction de leurs similitudes ou de leurs différences. Autrement dit, on demande à la machine
de grouper des objets dans des ensembles de données les plus homogènes possible. Cette
technique est proche de celle de la classification dans l’apprentissage supervisé, mais à la
différence de cette dernière, les classes ne sont pas préremplies par un humain, c’est la machine
qui invente ses propres classes, à un niveau de finesse pas toujours évident pour un humain.
Cette technique est utile dans le marketing pour la segmentation de marché, la compression
d’images…etc.
On trouve les algorithmes suivants :
La classification K-means
La classification ascendante hiérarchique (CAH)
Clustering par décalage moyen
Clustering basé sur la densité
Clusterisation par la méthode de nuées dynamiques
K-nn
DBSCan

Page 21 sur 55
Exemple : imaginons qu’on veuille segmenter des automobilistes, pour construire des offres de
mobilité personnalisées pour les clients, grâce à des algorithmes d’apprentissage. Le clustering
rapproche des individus aux habitudes très similaires dans un groupe et éloigne des individus
aux habitudes très similaires dans un groupe et éloigne des individus très différents. On obtient
alors des groupes homogènes aux caractéristiques propres. Par exemple, les individus qui
utilisent leur voiture en semaine et passe du temps dans les bouchons, ceux qui ont plutôt
tendance à conduire le week-end pour des trajets courts, etc. cela permet au marketing de leur
proposer des offres week-end, semaine, etc. le clustering permet d’atteindre des niveaux de
précision impossibles pour un humain et d’identifier des schémas qu’il n’aurait pas pu repérer.
2.2.2.2. Modèle génératif : L’association (filtrage collaboratif)
Technique qui utilise différentes règles pour trouver des relations entre les variables d’un
ensemble de données donné.
Ici, l’objectif est toujours de personnaliser une expérience client. C’est une technique utilisée
par de très nombreuses plateformes, telles que Netflix, Sportify, etc. leurs algorithmes étudient
ce que vous avez regardé, aimé, mais aussi ce que des profils similaires au votre ont apprécié,
pour vous faire des recommandations automatiques. Le modèle s’appuie sur des facteurs
implicites inconscients (ce que l’utilisateur a fait), plutôt que des facteurs explicites (des critères
remplis par l’utilisateur). Ce genre d’outils est très utilisé dans le e-Commerce (dans un contexte
d'une étude de comportement d’achat d'un groupe de clients, les personnes qui achètent tel
produit ont également tendance à acheter un autre produit spécifique), pour proposer des
produits qui pourraient intéresser le client. Amazon en est devenu spécialiste.
2.2.2.3.La réduction de la dimensionnalité
Est une technique utilisée lorsque le nombre de caractéristiques (ou de dimensions) dans un
ensemble de données donné est trop élevé. C’est le processus de réduction du nombre de
variables aléatoires considérées en obtenant un ensemble de variables principales. Autrement
dit une technique qui réduit le nombre de variables d’entrées de données à une taille gérable
tout en préservant l’intégralité des données. Cette technique est souvent utilisée au stade du
prétraitement des données, par exemple lorsque les auto-codeurs éliminent le bruit des données
visuelles pour améliorer la qualité des images.
Les différentes techniques de la réduction du nombre de dimension :
Propriétés des espaces à grande dimension
Analyse en composantes principales (ACP)
Analyse en composantes indépendantes (ACI)
Analyse linéaire discriminante (LDA) : cas à deux classes et cas générale
Diversité marginale maximale (MMD)

2.2.3. Application de l’apprentissage non supervisé


D’abord pourquoi l’apprentissage non supervisé ?
• L’apprentissage non supervisé trouve toutes sortes de modèles inconnus dans les
données.
• Les méthodes non supervisées aident à trouver des caractéristiques qui peuvent être
utiles pour la catégorisation.
Page 22 sur 55
• Il a lieu en temps réel, donc toutes les données d’entée sont analysées et étiquetées en
présence des apprenants.
• Il est plus facile d’obtenir des données non étiquetées à partir d’un ordinateur que des
données étiquetées, qui nécessitent une intervention manuelle.
L’apprentissage non supervisé peut servir à partitionner des données (ou data clustering) ou
encore à programmer un système de suggestion, par exemple un moteur de recommandation de
produit tenant compte de clusters d’appétences clients. Les fonctions de détections d’anomalies
utilisent généralement la technique de l’apprentissage non supervisé.

III. Deep learning

1- Definition
L'apprentissage profond (« Deep Learning ») est un ensemble de techniques d'apprentissage
automatique qui a permis des avancées importantes en intelligence artificielle dans les
dernières années.
Dans l'apprentissage automatique, un programme analyse un ensemble de données afin
de tirer des règles qui permettront de tirer des conclusions sur des nouvelles données.
L'apprentissage profond est basé sur ce qui a été appelé, par analogie, des « Réseaux de
neurones artificiels », composés de milliers d'unités (les « neurones ») qui effectuent chacune
de petites opérations simples. Les résultats d'une première couche de « neurones » servent
d'entrée aux calculs d'une deuxième couche et ainsi de suite.
Par exemple, pour la reconnaissance visuelle, des premières couches d'unités identifient des
lignes, des courbes, des angles… des couches supérieures identifient des formes, des
combinaisons de formes, des objets, des contextes…
Les progrès de l'apprentissage profond ont été possibles notamment grâce à
l'augmentation de la puissance des ordinateurs et au développement de grandes bases de
données (« Big Data »).

2- Pourquoi le Deep Learning

Les algorithmes de ML fonctionnent bien pour une grande variété de problèmes,


cependant ils ont échoué à résoudre quelques problèmes majeurs de l’IA tels que la
reconnaissance vocale et la reconnaissance d’objets.
L’IA émotionnelle regroupe un ensemble de cas d’utilisation de la machine
Learning pour lesquelles les techniques d’apprentissage profond sont particulièrement bien
adaptées.
Le principe fondamental de ML est de chercher à extraire des caractéristiques « features
» qui aident à la classification et pour les extraire il y a deux possibilités :

Page 23 sur 55
• Soit à l’aide d’une expertise métier, celle d’un physionomiste par exemple, pour
construire manuellement et directement ces variables prédictives à partir d’un visage.
L’inconvénient de ce processus d’extraction manuel est qu’il comporte une part d’arbitraire
et qu’il n’exploite pas nécessairement l’intégralité de l’information disponible dans une
photo ou dans une vidéo.

• Soit en utilisant un réseau de neurones profond capable d’extraire les caractéristiques


par collection de toute information utile disponible dans les données brutes et pour bénéficier
de cet atout il faudra cependant renoncer à interpréter les prédictions d’un tel modèle et
disposer d’un grand nombre d’exemples étiquetés. Comme dans beaucoup de problèmes
d’IA c’est là que réside l’une des principales difficultés : construire des bases de données
assez riches pour entraîner les algorithmes de Deep Learning à reconnaître des émotions.

Le procède du ML comparé à celui de Deep Learning

Les différents algorithmes du Deep Learning ne sont apparus qu’à l’échec de


l’apprentissage automatique tentant de résoudre une grande variété de problèmes de
l’intelligence artificielle (l’IA) afin :

• D’améliorer le développement des algorithmes traditionnels dans les tâches de l’IA.

• De développer une grande quantité de données telle que les big data.

• De s’adapter à n’importe quel type de problème.


• D’extraire les caractéristiques de façon automatique.

Donc l'apprentissage en profondeur utilise des réseaux de neurones pour apprendre des
représentations utiles de caractéristiques directement à partir de données.

3- Concepts de Deep Learning


Les concepts de Deep Learning constituent une classe d’algorithmes d’apprentissage
automatique dont les caractéristiques sont les suivantes :

Page 24 sur 55
• Ils utilisent différentes couches d’unité de traitement non linéaire pour l’extraction et
la transformation des caractéristiques. Chaque couche prend en entrée la sortie de la
précédente. Les algorithmes peuvent être supervisés ou non supervisés et leurs applications
comprennent la reconnaissance de modèles ou la classification statistique.

• Ils fonctionnent avec un apprentissage à plusieurs niveaux de détails ou de


représentations des données. À travers les différentes couches on passe de paramètres de bas
niveau à des paramètres de plus haut niveau.

• Ces différents niveaux correspondent à différents niveaux d’abstraction des données.

• Ce nouveau champ d’étude a pour objectif d’avancer vers les capacités d’intelligence
artificielle. Ses architectures permettent aujourd’hui de donner du sens à des données sous
forme d’image, de son ou de texte.
Le système de Deep Learning est un système basé sur les réseaux de neurones artificiels,
qui est constitué d’un ensemble de couches cachées. Le mot profond (apprentissage profond)
vient de ce nombre des couches cachées, le point différencie entre un perceptron classique,
et un système de Deep Learning est que pour le premier les entrées des réseaux sont les
caractéristiques de l’image, mais pour le deuxième ce sont les pixels bruts de l’image
d’entrée. En effet dans un système de Deep Learning chaque couche est considérée comme
un niveau d’abstraction de l’image.

Exemple de fonctionnement de Deep Learning

La couche 1 est capable d’extraire des caractéristiques de niveau d’abstraction inférieure à celui
de la couche 2, tandis que la couche 3 a une qualité plus importante. À partir de ces
caractéristiques le système est capable de reconnaitre les objets avec un taux d’erreur petit.
4- Les différentes Architectures du Deep Learning

Page 25 sur 55
Bien qu’il existe un grand nombre de variantes d’architectures profondes. Il n’est pas toujours
possible de comparer les performances de toutes les architectures, car elles ne sont pas toutes
évaluées sur les mêmes ensembles de données. Le Deep Learning est un domaine à croissance
rapide, et de nouvelles architectures, variantes ou algorithmes apparaissent toutes les
semaines.

4.1- Les réseaux de neurones convolutifs

Convolution Neural Network (CNN) (réseaux de neurones convolutifs) sont un type de


réseau de neurones spécialisés en traitement de données ayant une topologie semblable à
une grille. Qui se sont avérés très efficaces dans des domaines tels que la reconnaissance et
la classification d’images et vidéos. CNN a réussi à identifier les visages, les objets,
panneaux de circulation et auto-conduite des voitures. Récemment, les CNN ont été efficaces
dans plusieurs tâches de traitement du langage naturel (telles que la classification des
phrases).
Dans le ML, un réseau convolutif est un type de réseau de neurones feedforward, il a
été inspiré par des processus biologiques. Il existe cinq (5) principales opérations illustrées
dans le CNN à savoir :
– La couche convolution.
– La couche Rectified Linear Unit.
– La couche pooling.
– La couche entièrement connectée.
– La couche de perte.
4.2- Réseau de neurones récurrents
Les humains ne commencent pas leurs pensées à zéro à chaque seconde. Lorsqu’ont un livre
on comprend chaque mot en fonction de la compréhension des mots précédents. On n’oublie
pas tout et recommençons à réfléchir à nouveau. Nos pensées ont une persistance.
RNN (les réseaux de neurones récurrents) traitent ce problème. Ce sont des réseaux avec des
boucles, permettant aux informations de persister.
L’idée derrière les RNN est d’utiliser des informations séquentielles. Dans un réseau neuronal
traditionnel, nous supposons que toutes les entrées (et les sorties) sont indépendantes les unes
des autres. Mais pour de nombreuses tâches, c’est une très mauvaise idée. Si on veut prédire le
prochain mot dans une phrase, il faut connaitre les mots qui sont venus avant. Les RNN sont
appelés récurrents car ils exécutent la même tâche pour chaque « élément d’une séquence, la
sortie étant dépendante des calculs précédents. Une autre façon de penser les RNN est qu’ils
ont une mémoire qui capture l’information sur ce qui a été calculé jusqu’ici. En théorie, les
RNN peuvent utiliser des informations dans des séquences arbitrairement longues, mais dans
la pratique, on les limite à regarder seulement quelques étapes en arrière.

Les RNN ont connu un grand succès dans de nombreuses taches de traitement du langage
naturel. Les plus grands exploits des RNN ont été accomplis par l’architecture LSTM, car ils
sont bien meilleurs pour capturer des dépendances à long terme. [10]

Page 26 sur 55
• Modélisation du langage et génération de texte.

• Traduction automatique.

• La reconnaissance vocale description des images.

IV. Les algorithmes standards d’analyse de texte

A. Text Minning

Elle désigne un ensemble de traitements informatique consistant à extraire des connaissances


selon un critère d’après un texte qui va être utilisé dans l’apprentissage des
Algorithmes. Cette pratique repose sur la technologie de ” Natural Language Processing “
(traitement naturel du langage), permettant aux machines de comprendre et de traiter le langage
humain automatiquement. L’intelligence artificielle est désormais capable de classifier
automatiquement les textes par sentiment, par sujet ou par intention. Un algorithme de Text
Mining est par exemple capable de passer en revue les commentaires sur un produit pour
déterminer s’ils sont principalement positifs, neutres ou négatifs, ce qui est justement le but de
notre projet.
Ainsi, les entreprises sont en mesure d’analyser des ensembles de données larges et complexes
de façon simple, rapide et efficace

B. Natural language processing (NLP)


Le traitement du langage naturel(NLP) est l'un des domaines de la programmation où le langage
naturel est traité par le logiciel dans lequel on utilise le texte comme input. Et cela nécessite
beaucoup de nettoyage et de traitement avant que les données puissent être utilisées pour
l'analyse.et pour répondre cette problématique on fait recours à des méthodes de traitement de
données dont on cite :
Tokenization
Part of speech tagging (POS)
Stemming/ lemmatization

V. Critère de choix d’apprentissage


Dans le développement, un grand nombre de facteurs influent sur le choix de l’approche en ML
la mieux adaptée à une tache donnée. Et, comme chaque problème en ML est différent, décider
de la technique à utiliser est un processus complexe. Il faut :
❖ Définir l’objectifs :
Quelle tache souhaitez-vous effectuer ?
Le problème est-il récurrent et défini ?
L’algorithme devra-t-il prédire de nouveaux problèmes ?

❖ Evaluer les données :


Sont-elles étiquetées ou non ?
De quel
types sont les données : images, textes, audios…
Page 27 sur 55
Existe-t-il des connaissances d’experts pour soutenir un étiquetage
supplémentaire c’est-à-dire est ce dont l’algorithme a besoin d’une intervention
humain ?
Les données ont-elles un volume important ? Quelles sont les nombres de
paramètres liés à ces données ?
Cela aidera à déterminer quelle approche d’apprentissage doit être utilisée (prédiction,
recommandation, régression, clustering…).
❖ On doit Passer en revue les algorithmes disponibles susceptibles de convenir au problème.
❖ Etudier les applications réussies du type d’algorithme sur des problèmes similaires.

Modèle Type d’apprentissage Méthode d’apprentissage


Machine learning : Apprentissage supervisé : utilisé Méthode de régression : utilisé pour des
Données structurées pour de données étiquetées. Il est données quantitatives
basé sur des théories statistiques et Méthode de classification : utilisé pour de
probabilités pour faire des données qualitatives
Deeplearning : prédictions.
utilisé pour de
grandes quantités de Clustering : utilisé pour le regroupement
données, plus Apprentissage non supervisé : d’une similitude
souvent non utilisé pour des données non
structurées. Le DL étiquetées. Il est basé sur des Modèle génératif :
est basé sur le réseau théories statistiques et probabilités Reduction de la dimensionnalité : utilisé
de neurone pour faire de recommandations lorsque le nombre de paramètres des
données est très important.
Apprentissage semi supervisé :
une partie de données étiquetées et
une partie non étiquetée.
Apprentissage par renforcement

D’après le critère de choix, nous avons fait un choix judicieux d’utiliser l’algorithme CNN pour
concevoir notre modèle de détection de voiture, et les algorithmes suivantes : Naives bayes,
SVM et la régression logistic pour concevoir le modèle de classification de la polarité des tweets
Nos choix sont justifiés par la grande précision qu’offrent ces algorithmes.
VI. Approche mathématique des modèles choisis

1) Naïves Bayes Classifier

La classification naïve bayésienne est un type de classification bayésienne probabiliste simple


basée sur le théorème de Bayes avec une forte indépendance (dite naïve) des hypothèses. Elle
met en œuvre un classifieur bayésien naïf, ou classifieur naïf de Bayes, appartenant à la famille
des classifieurs linéaires qui sont une famille d'algorithmes de classement statique.
Naive Bayes est un modèle de probabilité conditionnelle, basé sur le théorème de Bayes, qui
stipule que la probabilité conditionnelle est donnée par :

Page 28 sur 55
Avec :
Ck : le résultat qu’on souhaite prédire ; dans notre cas il s’agit du sentiment par rapport à une
phrase donnée
X : un ensemble de caractéristiques de l’élément qu’on souhaite classifier. Par exemple on peut
avoir
X = [x1, x2, ….., xn] avec Xi l’ensemble des mots constituant la phrase à classifier
Ainisi la formule devient :

❖ Avantages
▪ le Naive Bayes Classifier est très rapide pour la classification : en effet les
calculs de probabilités ne sont pas très coûteux.
▪ La classification est possible même avec un petit jeu de données
❖ Inconvénients
▪ l’algorithme Naive Bayes Classifier suppose l’indépendance des variables :
C’est une hypothèse forte et qui est violée dans la majorité des cas réels.
Contre intuitivement, malgré la violation de la contrainte d’indépendance des variables, Naïve
Bayes donne de bons résultats de classification.
Il existe 3 variantes d’algorithme Naïve Bayes. Les 3 types sont énumérés ci-dessous: -
✓ Gaussian Naïve Bayes
✓ Multinomial Naïve Bayes
✓ Bernoulli Naïve Bayes

On a pour la pour cette phase de test utilisé le Multinomial Naïve Bayes sur le jeu de données
sentiment140 qui a été divisé en 80% pour l’entrainement et 20% pour l’évaluation

La formule utilisée pour le Multinomial Naïve Bayes est la suivante :

Page 29 sur 55
Avec Xi le mot à analyser et Wj la catégorie dans laquelle on pense que le mot appartient
On a obtenu une classification avec une précision de 76,14%

Figure: La précision de l’algorithme Naïve Bayes


2) Logistic Regression

Malgré son nom de « régression » logistique, cet algorithme a été conçu à des fin de
classification et non de régression.
La régression logistique ou modèle logit est un modèle de régression binomiale. Comme pour
tous les modèles de régression binomiale, il s'agit de modéliser au mieux un modèle
mathématique simple à des observations réelles nombreuses. En d'autres termes d'associer à un
vecteur de variables aléatoires X= (X1,X2,…,Xn) une variable aléatoire binomiale
génériquement notée Y.
Dans notre cas Y représente le sentiment à prédire et X la phrase dont on veut prédire le
sentiment avec X1,X2,…,Xn les mots qui constituent cette phrase.
La régression logistique repose sur l’hypothèse fondamentale suivante, où l'on reconnaît la
mesure nommée « évidence »

La spécification ci-dessus peut être écrite de manière différente. On désigne par le terme LOGIT

de
C’est à dire la probabilité qu’on ait Y = 1 (positif dans notre cas) sachant qu’on a le texte X,
l’expression suivante :
Page 30 sur 55
Avec :
• Xi le nombre de fois qu’on a observé le mot dans notre texte
• bi représente en quelque sorte le poids de chaque mot ; Ce sont ces paramètres/poids
qu’on cherche à calculer pour obtenir notre fonction de prédiction

Le calcul du poids bi d’un mot Xi se fait comme suit :


bi = log(npos / nneg) - log(Npos / Nneg) = log[(npos / Npos)/ (nneg / Nneg)]
Avec n le nombre d’occurrence du mot et N le nombre total de mots.
Après transformation de l’équation ci-dessus, nous obtenons :

❖ Avantages :
▪ La régression logistique est plus facile à mettre en œuvre, à interpréter et très
efficace à entraîner.
▪ Il peut facilement s’étendre à plusieurs classes (régression multinomiale) et une
vue probabiliste naturelle des prédictions de classe.
▪ La régression logistique est moins encline au surajustement (Over-Fitting), mais
elle peut sur-ajuster dans les ensembles de données de grande dimension. On
peut envisager des techniques de régularisation (L1 et L2) pour éviter le
surajustement dans ces scénarios.
❖ Inconvénients :
▪ La principale limitation de la régression logistique est l’hypothèse de
linéarité entre la variable dépendante et les variables indépendantes.
▪ Il est difficile d’obtenir des relations complexes en utilisant la régression
logistique. Des algorithmes plus puissants et compacts tels que les réseaux
de neurones peuvent facilement surpasser cet algorithme.

Après la phase de test , on obtient une classification avec une précision de 77.125%.

Figure : La précision de l’algorithme Logistic Regression


3) Machine à Vecteurs de Support (SVM)

Page 31 sur 55
Les machines à vecteurs de support ou séparateurs à vaste marge (en anglais Support Vector
Machine, SVM) sont un ensemble de techniques d'apprentissage supervisé destinées à résoudre
des problèmes de discrimination et de régression. Les SVM sont une généralisation des
classifieurs linéaires.
Les SVM peuvent être utilisés pour résoudre des problèmes de discrimination, c'est-à-dire
décider à quelle classe appartient un échantillon, ou de régression, c'est-à-dire prédire la
valeur numérique d'une variable.
❖ Utilisations SVM
Le SVM est utilisé pour les problèmes de classification de texte telles que l’attribution de
catégorie, la détection du spam ou encore l’analyse des sentiments. Ils sont également
couramment utilisés pour les problèmes de reconnaissance d’image, particulièrement en
reconnaissance de forme et en classification de couleur. SVM joue également un rôle essentiel
dans de nombreux domaines de la reconnaissance manuscrite des symboles, tels que les services
d’automatisation postale.

❖ Les Avantages
- Sa grande précision de prédiction
- Fonctionne bien sur de plus petits data sets
- Ils peuvent être plus efficace car ils utilisent un sous-ensemble de points
d’entraînement.

❖ Les inconvénients
- Ne convient pas à des jeux de données plus volumineux, car le temps
d’entraînement avec les SVM peut être long
- Moins efficace sur les jeux de données contenant du bruits et beaucoup d’outliers

Après la phase de test, on obtient une classification avec une précision de 77.92%.

Figure : La précision de l’algorithme Support Vector Machine

4) L’algorithme CNN
Un réseau de neurones convolutifs (Convolutional Neural Network - CNN) est un type de
réseau de neurones profonds (deep learning) qui est souvent utilisé dans les tâches de
reconnaissance d'images. Il a été inspiré par le fonctionnement du système visuel humain, où le
cerveau décompose une image en caractéristiques visuelles hiérarchiques telles que des bords,
des formes et des textures.
Le principe de base des CNN est d'appliquer une série d'opérations de convolution sur une
image d'entrée, suivies de couches de pooling et de couches entièrement connectées pour la

Page 32 sur 55
classification. La couche de convolution extrait des caractéristiques importantes de l'image
d'entrée en appliquant un filtre (noyau) sur l'image. Le filtre parcourt l'image en appliquant une
opération de multiplication à chaque position, qui est ensuite sommée pour former un seul
nombre, appelé activation. Ensuite, un biais est ajouté à cette activation pour obtenir la valeur
de sortie de la convolution. Les filtres sont choisis pour capturer des caractéristiques spécifiques
telles que les bords, les coins, les motifs ou les textures.
Après chaque couche de convolution, il est courant d'appliquer une couche de pooling qui réduit
la taille de la représentation de l'image en échantillonnant le signal de sortie de la convolution
à l'aide d'une fonction de réduction (par exemple, la moyenne ou le maximum). Le pooling
permet de réduire la complexité du modèle, de supprimer des informations inutiles et
d'améliorer la robustesse aux variations de l'image.

Enfin, les sorties de la dernière couche de pooling sont connectées à une couche entièrement
connectée qui peut être utilisée pour la classification (par exemple, pour prédire si une image
représente une voiture ou non). La couche entièrement connectée est une couche de neurones
classique où chaque neurone est connecté à tous les neurones de la couche précédente. Cette
couche a pour rôle de transformer la sortie des couches de convolution en un vecteur de
probabilités qui indique la classe d'objet la plus probable pour l'image d'entrée.
Les CNN sont souvent entraînés à l'aide d'un grand ensemble de données étiquetées pour prédire
la classe des images non vues auparavant. L'optimisation du modèle est effectuée par
rétropropagation du gradient qui ajuste les poids des filtres et des biais dans le réseau de
neurones en fonction de l'erreur entre les prédictions du modèle et les étiquettes réelles des
données d'entraînement. Les architectures de CNN sont généralement très profondes, ce qui
leur permet d'apprendre des caractéristiques de plus en plus abstraites à mesure que l'on se
rapproche de la couche de sortie, ce qui peut améliorer considérablement la performance de la
classification d'images.
VII. Génération du code python permettant de concevoir un modèle de détection de
voiture

A. Présentation de différentes parties du programme


Un algorithme de ML constitue 08 parties principaux et des parties secondaires. Les 08 parties
principaux sont :
Implémentation des bibliothèques
Création du chemin d’accès aux données
ici nous allons ouvrir un chemin d’accès vers le(s) fichier(s) ou est stocker notre base de
données à traiter.
Chargement et structuration de données (prétraitement)
Cette partie implique le chargement des données, puis la conversion de ces données en un
format lisible par OpenCV. Cela peut également inclure le redimensionnement, la
normalisation, l'augmentation de données et d'autres techniques de prétraitement pour améliorer
la qualité des données et faciliter l’accomplissement de la tache par le modèle.

Page 33 sur 55
Convertir les étiquettes en catégoriels
La conversion des étiquettes en catégorielles est une étape importante dans la préparation des
données pour l'entraînement d'un modèle de détection de voitures. Cette étape consiste à
transformer les étiquettes de texte en vecteurs numériques binaires qui peuvent être compris
par le modèle.
Par exemple, si nous avons deux classes de véhicules : "voiture" et "camion", nous pouvons
utiliser la fonction to_categorical() de la bibliothèque Keras pour convertir ces étiquettes en
vecteurs binaires. La classe "voiture" sera représentée par le vecteur [1,0] et la classe
"camion" sera représentée par le vecteur [0,1].
Cette conversion permet au modèle de mieux comprendre les étiquettes et de les traiter plus
facilement. Elle peut également améliorer les performances du modèle en lui permettant de
mieux discriminer entre les différentes classes de véhicules.
Séparation des données :
Elle consiste à diviser l'ensemble des données en deux parties distinctes :
• Les données d'entraînement : elles sont utilisées pour entraîner le modèle, c'est-à-dire
pour ajuster les poids des différents paramètres du modèle afin de minimiser l'erreur
de prédiction. Les données d'entraînement doivent être représentatives de l'ensemble
des données pour que le modèle apprenne à généraliser correctement.
• Les données de test : elles sont utilisées pour évaluer les performances du modèle une
fois qu'il a été entraîné. Les données de test ne doivent pas avoir été utilisées pendant
l'entraînement, sinon le modèle risque de sur-apprendre les données et de ne pas
généraliser correctement. Les données de test permettent de mesurer la capacité de
généralisation du modèle sur de nouvelles données.
En séparant les données en deux ensembles distincts, on peut s'assurer que le modèle ne sera
pas biaisé par les données d'entraînement et qu'il sera capable de généraliser correctement sur
de nouvelles données. Cela permet également de mesurer les performances du modèle de
manière fiable, en utilisant des données qui n'ont pas été utilisées pour l'entraînement.
Conception du modèle
C’est là où nous allons créer notre modèle d’apprentissage selon les fonctions à effectuer par
le modèle et l’algorithme choisit.
Evaluation de performance
C’est une étape importante dans la conception et l'entraînement de modèles de Deep Learning.
Elle permet de mesurer la qualité de la prédiction du modèle en utilisant des métriques
appropriées telles que l'exactitude (accuracy), la précision (precision), le rappel (recall), le
score F1 (F1-score) ou encore la perte (loss).
L'évaluation de performance permet de déterminer si le modèle est capable de généraliser les
prédictions sur des données qu'il n'a jamais vu auparavant, c'est-à-dire sur des données de test.
Si le modèle a une performance élevée sur les données d'entraînement mais une performance
faible sur les données de test, cela indique un surapprentissage (overfitting) du modèle sur les
données d'entraînement.

Page 34 sur 55
L'évaluation de performance permet également de comparer différents modèles et de choisir
celui qui a la meilleure performance sur les données de test. Cela permet d'améliorer la qualité
de la prédiction sur de nouvelles données et d'optimiser les paramètres du modèle pour de
meilleures performances.
Prédiction d’une nouvelle donnée

Notre code programme est composé de 11 parties, c’est -à-dire les 08 parties principaux plus
03 parties secondaires. Les 03 parties secondaires sont :
❖ S’assurer que les images ne sont pas endommagées ou corrompues
Il est important de s'assurer que les images utilisées dans un programme de détection de
voiture ne sont pas endommagées ou corrompues pour plusieurs raisons :
• Précision des modèles : Si les images sont endommagées ou corrompues, cela
peut affecter la précision des modèles de détection de voiture. Les modèles
peuvent apprendre à identifier des caractéristiques incorrectes ou à ne pas
reconnaître les voitures du tout, ce qui peut entraîner des résultats imprécis.
• Erreurs de traitement : Les images endommagées ou corrompues peuvent
également causer des erreurs lors de la lecture ou du traitement des données.
Cela peut entraîner des erreurs lors de la mise en œuvre des modèles et de
l'évaluation de leur performance.
• Qualité des données : Les images endommagées ou corrompues peuvent fausser
la qualité des données, ce qui peut affecter la qualité globale de l'ensemble de
données utilisé pour l'entraînement et l'évaluation des modèles. Il est donc
important de s'assurer que les images sont de haute qualité et en bon état avant
de les utiliser dans un programme de détection de voiture.

❖ Visualisation de données
la visualisation des données dans un programme code python pour la détection de voiture sert
à comprendre et à analyser les données d'images qui seront utilisées pour entraîner le modèle
de détection de voiture. La visualisation peut aider à détecter des erreurs dans les données,
telles que des images corrompues ou endommagées, des images avec une qualité insuffisante
ou des images qui ne correspondent pas au format requis.
En outre, la visualisation des données peut aider à comprendre les caractéristiques des images,
telles que les formes, les couleurs, les textures, etc. Elle peut également aider à identifier les
classes d'images les plus représentatives dans les données, ainsi que les classes moins
représentatives ou moins équilibrées. Cette information peut être utilisée pour ajuster les
paramètres du modèle et pour améliorer les performances de détection de voiture.
Enfin, la visualisation des données peut aider à identifier les erreurs de prédiction du modèle
en affichant les images mal prédites et en examinant les motifs communs qui ont conduit à ces
erreurs. Cette information peut être utilisée pour ajuster le modèle et pour améliorer les
performances de détection de voiture.
❖ Définition des callbacks

Page 35 sur 55
Dans un programme de deep learning, les callbacks sont des fonctions qui sont appelées à des
moments spécifiques de l'entraînement du modèle. Ces fonctions sont utiles pour effectuer
certaines tâches pendant l'entraînement, telles que la sauvegarde des poids du modèle, l'arrêt
de l'entraînement si la performance ne s'améliore plus, ou la modification du taux
d'apprentissage.
Par exemple, le callback ModelCheckpoint permet de sauvegarder les poids du modèle à
chaque époque d'entraînement ou lorsqu'une amélioration significative de la performance est
atteinte. Le callback EarlyStopping permet d'arrêter l'entraînement si la performance du
modèle ne s'améliore plus pendant un certain nombre d'époques consécutives. Le callback
ReduceLROnPlateau permet de réduire le taux d'apprentissage si la performance du modèle
ne s'améliore plus pendant un certain nombre d'époques consécutives.
Ces callbacks permettent d'optimiser le processus d'entraînement et d'améliorer la
performance du modèle en évitant par exemple le sur-apprentissage (overfitting) ou en
ajustant automatiquement le taux d'apprentissage en fonction de la performance du modèle.
B. Programme implémenter
✓ Implémentation des bibliothèques

import os # bibliothèque pour effectuer des opérations sur le système d'exploitation (comme la manipulation de fichiers
et de répertoires).

import numpy as np # bibliothèque pour le calcul numérique en Python (notamment pour manipuler des tableaux et des
matrices).

import pandas as pd # bibliothèque pour la manipulation et l'analyse de données en Python (notamment pour manipuler
des DataFrames).

import matplotlib.pyplot as plt # bibliothèque pour la visualisation de données en Python (notamment pour tracer des
graphes et des diagrammes).

Page 36 sur 55
# des bibliothèques nécéssaires pour le chargement et la structuration de données

import tqdm # bibliothèque pour afficher des barres de progression lors de l'exécution de boucles ou de fonctions longues

import cv2 # bibliothèque OpenCV (Open Source Computer Vision) pour le traitement d'images et de vidéos.

from skimage.transform import resize # fonction de la bibliothèque scikit-image pour redimensionner des images.

from tensorflow.keras.models import Model

from tensorflow.keras.models import load_model # fonction de Keras pour charger un modèle enregistré.

# des bibliothèques nécéssaires pour convertir les étiquettes en catégorielles

from tensorflow.keras.utils import to_categorical # fonction de la bibliothèque Keras pour convertir des données
catégorielles en vecteurs binaires.

from sklearn.preprocessing import LabelEncoder # classe de la bibliothèque scikit-learn pour encoder les labels catégoriels
en nombres.

from sklearn.utils import shuffle # fonction de la bibliothèque scikit-learn pour mélanger les données.

from sklearn.model_selection import train_test_split # fonction de la bibliothèque scikit-learn pour séparer les données en
ensembles d'entraînement et de test.

import seaborn as sns # bibliothèque pour la visualisation de données en Python (notamment pour créer des visualisations
statistiques plus complexes).

# des bibliothèques nécéssaires pour la conception du modèle

import tensorflow as tf # bibliothèque de Deep Learning open source développée par Google.

from tensorflow import keras # interface de haut niveau pour la création de modèles de Deep Learning basés sur
TensorFlow.

from keras import Input, Model, Sequential # classes de Keras pour définir les modèles de Deep Learning.

from tensorflow.keras.layers import Flatten,Dense,Conv2D,MaxPooling2D,GlobalAveragePooling2D,Dropout # classes


de Keras pour définir les couches du modèle de Deep Learning.

from tensorflow.keras import layers # module de Keras pour définir les couches du modèle de Deep Learning.

from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping, ReduceLROnPlateau # classes de rappel


(callback) de Keras pour améliorer l'apprentissage du modèle de Deep Learning.

from tensorflow.keras.preprocessing.image import ImageDataGenerator # classe de Keras pour générer des lots (batch)
d'images pour l'entraînement du modèle.

Page 37 sur 55
from tensorflow.keras.utils import plot_model # fonction de Keras pour afficher une représentation visuelle d'un modèle
de Deep Learning.
✓ lister les fichiers dans le répertoire des données et création du chemin d'accès

✓ s'assurer que les images ne sont pas endommagées ou corrompues

Page 38 sur 55
✓ chargement et structuration des données

✓ convertir les étiquettes en catégorielles

Page 39 sur 55
✓ séparation de données test et données d'entrainement

✓ visualisation de données

✓ conception du modèle

✓ définir les callbacks

Page 40 sur 55
✓ matrice de confusion

✓ évaluation des performances

Page 41 sur 55
✓ prédiction d'une nouvelle donnée

Page 42 sur 55
VIII. Génération du code python permettant concevoir le modèle de classification de
la polarité des tweets

Dans cette section, nous allons essayer de voir en détails les différentes phases qui entrent dans
le processus du fonctionnement de notre application, en mettant en lumière les différents outils
mis en œuvre dans la partie frontEnd comme dans la partie backEnd
i. Schématisation des étapes du projet

Figure : Les étapes détaillées de réalisation du projet


Page 43 sur 55
ii. Data Gathering / obtention des données
Il s’agit de la phase d’obtention des tweets à analyser. Pour cela nous utilisons la bibliothèque
snscape de python. snscape est un scrapper pour les services de réseaux sociaux (SNS). Il
scrappe des éléments tels que les profils d’utilisateurs, les hashtags ou les recherches et renvoie
les éléments découverts, par exemple les messages pertinents.
Les services suivants sont actuellement pris en charge :
• Facebook : profils d’utilisateurs, groupes et communautés (alias publications de
visiteurs)
• Instagram : profils d’utilisateurs, hashtags et emplacements
• Mastodon: profils d’utilisateurs et toots (single ou thread)
• Reddit : utilisateurs, subreddits et recherches (via Pushshift)
• Telegram: chaînes
• Twitter : utilisateurs, profils d’utilisateurs, hashtags, recherches, tweets (fil unique ou
environnant), publications de liste et tendances
• VKontakte: profils utilisateur
• Weibo (Sina Weibo): profils d’utilisateurs
Nous avons préféré snscrape par rapport à d’autres outils comme Tweepy qui est l’autre
bibliothèque de python la plus utilisée pour l’obtention des Tweets car :
- Snscrape est plus facile à utiliser que Tweepy
- Snscrape permet de récupérer de facon plus ou moins illimitée les tweets alors que avec
Tweepy on est soumis à plusieurs restrictions notamment le nombre de Tweets à
récupérer par requête.

Nous pouvons spécifier dans notre requête un certains nombre de paramètres afin de récupérer
des tweets satisfaisant à certains critères spécifiques comme des mots clés, des dates, des users
….
Un tweet brut récupéré avec snscrape (de même qu’avec Tweepy) contient un grand nombre
d’informations tels que l’id de l’utilisateur qui a fait le tweet, son username, la date de création
du tweet, le contenu du tweet, la zone géographique, … , autant d’informations dont il faudra
extraire, stocker dans un dataframe à l’aide de la bibliothèque Pandas, traiter et préparer à
l’analyse, chose que nous verrons dans la section suivante.
Nous avons créé le module Getter qui contient la fonction get_tweets permettant de retourner
les tweets

Page 44 sur 55
❖ Aperçu du code :

Figure : Aperçu du code d’obtention des données

❖ Schématisation du fonctionnement

iii. Data cleaning / Nettoyage de données


Dans cette étape il s’agit de traiter les textes des tweets en enlevant des tweets tout ce qui ne
nous sera pas utile pour nos analyses. Il s’agit entre autres de :
- Les caractères spéciaux
- Les noms d’utilisateurs et les mots contenant la mention @
- Les liens / urls
- Les stopwords qui sont des mots commun n’apportant aucune valeur ajouté pour
l’analyse d’un tweet tels que « moi , toi…», «je, tu, … », « ne, pas … », etc.
- Tokenisation des tweets, c’est-à-dire diviser les tweets en un tableau de mots
- Stemming/ lemmatization de chaque mots
- Assemblage des mots pour retourner un nouveau texte complet
Page 45 sur 55
Nous utilisons pour cela un certain nombre de librairies python pour le traitement de texte tels
que nltk, string, re, html.
Nous avons pour cette partie créé le module Preprocess qui contient differentes fonctions de
nettoyages :
- remove_useless_things()
- tokenize_tweet()
- remove_stops()
- lemmatizing()
- process_tweet() qui est la fonction principale combinant toutes les autres fonctions pour
nous retourner un tweet nettoyé et prêt à être analysé

❖ Apercu du code des fonctions :

Page 46 sur 55
Figure : Aperçu du code Data Cleaning

iv. Analyse des données


Dans cette partie, nous allons passer à l’analyse des tweets/ du tweets récupérés et nettoyés.
Tout cela se passe au niveau du serveur créé grâce à Flask
Nous donnons la possibilité de pouvoir choisir entre les 3 meilleurs algorithmes issues de la
phase d’apprentissage des modèles ( voir partie II section 2).
L’obtention et le prétraitement étant déjà faits, nous allons ensuite chargé le modèle déjà
entrainé que nous avons déjà sauvegardé grâce à joblib de sklearn.externals, et aussi le
vocabulaire. Une fois le modèle chargé, on passe à la vectorization du tweet, c’est-à-dire le
transformer en données numériques pour les passer au modèle pour les prédictions des
sentiments.
Nous procédons ensuite aux comptages des tweets positifs et négatifs grâce aux fonctionnalités
de pandas et le serveur retourne ensuite un json avec en attribut le sentiment et comme valeur
le nombre de tweets trouvés correspondant à la catégorie.

Page 47 sur 55
Nous avons pour cette partie créé le serveur app dans le module app avec Flask s’excécutant à
l’adresse « http://127.0.0.1/ » qui continent les fonctions analyse() pour un ensemble de tweets
et la fonction get_polarity () lorsqu’il s’agit d’analyser un seul tweet.
Apercu du code

Page 48 sur 55
v. Visualisation des résultats
La visualisation des résultats se fait au niveau de l’interface graphique avec Angular grâce à
l’un des nombreux modules d’Angular permettant la visualisation de données sous différentes
formes. Dans notre cas, nous avons choisi d’utiliser chart js pour sa simplicité, pour les
différentes options qu’il offre en termes de type de graphique, et pour la qualité de son rendu.
(Voir la section Interface graphique)

vi. L’interface graphique


Objectif de l’interface
La dernière étape du projet a consisté à réaliser une interface graphique en utilisant Angular,
plus adaptée et facile à manipuler pour l’utilisateur, dans laquelle ce dernier peux choisir entre
analyser à partir des mots clés ou à partir d’un simple tweet, et éventuellement le résultat sera
affiché sous un graphique statique en bâtons et un diagramme circulaire, ou tout simplement un
champ de texte indiquant la polarité en cas de saisi de tweet.
Page d’accueil
Il s’agit en quelque sorte de notre page d’accueil qui est la première page affichée lors du
lancement de l’application.
Cette page contient le titre de l’application, une barre de navigation contenant 2 boutons qui
permettent d’accéder soit à la page actuelle, ou à la page d’analyse d’un simple tweet. Notons
que toutes les pages contiennent ces 2 éléments.
Nous avons 4 champs dans lesquels nous pouvons définir les éléments de notre analyse :
- Un champ obligatoire pour la saisie des mots clés, séparés par une virgule
- Un champ optionnel pour saisir le début de la période à partir de laquelle on veut évaluer
les tweets
- Un autre champ optionnel pour saisir la fin de la période dans laquelle on veut évaluer
les tweets
- Un champ obligatoire où l’utilisateur est invité à choisir entre les modèles les plus
performants d’analyse de texte

L’utilisateur peut ensuite cliquer sur le bouton « lancer l’analyse » qui permettra de démarrer
le processus d’analyse
Une fois le bouton cliqué une page s’affichera avec un loader permettant à l’utilisateur de savoir
que le processus d’analyse est en cours.

Page 49 sur 55
Figure : Page d’accueil et analyse à partir des mots clés.

Figure : Page d’attente des résultats

Page de résultats
Il s’agit de la page où seront affichés les résultats issus du processus dans la mesure où tout
s’est bien passé. On peut y retrouver 2 types de diagrammes permettant de décrire explicitement
les résultats obtenus :
- Un graphe de barres où l’on peut voir le en termes de chiffres le nombre de tweets
positifs (colonne bleu) et le nombre de tweets négatifs (colonne rouge) à l’issue du notre
traitement
- Un graphe circulaire où l’on peut voir la proportion de chaque catégories parmi
l’ensemble des tweets évalués

Page 50 sur 55
Figure: Page d’affichage des résultats
Page d’erreur
Il s’agit d’une page qui s’affiche dans la mesure où une erreur est survenu au cours de l’analyse
notamment avec le serveur (problème d’accès au serveur, problème de retour de données,…)

Figure : Page erreur

Page No-Results
Il s’agit d’une page qui s’affichera lorsque le processus s’est bien passé mais que aucun résultat
ne correspond aux paramètres spécifiés, et donc qu’aucun tweet n’a été analysé

Page 51 sur 55
Figure: Page no-results

Page d’analyse d’un simple tweet


Il s’agit d’une page sur laquelle l’utilisateur pourra faire l’évaluation d’un simple tweet afin de
voir sa polarité (soit positif ou négatif).
La page dispose d’un grand champ de saisie obligatoire où l’utilisateur pourra entrer son tweet
à analyser avec une longueur ne dépassant pas 140 caractères afin de respecter les standards de
twitter.
Une fois le tweet saisi, l’utilisateur pourra ensuite cliquer sur le bouton « evaluer » afin de
lancer le processus d’évaluation du tweet et afficher le résultat.

Figure : Page d’analyse à partir d’un tweet (cas positif)

Page 52 sur 55
Figure: Page d’analyse à partir d’un tweet (cas négatif)

Page 53 sur 55
Conclusion
Ce projet nous aura permis de nous familiariser avec les notions de Natural Langage Processing,
et de mieux comprendre les principes de fonctionnement de nombreux algorithmes utilisés en
machine Learning et Deep Learning.
L’analyse de sentiment est de nos jours utile dans de nombreux domaines. Grace à elle,
les entreprises peuvent plus facilement gérer la réputation de leurs marques en analysant les
opinions d’internautes par rapport à leurs produits, améliorant ainsi l’expérience client ;
permettent d’évaluer l’efficacité des campagnes de communications.
Les entreprises commencent à s’intéresser de plus près à cet indicateur, l’analyse de
sentiment continue d’évoluer rapidement. Les grandes évolutions se feront à la fois sur des
résultats de plus en plus précis, en prenant en compte des notions comme le scepticisme ou
l’anxiété, mais surtout sur une meilleure granularité des résultats.
Ainsi que nous avons discuté des notions fondamentales des réseaux de neurones en générale et des
réseaux de neurones convolutifs en particulier. Nous avons introduit ces réseaux de neurones convolutifs
en présentant les différents types de couches utilisées dans la classification dans les images.

Les paramètres du réseau sont difficiles à définir a priori. C’est pour cette raison que nous avons
défini différents modèles avec des architectures différentes afin d’obtenir des meilleurs résultats en
termes de précision et d’erreur.

Page 54 sur 55
Bibliographies
• https://monkeylearn.com/blog/machine-learning-algorithms/
• https://towardsdatascience.com/5-simple-ways-to-tokenize-text-in-python-
92c6804edfc4
• https://mrmint.fr/naive-bayes-classifier
• https://fr.wikipedia.org/wiki/Classification_na%C3%AFve_bay%C3%A9sienne
• Régression logistique — Wikipédia (wikipedia.org)
• Introduction à la régression logistique - DellaData
• pratique_regression_logistique.pdf (univ-lyon2.fr)
• https://fr.acervolima.com/avantages-et-inconvenients-de-la-regression-
logistique/#:~:text=La%20principale%20limitation%20de%20la,association%20(posit
if%20ou%20n%C3%A9gatif).
• https://www.analyticsvidhya.com/blog/2021/06/understanding-random-forest/
• https://en.wikipedia.org/wiki/Random_forest#Preliminaries:_decision_tree_learning
• https://fr.wikipedia.org/wiki/Arbre_de_d%C3%A9cision_(apprentissage)#Avantages_
et_inconv%C3%A9nients_de_la_m%C3%A9thode
• https://www.lucidchart.com/pages/fr/arbre-de-decision
• https://www.lemagit.fr/conseil/Machine-Learning-les-9-types-dalgorithmes-les-plus-
pertinents-en-entreprise
• https://www.journaldunet.fr/web-tech/guide-de-l-intelligence-artificielle/1501879-
machine-a-vecteurs-de-support-svm-definition-et-cas-d-usage/
• https://dataanalyticspost.com/Lexique/arbre-de-decision
• https://www.youtube.com/watch?v=SGmMIEMJYwg&t=2s
• Chart.js | Chart.js (chartjs.org)
• Angular
• Wikipedia
• Youtube

Page 55 sur 55

Vous aimerez peut-être aussi