16 Chapitre 1.
Vue d’ensemble du Machine Learning
Apprentissage à partir d’observations
La forme la plus banale d’apprentissage consiste probablement à apprendre par cœur.
En créant un ltre anti-spam de cette manière, vous repéreriez uniquement les e-mails
absolument identiques à ceux préalablement repérés par des utilisateurs. Ce n’est pas
la pire solution, mais certainement pas la meilleure non plus.
Au lieu de se contenter de repérer les e-mails identiques à des spams connus, vous
pouvez programmer votre ltre de sorte qu’il repère les e-mails très similaires à des
spams connus. Ceci requiert une mesure de similarité entre deux e-mails. Une mesure
de similarité (très élémentaire) entre deux e-mails pourrait être le nombre de mots
qu’ils ont en commun. Le système classerait en spam un e-mail ayant de nombreux
mots en commun avec un e-mail de spam connu.
C’est ce qu’on appelle l’apprentissage à partir d’observations (en anglais, instance
based learning) : le système apprend les exemples par cœur, puis il généralise à de nou-
veaux cas en utilisant une mesure de similarité (voir gure 1.15).
Figure 1.15 – Apprentissage à partir d’observations
Apprentissage à partir d’un modèle
Une autre manière de généraliser à partir d’un ensemble d’exemples consiste à
construire un modèle de ces exemples, puis à l’utiliser pour effectuer des prédictions.
C’est ce qu’on appelle l’apprentissage à partir d’un modèle (voir gure 1.16).
Figure 1.16 – Apprentissage à partir d’un modèle
1.3 Types de systèmes d’apprentissage automatique 17
Supposons par exemple que vous vouliez savoir si l’argent fait le bonheur, et que
vous téléchargiez pour cela les données (en anglais) de l’Indicateur du vivre mieux
fournies par l’OCDE5 ainsi que les statistiques de PIB par habitant du FMI6, en com-
binant ensuite ces tableaux puis en triant selon le PIB par habitant. Le tableau 1.1
donne un aperçu de ce que vous obtenez :
Tableau 1.1 – L’argent rend-il les gens plus heureux ?
Pays PIB par habitant (USD) Satisfaction individuelle
Hungary 12 240 4,9
Korea 27 195 5,8
France 37 675 6,5
Australia 50 962 7,3
United States 55 805 7,2
Représentons sur un diagramme les données correspondant à quelques pays pris au
hasard (voir gure 1.17).
Figure 1.17 – Distinguez-vous une tendance ?
© Dunod – Toute reproduction non autorisée est un délit.
Hum, il semble bien y avoir une tendance ! Bien que les données paraissent enta-
chées de bruit (que les statisticiens dénomment aussi aléa), il semble que le niveau de
satisfaction individuelle augmente plus ou moins linéairement à mesure que le PIB
par habitant augmente. Vous décidez alors que le modèle de satisfaction individuelle
est une fonction linéaire du PIB par habitant. Cette étape s’appelle la sélection de
modèle : vous avez sélectionné un modèle linéaire de satisfaction individuelle compor-
tant une seule variable explicative, le PIB par habitant (voir équation 1.1).
5. [Link]
6. [Link]
18 Chapitre 1. Vue d’ensemble du Machine Learning
Équation 1.1 – Un modèle linéaire simple
satisfaction_individuelle = θ0 + θ1 × PIB_par_habitant
Ce modèle comporte deux paramètres de modèle, θ0 et θ1.7 En modi ant ces para-
mètres, vous pouvez changer la fonction linéaire associée à votre modèle, comme
présenté sur la gure 1.18.
Figure 1.18 – Quelques-uns des modèles linéaires possibles
Avant de pouvoir utiliser votre modèle, vous devez dé nir les valeurs des para-
mètres θ0 et θ1. Comment pouvez-vous savoir quelles valeurs permettront à votre
modèle de fournir les meilleurs résultats ? Pour répondre à cette question, vous
devez dé nir une mesure de performance. Vous pouvez soit dé nir une fonction de
tness (encore appelée fonction d’adaptation) dont les valeurs seront d’autant plus
élevées que votre modèle est bon, ou une fonction de coût dont les valeurs seront
élevées lorsque votre modèle est mauvais. Pour les problèmes de régression linéaire,
on utilise en général une fonction de coût mesurant la distance entre les prédic-
tions du modèle linéaire et les exemples d’entraînement : l’objectif est de minimiser
cette distance.
Et c’est là que l’algorithme de régression linéaire apparaît : vous lui fournissez vos
exemples d’entraînement et il trouve les paramètres permettant d’ajuster au mieux le
modèle linéaire à vos données. C’est ce qu’on appelle l’entraînement du modèle. Dans
notre cas, l’algorithme trouve que les valeurs optimales des paramètres sont θ0 = 4,85
et θ1 = 4,91 × 10–5.
Maintenant le modèle s’ajuste aussi précisément que possible (pour un modèle
linéaire) aux données d’entraînement, comme vous pouvez le voir sur la gure 1.19.
7. Par convention, la lettre grecque θ (thêta) est fréquemment utilisée pour représenter les paramètres du
modèle.
1.3 Types de systèmes d’apprentissage automatique 19
Figure 1.19 – Le modèle linéaire s’ajustant le mieux aux données d’entraînement
Vous êtes prêt maintenant à exécuter le modèle pour faire des prédictions. Si vous
voulez connaître par exemple le degré de satisfaction personnelle des Chypriotes, les
données de l’OCDE ne comportent pas la réponse, mais vous pouvez heureusement
utiliser votre modèle pour effectuer une bonne prédiction : vous recherchez le PIB
par habitant de Chypre et trouvez 22 587 $, puis vous appliquez votre modèle et
trouvez que la satisfaction personnelle se situe vraisemblablement aux alentours de
4,85 + 22 587 × 4,91 × 10–5 = 5,96.
Pour aiguiser votre appétit, l’exemple 1.1 vous présente le code Python qui charge
les données, les prépare8, les visualise sous forme d’un nuage de points, puis entraîne
un modèle linéaire et effectue une prédiction9.
Exemple 1.1 – Entraînement et exécution d’un modèle linéaire à l’aide de Scikit-Learn
import matplotlib
import [Link] as plt
import numpy as np
import pandas as pd
© Dunod – Toute reproduction non autorisée est un délit.
import sklearn
# Chargement des données
oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=',')
gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter='\t',
encoding='latin1', na_values="n/a")
8. Le code suppose que la fonction prepare_country_stats() est déjà dé nie : elle combine les
données de PIB et de satisfaction personnelle dans un même dataframe Pandas.
9. Si vous ne comprenez pas le code pour l’instant, ce n’est pas grave car nous vous présenterons Scikit-
Learn dans les chapitres suivants.
20 Chapitre 1. Vue d’ensemble du Machine Learning
# Préparation des données
country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)
X = np.c_[country_stats["GDP per capita"]]
y = np.c_[country_stats["Life satisfaction"]]
# Visualisation des données
country_stats.plot(kind='scatter', x="GDP per capita", y='Life satisfaction')
[Link]()
# Sélection d’un modèle linéaire
lin_reg_model = sklearn.linear_model.LinearRegression()
# Entraînement du modèle
lin_reg_model.fit(X, y)
# Réalisation d’une prédiction pour Chypre
X_new = [[22587]] # PIB par habitant pour Chypre
print(lin_reg_model.predict(X_new)) # imprime [[ 5.96242338]]
Si au lieu de cela vous aviez utilisé un algorithme d’apprentissage basé sur
des observations, vous auriez vu que le pays dont le PIB par habitant se rap-
prochait le plus de celui de Chypre était la Slovénie (22 732 $) et comme les
données de l’OCDE indiquent que le niveau de satisfaction des Slovènes est
de 5,7, vous auriez prédit une satisfaction individuelle de 5,7 pour Chypre.
En prenant un peu de recul et en recherchant les deux pays suivants les
plus proches, vous constatez qu’il s’agit du Portugal et de l’Espagne avec des
niveaux de satisfaction respectifs de 5,1 et 6,5. En prenant la moyenne de
ces trois valeurs, vous obtenez 5,77. C’est assez proche de votre prédiction
à partir d’un modèle. Cet algorithme très simple s’appelle la méthode des
k plus proches voisins (dans cet exemple, k = 3).
Pour remplacer le modèle de régression linéaire par la méthode des k plus
proches voisins dans le code ci-dessus, il suffit de remplacer cette ligne-ci :
clf = sklearn.linear_model.LinearRegression()
par celle-là :
clf = [Link](n_neighbors=3)
Si tout s’est bien passé, votre modèle fournira de bonnes prédictions. Si ce n’est
pas le cas, il vous faudra peut-être utiliser davantage de variables (données sur l’em-
ploi, la santé, la pollution, etc.), obtenir davantage de données d’entraînement ou en
améliorer la qualité, ou peut-être sélectionner un modèle plus perfectionné (comme
un modèle de régression polynomiale).
En résumé :
vous avez étudié les données,
vous avez sélectionné un modèle,
vous l’avez entraîné sur des données d’entraînement (c.-à-d. que l’algorithme
d’apprentissage a recherché les valeurs des paramètres du modèle minimisant
la fonction de coût),