Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !
  1. Livres et vidéos
  2. Intelligence artificielle vulgarisée
  3. Des statistiques pour comprendre les données
Extrait - Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
Extraits du livre
Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
2 avis
Revenir à la page d'achat du livre

Des statistiques pour comprendre les données

Ce que nous allons découvrir et les prérequis

En ce qui concerne le Machine Learning, tout est mathématique ou plus particulièrement tout est statistique. En effet, les algorithmes d’apprentissages sont fondés sur diverses approches statistiques permettant aux machines "d’apprendre", de réaliser des prédictions et de résoudre des problèmes.

Au-delà de ces prédictions, les statistiques sont également utilisées dans la phase de préparation des données d’apprentissage et de la compréhension de celles-ci.

Dans ce chapitre, nous allons aborder les notions de base des statistiques qui vous permettront de mieux comprendre les jeux de données que vous rencontrerez tout au long de cet ouvrage, mais aussi dans vos différents projets personnels consacrés au Machine Learning. Ces notions permettront également de comprendre le fonctionnement des algorithmes que nous utiliserons à travers les cas pratiques jalonnant ce livre.

Mais ne vous inquiétez pas. Ce chapitre n’a pas pour objectif de vous embêter avec un tas de formules complexes. Nous resterons à un niveau de compréhension accessible à tous et les notions que nous aborderons seront illustrées à l’aide d’exemples.

Prérequis nécessaires pour bien aborder ce chapitre : avoir...

Les statistiques, un outil d’aide à la compréhension des données

Dans les chapitres à venir, nous serons amenés à analyser des données d’apprentissage afin de permettre à notre machine d’apprendre à résoudre un problème par le biais de prédictions. Comme nous le verrons, pour que la machine puisse apprendre, il ne suffit pas de choisir une collection d’observations, de choisir un algorithme d’apprentissage et de cliquer sur un bouton en espérant obtenir une bonne prédiction. Nous serons amenés à comprendre par nous-mêmes ce jeu d’observations pour en sélectionner les informations pertinentes et importantes. Pour réaliser cette tâche, les statistiques nous seront d’une grande aide.

Bien entendu, en ce qui concerne la programmation, nous utiliserons par la suite des modules Python spécifiques comportant toutes les fonctionnalités d’analyse nécessaires. Mais dans ce chapitre, nous vous proposons d’agrémenter chaque notion statistique par quelques lignes de code "faites maison", c’est-à-dire dans utilisation de librairie spécifique. Cela permet entre autres de mieux comprendre la logique mathématique qui se cache derrière chaque notion, mais aussi d’approfondir la connaissance et l’usage du langage Python....

Une série de notes en guise d’étude de cas

Nous allons utiliser un cas d’étude mainte fois utilisé lors de la présentation des notions de base en statistiques : la description et l’analyse d’une série de notes obtenues par un étudiant. À la fois simple et parlant à tous, car se basant sur notre expérience, ce cas d’étude va nous permettre de comprendre les notions nécessaires à la compréhension des données et applicables à des cas plus complexes que nous aurons à traiter dans les chapitres suivants.

Voici le contexte : vous êtes actuellement en formation pour devenir expert(e) en intelligence artificielle et vous venez d’obtenir vos notes trimestrielles que voici :

3,19,10,15,14,12,9,8,11,12,11,12,13,11,14,16 

Comme vous pouvez le constater, cette petite série statistique comporte une multitude de notes toutes différentes des unes des autres. Nous allons dans un premier temps procéder à la déduction d’une tendance centrale, c’est-à-dire essayer de déterminer une valeur autour de laquelle se concentre l’ensemble des notes, puis nous étudierons sa dispersion et enfin nous rechercherons l’existence de données aberrantes, c’est-à-dire non représentatives de l’ensemble des notes. Nous avons tous...

Petites notions de vocabulaire avant de commencer

1. Observations et features

Toute étude statistique se réalise sur une population, composée d’individus. Ces individus peuvent être des personnes ou des choses. Chaque individu dispose de caractères. En Machine Learning, les individus sont appelés des observations et les caractères des features (caractéristiques).

Tout au long de cet ouvrage, nous privilégierons le terme de feature à celui de caractéristique, car c’est ce terme que vous rencontrerez le plus dans vos différentes lectures et cas pratiques.

2. Les types de données

Il existe deux types de données : les données quantitatives et les données qualitatives.

Les données quantitatives sont des nombres sur lesquels il est possible de faire des opérations mathématiques. Ces données peuvent être classées en deux groupes distincts :

  • les données quantitatives continues ayant une valeur infinie et pouvant être énumérée (nombre d’éléments d’une liste…),

  • les données quantitatives discrètes ont quant à elles une valeur finie dans un intervalle de valeurs (le nombre de pattes d’un animal…).

Quant aux données qualitatives, celles-ci ont pour but de décrire des qualités propres aux données :...

Et Python dans tout ça ?

1. Des modules dédiés

Bien que nous n’évoquerons pas dans ce chapitre la création d’un projet Python dédié aux statistiques et l’utilisation de modules externes, il est important de savoir que dans les chapitres suivants nous ne serons pas démunis face à l’analyse statistique grâce au langage Python. En effet, vous verrez que nous utiliserons très fréquemment le module Pandas pour l’analyse, et pour les manipulations des listes nous utiliserons le module numpy. Ces modules offrant tous deux des fonctions très pratiques, nous évitant de les coder par nous même.

Dans le module Pandas (repris sous l’alias pnd dans le code ci-dessous), l’ensemble des observations est appelé un DataFrame. Pour notre étude de cas, cela se traduit par cette ligne de code :

observations = 
pnd.DataFrame({'NOTES':np.array([3,19,10,15,14,12,9,8,11,12, 
11,12,13,11,14,16])}) 

Notre DataFrame observations contient une feature Notes sous forme d’un tableau (array) contenant l’ensemble des notes.

2. Une représentation un peu particulière de notre étude de cas

Pour notre étude de cas, nous disposons d’une unique observation (vous en tant qu’individu) et de 16 features correspondant à chacune de vos notes. Cette observation pouvant se traduire...

Mesure de tendance centrale

Les mesures de tendance centrale servent à synthétiser la série statistique étudiée au moyen d’un petit nombre de valeurs "caractéristiques". En d’autres termes, nous allons essayer de trouver un certain nombre de valeurs autour desquelles se regroupe l’ensemble des notes que vous avez obtenues lors des divers examens.

1. Connaître le nombre d’observations et de features

La première chose à connaître lorsque nous étudions un ensemble d’observations c’est leur nombre.

En effet, en connaissant le nombre d’observations et en le comparant au nombre de features renseignées, il est possible de détecter rapidement si certaines observations ont des caractéristiques manquantes. Connaître le nombre d’observations permet aussi de savoir si nous disposons d’assez de données pour permettre un apprentissage.

Pour connaître le nombre de features que comporte notre jeu d’observations, nous pouvons utiliser la fonction Python count().

print("-- NOMBRE D'OBSERVATIONS --") 
n = feature.count() 
print("Nombre d'observations = " + str(n)) 

Ce qui nous donne une valeur de 16 features dans notre cas, correspondant aux 16 notes.

Pour connaître le nombre d’observations dans Excel, il suffit d’utiliser la fonction NBVAL(A2:A17) dans une nouvelle cellule de votre classeur.

2. Les valeurs minimales et maximales

Connaître la valeur minimale et la valeur maximale d’un ensemble d’observations est toujours intéressant pour établir son étendue.

En ce qui concerne notre cas, on constate après avoir classé nos observations par ordre croissant que la valeur minimale est de 3 et que la valeur maximale est de 19. L’étendue est donc de 19-3 soit 16, ce qui montre une forte dispersion de données. En effet si les notes obtenues étaient celles-ci :

12,13,14,15,12,13,12,15,15,12,11,11,14,15,16,11 
  • le nombre de notes serait de 16 comme dans notre exemple,

  • la note minimale serait de 11,

  • la note maximale serait de 16,

L’étendue serait de 5, montrant que la dispersion de la série est faible, c’est-à-dire que les valeurs des notes seraient proches les unes des autres, contrairement à notre étude de cas.

En Python...

Premières déductions

Reprenons les différentes mesures de la tendance centrale pour notre jeu d’observations :

  • 11,875 pour la moyenne

  • 12 pour la médiane

  • 11 et 12 pour le mode

La tendance centrale a pour objectif de réduire l’ensemble des valeurs d’une série d’observations par un nombre la résumant. Dans notre cas, ce nombre peut être évalué à 12.

Ce qui signifie que si l’on devait résumer toutes vos notes obtenues aux examens d’intelligence artificielle en une seule, celle-ci s’élèverait à 12, malgré les notes de 15,16,19 obtenues, car la majeure partie de vos notes se rassemble autour de cette valeur.

Nous venons donc de synthétiser 16 notes en une seule ! Ce qui permet d’obtenir un aperçu de la valeur de générale série statistique. Dans notre cas, nous n’avons traité que quelques données, mais dans les chapitres suivants nous serons amenés à traiter des exemples comportant plus de 1000 valeurs. Sans les calculs de la moyenne, de la médiane et du mode, il est difficile de se faire une idée de la valeur générale d’une caractéristique.

Prenons l’exemple d’une série regroupant les prix des voitures vendues par un concessionnaire automobile. Au vu du nombre d’options pouvant faire...

La dispersion

La dispersion d’une série d’observations mesure la variabilité de celle-ci. Avez-vous obtenu beaucoup de notes ayant toutes la même valeur ? Ou bien des notes différentes ? C’est ce que nous allons découvrir en commençant par calculer l’étendue de la série d’observations.

1. L’étendue

L’étendue d’une série d’observations s’effectue en calculant la différence entre la valeur maximale et la valeur minimale de la série.

Si l’étendue est très petite, alors on peut affirmer qu’il y a peu d’écart entre toutes les valeurs de la série. Cette série est dite homogène.

Dans le cas contraire, on peut considérer que l’étendue est forte, mais on ne peut pas considérer qu’elle est hétérogène, car il se peut que cet écart soit dû à une valeur aberrante.

Prenons l’exemple de la série suivante :

8,10,11,12,12,11,9 : L’étendue est de 4 (12-8)

Puis une autre série ayant ces valeurs :

1,10,11,12,12,11,19 : L’étendue est de 18 (19-1)

Malgré une forte étendue, la série est tout de même homogène (se concentrant autour de 12), car les valeurs créant cette forte étendue (19 et 1) peuvent être considérées comme des données extrêmes, voire aberrantes (outliers en anglais).

Concernant notre étude de cas, l’étendue est de 16, car la valeur maximale est de 19 et la valeur minimale est de 3 (19-3 = 16). On peut donc dire que notre série est étendue.

Voici le code Python permettant de calculer l’étendue :

valeursTriees = feature.sort_values() 
valeursTriees = valeursTriees.reset_index(drop=True) 
 
print ("Etendue de la série = 
"+str(valeursTriees[len(valeursTriees)-1]-valeursTriees[0])) 

On note le fait que les valeurs de la feature doivent être obligatoirement triées avant de pouvoir calculer son étendue.

2. L’écart type (Standard déviation)

Comment savoir si notre jeu d’observations est fortement dispersé ou non ? C’est grâce à l’écart type que nous allons avoir la réponse....

Détection de valeurs extrêmes (outliers en anglais)

Outre le fait d’exprimer la dispersion des données autour de la médiane, l’interquartile nous permet également de détecter les valeurs extrêmes de la série d’observations grâce à la méthode de Tuckey.

Les boîtes à moustaches de John Wilder Tuckey

Il existe plusieurs méthodes de détection des valeurs extrêmes d’une série, mais nous avons choisi de vous présenter celle de Tuckey, simple à mettre en œuvre.

John Wilder Tukey (16 juin 1915 - 26 juillet 2000) est l’un des plus importants statisticiens américains du XXe siècle. Il a créé et développé de nombreuses méthodes statistiques. Il publia en 1977 son livre le plus diffusé, Exploratory Data Analysis6, traitant de méthodes d’analyse descriptive et de représentation graphique des données. Il y présente entre autres le principe de la boîte à moustaches (ou diagramme de quartiles), mais aussi les arbres et feuilles (en) (stem-and-leaf), une variante des histogrammes (source Wikipédia).

La méthode consiste à déterminer les valeurs des bornes inférieures et supérieures d’une boîte (appelée aussi boîte à...

Taitement des valeurs extrêmes

Bien souvent, les valeurs extrêmes expriment des anomalies. Dans notre cas, pourquoi avons-nous obtenu un 3 alors que la plupart de vos notes sont autour de 12 ? Manque de concentration ? Fatigue ? Stress ? Sujet non révisé ? Idem pour la valeur 19 : examen trop simple ? Voire tricherie ?

La première chose à faire lorsqu’une valeur extrême est détectée, consiste à s’assurer qu’il n’y a pas eu d’erreur de saisie dans les valeurs de la série d’observations.

S’il n’y a pas d’erreur de saisie, peut-on alors expliquer formellement les valeurs extrêmes  (appareil de mesure mal réglé…) ? Si oui, la valeur extrême peut être éliminée.

Dans le cas ou l’on ne peut pas expliquer clairement la raison de ces valeurs extrêmes, nous pouvons alors proposer des hypothèses qui devront être vérifiées avant toute mise à l’écart des valeurs.

La suppression des valeurs extrêmes n’est pas à prendre à la légère. Supprimer une valeur peut avoir une incidence forte sur la signification, l’interprétation et l’utilisation par la suite des données de la série d’observations.

Cependant, il n’existe...

Un peu de visualisation graphique

Une des étapes importantes lorsque nous sommes amenés à analyser une série d’observations est d’en réaliser une représentation graphique.

Cela permet notamment de nous rendre compte rapidement des spécificités de celle-ci (dispersion, valeur aberrante) ce qui permet entre autres de valider nos hypothèses de calcul et d’interprétation.

images/04FL11.png

Représentation graphique à l’aide du module Python MatplotLib

On constate aisément que la valeur 3 peut être considérée comme une valeur extrême, car elle se trouve détachée de l’histogramme général, mais il n’en est pas de même pour la valeur 19. On peut aussi constater que les notes obtenues se situent autour de la moyenne et de la médiane (soit la valeur de 12). La boîte à moustaches montre les valeurs aberrantes.

Pour réaliser la visualisation des données en Python, nous utilisons le module matplotlib utilisé sous l’alias plt.

def visualisation(self,moyenne,mediane,quartile_1,quartile_2,quartile 
_3): 
 
   plt.subplot(2, 2, 1) 
   plt.hist(self.feature) 
   plt.title("Histogramme et moyenne") 
   plt.axvline(moyenne, color='red', linestyle='dashed', 
linewidth=1,label = str(moyenne)) ...

Conclusion sur les données

Malgré une forte dispersion calculée à l’aide de l’écart-type, les notes obtenues se concentrent tout de même autour de la moyenne une fois les valeurs non représentatives écartées. Par conséquent, si nous devions interpréter vos notes, nous dirions que celles-ci se situent autour de 12.

Qu’est-ce que cela signifie ? Cela dépend du contexte du problème !

Si nous devions prédire le fait que vous deveniez expert(e) en intelligence artificielle se joue sur les notes obtenues à cette matière, nous devrions étudier les notes obtenues par les autres étudiants et trouver une corrélation entre les notes obtenues et le fait de devenir expert(e).

Si nous constatons le fait que la plupart des experts(e)s ont obtenu une valeur moyenne de 12 à leurs examens cela pourrait signifier que vous avez de grandes chances de devenir expert(e). Dans le cas où cette note est de 18, cela minimiserait vos chances.

Distribution gaussienne et loi normale

Nous allons quelque peu nous écarter de l’analyse descriptive de nos données pour aborder un point important qui vous sera utile dans la compréhension de certains algorithmes du Machine Learning : la distribution gaussienne ou encore appelée loi normale appliquée aux statistiques et aux probabilités.

1. Un exemple pour faire connaissance

Pour faire connaissance avec la distribution gaussienne, laissons de côté les notes obtenues à l’examen et concentrons-nous sur les critiques de films.

Voici les avis (notés de 0 à 5) obtenus par un film. 5 étant la meilleure note que peut obtenir le film : les fameuses 5 étoiles que l’on retrouve sur l’ensemble des sites de critiques de films.

Avis

Nombre de votants

5

42

4

96

3

132

2

124

1

88

0

58

Si nous réalisons une représentation graphique de ces données, nous obtenons une forme particulière : une cloche.

images/04FL12.png

Courbe de Gauss

Lorsque nous sommes en présence de ce type de graphique, nous pouvons affirmer que la série d’observations suit une loi mathématique appelée loi normale ou loi de Gauss (du nom de Karl Friederich Gauss (1777-1855)).

En statistique et en probabilité, la loi normale permet de représenter beaucoup de phénomènes aléatoires naturels. Lorsqu’une série d’observations obéit à la loi normale, on peut affirmer que :

  • 50 % des observations sont au-dessus de la moyenne,

  • 50 % des observations sont en dessous de la moyenne,

  • 68 % des observations sont comprises dans l’intervalle allant de la moyenne - l’écart type à la moyenne + l’écart type,

  • 95 % des observations sont comprises dans l’intervalle allant de la moyenne - 2* l’écart type à la moyenne + 2* l’écart type,

  • 99,7 % des observations sont comprises dans l’intervalle allant de la moyenne - 3* l’écart type à la moyenne + 3* l’écart type.

Nous allons à présent réaliser quelques calculs qui nous permettront par la même occasion de voir comment utiliser la notion de fréquence dans les calculs de moyenne et d’écart type.

Avis (Xi)

Nombre de votants (Ni)...

Une classe Python pour vous aider à analyser vos données

Le code Python présent dans chaque partie de ce chapitre fait l’objet de la création d’une classe vous permettant d’analyser vos données. Grâce à cette classe, vous retrouverez l’analyse que nous venons d’effectuer ainsi que la représentation graphique d’une série d’observations.

Vous pouvez télécharger cette classe depuis la page Informations générales. Son utilisation est assez simple, car il suffit de lui passer une caractéristique d’un DataFrame pour en obtenir son analyse !

Les classes sont un moyen de réunir des données et des fonctionnalités. (source Python.org).

Nous aurons l’occasion d’utiliser cette classe dans un prochain chapitre, mais un exemple d’utilisation reprenant les données que nous venons d’utiliser est proposé dans le code fourni. Il convient alors de créer un nouveau projet Python et d’importer les modules nécessaires comme indiqué dans les commentaires :

 
import pandas as pnd 
import JMPStatistiques as jmp 
import numpy as np 
 
#--- CREATION D'UN DATAFRAME ---- 
observations = 
pnd.DataFrame({'NOTES':np.array([3,19,10,15,14,12,9,8,11,12,11,12 
,13,11,14,16])}) 
 
 
#--- ANALYSE...

Combien d’observations sont nécessaires pour un bon apprentissage ?

En guise de conclusion, nous allons répondre à une question fréquemment posée : "Combien de données sont nécessaires pour un bon apprentissage ?" Ce à quoi nous répondrons : cela dépend du cas d’étude, de la précision de prédiction à réaliser et de l’algorithme utilisé.

Si vous souhaitez une très forte précision dans vos prédictions, vous devez alors proposer à votre algorithme d’apprentissage un panel d’observations le plus large possible en termes de représentativité, ce qui nécessite un grand nombre de données.

Vient ensuite le type d’algorithme utilisé (parfois en lien direct avec le point précédent), certains algorithmes ont besoin de quelques milliers d’observations pour être suffisamment efficaces là où d’autres en ont besoin de plusieurs milliers, notamment dans le cas d’apprentissage dans le domaine de la classification d’image.

Une question complémentaire à se poser est : de quel budget disposons-nous ? En effet, comme vous pourrez le constater au fur et à mesure de votre avancée dans l’aventure de l’intelligence artificielle, les données nécessaires...