Machine Learning
Petit bestiaire de la Data Science
Les descriptions suivantes ont pour seul objet de se familiariser avec le vocabulaire et les représentations souvent utilisées par les data scientists. Ne cherchez pas à construire un bel échafaudage logique à partir de ces informations ; contentez-vous d’enrichir le nombre d’associations d’idées entre vos découvertes et vos connaissances antérieures.
1. Les fondamentaux
a. Apprentissage et classification
Une machine "apprend" quand son paramétrage évolue en fonction des circonstances.
L’apprentissage supervisé est l’application la plus directe de ce constat. Après avoir collecté des informations, on scinde chaque observation en deux parties ; l’une dite explicative et l’autre expliquée. On choisit ensuite une mécanique calculatoire qui semble permettre de déduire les variables expliquées à partir des variables explicatives. La mise au point de ce modèle consiste alors à trouver le paramétrage de celui-ci qui semble être le plus efficace. Ce processus d’apprentissage est dit "supervisé" car il est sous le contrôle des variables expliquées de l’ensemble des données d’entraînement.
Quand on collecte de nouvelles observations ne possédant des valeurs connues que pour les variables explicatives, il suffit d’appliquer le modèle avec ses paramètres pour obtenir ce que l’on appelle élégamment une prédiction ou plus simplement une estimation.
Les autres formes d’apprentissages n’ont pas pour objet de prédire quelque chose, mais elles fournissent des estimations de patterns (c’est-à-dire des schémas identifiables et répétitifs) qui n’apparaissaient pas de prime abord.
En anglais on parle de Machine Learning (ML). Les variables explicatives sont nommées au choix : features, attributes ou covariates. Les variables expliquées sont, elles, nommées response variables.
Quand on intervient sur un processus d’apprentissage en introduisant une information qui n’était pas disponible au début de celui-ci, cela s’appelle du renforcement de l’apprentissage.
Quand la variable expliquée...
Notations mathématiques usuelles en Data Science
Les différences de notations entre les auteurs, leurs habitudes ou les usages propres à la description d’un problème donné peuvent vous troubler et ralentir votre compréhension, nous allons donc aborder le thème des notations mathématiques à plusieurs reprises dans cet ouvrage.
Pour évoluer dans la Data Science, vous n’avez pas forcément besoin d’un bon niveau en mathématiques, cela dépend de vos missions et de vos ambitions, mais vous aurez de toute façon besoin de lire et d’interpréter des textes comprenant des expressions mathématiques parfois un peu abstraites. Si vous n’êtes pas formé aux mathématiques du supérieur, considérez cela comme l’apprentissage d’une langue, qui vous permettra d’accéder à la pensée des auteurs que vous lirez.
Nous allons nous focaliser en premier lieu sur les différentes façons de noter les paramètres et l’expression d’une régression linéaire. L’entreprise est un peu pénible, mais après cela vous pourrez accéder à de nombreuses lectures sans être dérouté par la notation.
1. Notations des paramètres
Concernant les paramètres, les notations diffèrent suivant les circonstances, les habitudes et les auteurs, ne vous laissez pas impressionner, en particulier par les lettres grecques !

Nos a, b, c, d... deviendront parfois :
-
a1, a2, a3, a4... ou (aj) en notation plus compacte. Parfois, on préfère commencer à l’indice 0 pour différencier le paramètre qui n’est pas multiplié à une variable, ce qui donnerait pour la régression linéaire simple :...
Création de notre premier modèle ML
Nous allons utiliser un dataframe créé dans le chapitre précédent pour aborder la construction de ce premier modèle au travers des techniques du Machine Learning.
Vous pouvez aborder ce paragraphe comme le début d’un petit cadre méthologique, un "pipeline", visant à élaborer un modèle :
-
analyse statistique et visuelle des données ;
-
nettoyage des données (dans notre cas on éliminera les valeurs étranges) ;
-
choix empirique d’un type de modèle qui sera entraîné sur nos données (ici, arbres de décisions) ;
-
mise au point d’un modèle en extrayant aléatoirement des données pour l’entraînement de celui-ci et des données pour le test de celui-ci ;
-
interprétation et qualification du modèle (ici en étudiant la matrice de confusion).
1. Analyse statistique et visuelle des données
a. Visualisation globale
Nous allons visualiser les données numériques de notre data.frame de test au travers d’une boucle qui va parcourir toutes les features de v1 à v12 (dans ce data.frame, la feature 13 - la dernière - se nomme classe et est un factor).
dff <- subset(df, select = c(5,6,13 ))
n_col <- ncol(df)-1 # la dernière colonne n'est pas
# numérique, c'est la classe
op <- par(mfrow = c(2,4)) # chaque graphique
# contient 2 lignes
# de 4 graphiques
for (i in 1:n_col){
df_i <- df[,i]
nom <- names(df)[i]
plot(density(df_i),main = toupper(nom))
hist(df_i, main = "Fréquence par valeur",
xlab = paste("valeurs de",nom))
cdplot(df_i,df$classe,main = "Densité conditionnelle", ...Recettes de représentation graphique des données
Pour supporter vos analyses, vous aurez sans doute besoin de représentations graphiques adaptées à votre problème ou à vos interlocuteurs. Vous trouverez ici quelques recettes didactiques et souvent bien utiles.
Le package ggplot2, dont la syntaxe se veut être une "grammaire graphique", sera régulièrement invoqué dans cette section. De nombreux paramètres de cette grammaire sont communs avec ceux du package de base de R.
Cette grammaire graphique est aussi implémentée en Python via le package plotline.
Les exemples sont effectués sur des jeux de données déjà utilisés plus haut et disponibles sur le site compagnon de l’ouvrage.
Nous allons aborder la forme et la syntaxe de différents graphiques, mais aussi tenter de les interpréter succinctement : "c’est en forgeant que l’on devient forgeron".
1. De l’usage d’une grammaire graphique
La façon de construire un graphique que nous allons voir maintenant est intéressante : c’est un processus qui s’appuie sur une grammaire graphique que nous allons explorer pas à pas.
Ces graphiques vont se construire d’une façon structurée, globalement :
-
chargement des données dans une structure graphique ;
-
création d’un jeu de paramètres ;
-
ajout de représentations graphiques par couches successives (de géométries diverses) ;
-
le cas échéant, ajout d’un thème qui transforme l’ensemble ;
-
affichage du graphique.
Chargeons le package.
library(ggplot2)
Construisons notre premier graphique, le plus utile : un "scatterplot" avec une régression entourée de sa zone de confort. Nous utilisons un data.frame déjà utilisé plus haut, dont les variables numériques vont de v1 à v12 et qui comporte une variable "factor" qui se nomme "classe".
## travail sur la grammaire de ggplot2 ##
## un graphe simple : v11 en fonction de v7 avec régression ##
p <- ggplot(data=df2) # on choisit son dataset
a1<- aes(x=v7,y=v11)...Prise en compte de données et faits entachés d’incertitudes
L’erreur la plus commune des personnes fraîchement initiées à l’analyse des données s’avère être l’utilisation directe, sans précaution et sans analyse préliminaire des algorithmes à leur disposition sur des données incomprises.
Tout au long du processus d’élaboration de son étude et a fortiori dès son premier contact avec un problème, le data scientist aura intérêt à évaluer ses données au travers de divers outils statistiques et à visualiser celles-ci sous divers points de vue. C’est à ce prix que l’on peut émettre des hypothèses judicieuses que l’on cherchera à valider ou à invalider tout au long du processus.
Le lecteur intéressé qui voudrait revenir aux sources aura sans doute beaucoup de plaisir à parcourir l’œuvre d’Andreï Kolmogorov à qui nous devons de nombreuses contributions à certains concepts sous-jacents à notre pratique de la Data Science (formalisation de la logique intuitionniste comme étant du "calcul sur des problèmes", loi forte des grands nombres, axiomatisation des probabilités au travers du langage des théories de la mesure, upsilon-entropie qui nous permet de qualifier les estimateurs, application de la méthode de Poincaré à l’étude des équilibres...).
L’interprétation des outils statistiques nécessite l’assimilation de quelques notions fondatrices autour des probabilités que nous allons aborder maintenant.
1. Quelques notions fondatrices
a. Phénomène aléatoire
Vous vous trouvez face à un phénomène aléatoire si, quand vous effectuez une expérience plusieurs fois dans des conditions identiques, vous obtenez des résultats différents (et donc d’une certaine manière... imprévisibles).
Remarquez que dans cette définition, le fait qu’un phénomène soit identifié comme aléatoire dépend de l’incapacité de l’observateur à le prévoir complètement, ce qui lui fera déclarer...
Matrices et vecteurs, au cœur du Machine Learning
1. Conventions, notations, utilisations basiques
Cette section n’a pas d’autre prétention que de vous familiariser avec l’utilisation pratique des matrices et des vecteurs, car ce sont les formats dans lesquels vos données seront souvent manipulées dans les programmes de Machine Learnng. L’aspect mathématique sous-jacent, typiquement l’algèbre linaire n’est ici pas pris en compte (ou peu pris en compte, nous développerons certains aspects mathématiques dans le chapitre dédié).
Fabriquons une matrice de données "à la main"
Supposez un dataset composé de lignes (par exemple représentant des évènements ou des individus) et dont les colonnes représentent les valeurs pour chaque attribut (en anglais feature). Une ligne décrivant un individu nommé Robert, d’âge 40 ans, de statut marié et habitant dans la ville Paris pourrait être encodée de la façon suivante dans un tableau avec d’autres individus :
!nom ! âge ! statut ! ville !
! ! ! ! !
!ROBERT ! 40! M ! PARIS !
!PHILIPPE ! 30! C ! LYON !
!RODOLF ! 20! C ! LYON !
!MARIE ! 35! M ! PARIS !
Si l’on mémorise le numéro de ligne de chaque individu :
!nom ! ligne !
! ! !
!ROBERT ! 1 !
!PHILIPPE ! 2 !
!RODOLF ! 3 !
!MARIE ! 4 !
Si on encode le statut de la façon suivante : "M" vaut 1 et "C" vaut 0, puis si on remplace la ville par son code postal, on peut obtenir un tableau de chiffres ayant la même signification :
! ligne ! âge !...Estimation et inférence
L’estimation consiste à déterminer les paramètres d’un modèle à partir des données disponibles. En d’autres termes, c’est le processus par lequel on ajuste un modèle pour qu’il corresponde au mieux aux données d’entraînement. En statistiques, cela vise à trouver des valeurs numériques pour les paramètres d’une distribution ou d’un modèle (par exemple, la moyenne et la variance d’une distribution normale). En Machine Learning, l’estimation correspond à la phase d’apprentissage (training), où l’algorithme du modèle-type ajuste les paramètres internes du modèle (comme les poids dans un réseau de neurones) en fonction des données d’entraînement.
Quant à elle, l’inférence consiste à utiliser un modèle déjà entraîné pour tirer des conclusions ou faire des prédictions sur de nouvelles données. Elle se concentre sur l’application des connaissances acquises par le modèle. En statistiques, l’inférence vise à tirer des conclusions sur une population à partir d’un échantillon. Cela inclut des tâches comme les tests d’hypothèses, les intervalles de confiance et les prédictions, mais aussi l’interprétation des paramètres estimés pour comprendre leur signification. En Machine Learning, l’inférence correspond à la phase où un modèle déjà entraîné est utilisé pour prédire ou classer de nouvelles données. Par exemple, un modèle de reconnaissance d’image utilise l’inférence pour identifier des objets dans une image qu’il n’a jamais vue auparavant. En appliquant le modèle estimé sur les données sur lesquelles on veut inférer on obtient une probabilité, une classe ou une valeur numérique.
1. Positionnement du problème d’estimation
Nous allons nous concentrer sur le problème d’estimation en Machine Learning.
a. Formulation générale du problème
Mise en pratique : apprentissage supervisé
Nous allons effectuer un petit cycle de construction d’une prédiction afin de mettre en pratique les notions vues précédemment. Tout d’abord nous allons nous doter d’un ensemble d’observations. Cet ensemble comportera 10 000 observations, deux features en entrée et une à prédire. On cherchera le modèle f, la feature cible étant y, l’entrée étant X(x1,x2). L’ensemble des observations Z=(X,y) est scindé en un ensemble d’entraînement Ze de 6 000 lignes et un ensemble de validation Zv de 4 000 lignes.

Puis nous appliquerons l’estimation de f sur l’ensemble de validation Xv et nous obtiendrons un vecteur de prédictions de y sur l’ensemble de validation que nous comparerons avec le vecteur yv des valeurs réelles issues de l’ensemble de validation.
Pour ce faire, nous allons créer un ensemble Z "factice" où nous avons imposé, puis légèrement perturbé aléatoirement le fait que y soit plus ou moins situé sur le plan de l’espace 3D défini par y = 2 . x1 - 7 . x2 + 1 (en appliquant une fonction de perturbation aléatoire sur les valeurs y).
Notre espoir est de constater que les algorithmes utilisés retrouvent l’équation de ce plan avec une erreur de faible amplitude.
1. Préparation
Le code de création de l’ensemble factice d’observation est le suivant (sans intérêt spécifique) :
# un dataset factice, création des matrices #
rm(list=ls())
g <- function(x){s <- round(abs(sin(x)*1000 ))
set.seed(s) # randomize
# mais assure que g(constante) est une constante
x*(1-...Vers l’expertise en Machine Learning conventionnel
1. Parcours théorique accéléré
Nous resterons ici cantonné aux données "tabulaires", même si certaines notions sont parfois transposables dans d’autres contextes (textes, images, sons, videos...).
Ce paragraphe sera plus loin complété par un chapitre traitant des mathématiques du Machine Learning.
Nous sommes maintenant familiers avec un certain nombre de concepts et de notations que nous avons abordés au travers d’expériences et de découvertes empiriques successives. Nous allons repositionner certaines de ces informations dans un cadre théorique simplifié afin de vous donner une rapide vue d’ensemble de l’agencement du champ théorique commun aux praticiens du Machine Learning. Nous prendrons le plus souvent le point de vue de l’apprentissage supervisé (et avec une petite tendance à privilégier l’aspect classification par rapport à l’aspect régression de l’apprentissage supervisé car celui-ci est plus didactique).
Attention : ici comme dans les autres parties de l’ouvrage, les notions mathématiques sont esquissées mais pas formellement décrites comme le ferait un mathématicien. Par exemple les quantificateurs mathématiques et les définitions précises des espaces auxquels appartiennent certaines variables, certaines fonctions et leurs domaines de définition ou images ne sont pas formellement explicités (pour éviter par exemple de définir des notions du type espace de Hilbert, ou issues de la théorie de la mesure...).
a. Linéarité
Les modèles linéaires mettent en œuvre un signal qui peut s’exprimer sous la forme : wTx + b (on trouve également cette formulation dans le cas d’un composant de base des réseaux neuronaux, le perceptron, qui se base sur une séparation linéaire de l’espace).
Reportez-vous au début du chapitre pour les schémas correspondants. On y trouve, par exemple, une représentation de cette dernière expression.
On peut également noter cela en mettant en évidence que le premier terme est un produit scalaire, ce qui permet d’imaginer...