Académique Documents
Professionnel Documents
Culture Documents
Dans ce chapitre
• Qu'est-ce que la régression linéaire ?
Dans ce chapitre, nous allons découvrir la régression linéaire. La régression linéaire est une
méthode puissante et largement utilisée pour estimer des valeurs, telles que le prix d'une maison,
la valeur d'une certaine action, l'espérance de vie d'un individu ou le temps qu'un utilisateur va
regarder une vidéo ou passer sur un site Web. Vous avez peut-être déjà vu la régression linéaire
sous la forme d'une pléthore de formules compliquées comprenant des dérivés, des systèmes
d'équations et des déterminants. Cependant, nous pouvons également voir la régression linéaire
d'une manière plus graphique et moins formelle. Dans ce chapitre, pour comprendre la
régression linéaire, il suffit de pouvoir visualiser des points et des lignes qui se déplacent.
Disons que nous avons quelques points qui semblent former une ligne, comme le montre la
figure 3.1.
Figure 3.1 Quelques points qui semblent grossièrement former une ligne
Le but de la régression linéaire est de tracer la ligne qui passe le plus près possible de ces
points. Quelle ligne traceriez-vous qui passe près de ces points ? Pourquoi pas celle de la
figure 3.2 ?
Imaginez que les points sont les maisons d'une ville et que notre objectif est de construire
une route qui traverse la ville. Nous voulons que la ligne passe aussi près que possible des points
parce que les habitants de la ville veulent tous vivre près de la route, et notre objectif est de leur
faire plaisir autant que possible.
Le problème : nous devons prédire le prix d'une maison37
On peut aussi imaginer que les points sont des aimants fixés au sol (ils ne peuvent donc pas
bouger). Imaginez maintenant que vous jetez une tige métallique droite sur eux. La tige va
bouger, mais comme les aimants la tirent, elle finira par se retrouver en position d'équilibre,
aussi près que possible de tous les points.
Bien sûr, cela peut conduire à beaucoup d'ambiguïté. Voulons-nous une route qui passe un
peu près de toutes les maisons, ou peut-être vraiment près de quelques-unes d'entre elles et
un peu plus loin des autres ? Voici quelques questions qui se posent :
• Qu'entend-on par "points qui semblent grossièrement former une ligne" ?
• Qu'entend-on par "une ligne qui passe très près des points" ?
• Comment trouver une telle ligne ?
• En quoi cela est-il utile dans le monde réel ?
• Pourquoi l'apprentissage automatique ?
Dans ce chapitre, nous répondons à toutes ces questions, et nous construisons un modèle de
régression linéaire pour prédire les prix des logements dans un ensemble de données réelles.
Vous pouvez trouver tout le code de ce chapitre dans le dépôt GitHub suivant : https://github.
.com/luisguiserrano/manning/tree/master/Chapitre_3_Linear_Regression.
Tableau 3.1 Un tableau de maisons avec le nombre de pièces et les prix. La maison 4 est celle
dont nous essayons de déduire le prix.
Nombre de Prix
pièces
1 150
2 200
3 250
4 ?
5 350
6 400
7 450
Quel prix donneriez-vous à la maison 4, en vous basant uniquement sur les informations de ce tableau
? Si vous dites
300 $, alors on a fait la même supposition. Vous avez probablement vu un modèle et l'avez utilisé
pour déduire le prix de la maison. Ce que vous avez fait dans votre tête était une régression
linéaire. Étudions ce modèle plus en détail. Vous avez peut-être remarqué que chaque fois
que vous ajoutez une pièce, 50 dollars sont ajoutés au prix de la maison. Plus précisément,
nous pouvons considérer que le prix d'une maison est la combinaison de deux éléments : un
prix de base de 100 euros et un prix de base de 100 euros.
100 dollars, et un supplément de 50 dollars pour chacune des chambres. Ceci peut être
résumé par une formule simple :
Ce que nous avons fait ici est de créer un modèle représenté par une formule qui nous donne
une prédiction du prix de la maison, sur la base de la caractéristique, qui est le nombre de
pièces. Le prix par pièce est appelé le poids de cette caractéristique correspondante, et le prix
de base est appelé le biais du modèle. Ce sont tous des concepts importants dans l'apprentissage
automatique. Nous en avons appris quelques-uns aux chapitres 1 et 2, mais rafraîchissons-nous la
mémoire en les définissant dans la perspective de ce problème.
Caractéristiques Les caractéristiques d'un point de données sont les propriétés que nous
utilisons pour faire notre prédiction. Dans ce cas, les caractéristiques sont le nombre de
La solution : Construire un modèle de régression pour les prix 39
pièces de la maison, ledutaux
logement
de criminalité, l'âge de la maison, sa taille, etc. Dans notre cas,
nous avons choisi une caractéristique : le nombre de pièces de la maison.
40 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
labels C'est la cible que nous essayons de prédire à partir des caractéristiques. Dans ce
cas, l'étiquette est le prix de la maison.
modèle Un modèle d'apprentissage automatique est une règle, ou une formule, qui
prédit une étiquette à partir des caractéristiques. Dans ce cas, le modèle est l'équation
que nous avons trouvée pour le prix.
prédiction La prédiction est la sortie du modèle. Si le modèle dit : "Je pense que la maison à
quatre pièces va coûter 300 $", alors la prédiction est 300.
La question qui se pose maintenant est la suivante : comment avons-nous trouvé cette formule ?
Ou plus précisément, comment faire pour que l'ordinateur trouve ce poids et ce biais ? Pour
illustrer cela, prenons un exemple un peu plus compliqué. Et parce qu'il s'agit d'un problème
d'apprentissage automatique, nous l'aborderons en utilisant le cadre mémoriser-formuler-prédire
que nous avons appris au chapitre 2. Plus précisément, nous allons nous souvenir des prix d'autres
maisons, formuler un modèle pour le prix et utiliser ce modèle pour prédire le prix d'une nouvelle
maison.
L'étape du souvenir : Examiner les prix des maisons existantes
Pour mieux comprendre le processus, examinons un ensemble de données un peu plus complexe,
comme celui du tableau 3.2.
Tableau 3.2 Un ensemble de données un peu plus complexe sur les maisons avec leur nombre
de pièces et leur prix
Nombre de Prix
pièces
1 155
2 197
3 244
4 ?
5 356
6 407
7 448
Cet ensemble de données est similaire au précédent, sauf que maintenant les prix ne suivent
pas une belle tendance, où chaque prix est 50 $ de plus que le précédent. Cependant, il n'est
La solution : Construire un modèle de régression pour les prix 41
du logement
pas si éloigné de l'ensemble de données original, donc on peut s'attendre à ce qu'un modèle
similaire se rapproche bien de ces valeurs.
42 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Normalement, la première chose que nous faisons lorsque nous obtenons un nouvel ensemble
de données est de le tracer. Dans la figure 3.3, nous pouvons voir un tracé des points dans un
système de coordonnées dans lequel l'axe horizontal représente le nombre de pièces et l'axe
vertical le prix de la maison.
500
400
300
Prix
200
100
Nombre de pièces
Figure 3.3 Tracé de l'ensemble de données du tableau 3.2. L'axe horizontal représente le nombre de pièces, et
l'axe vertical le prix de la maison.
Pente La pente d'une ligne est une mesure de son inclinaison. Elle est calculée en divisant la
La solution : Construire un modèle de régression pour les prix 43
montée par la du (c'est-à-dire
descente logement le nombre d'unités de montée divisé par le nombre
d'unités de descente vers la droite). Ce ratio est constant sur l'ensemble de la ligne. Dans
un modèle d'apprentissage automatique, il s'agit du poids de la caractéristique
correspondante, et il nous indique dans quelle mesure nous nous attendons à ce que la
valeur de la fonction
44 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Intersection des y L'intersection des y d'une ligne est la hauteur à laquelle la ligne croise
l'axe vertical (y-). Dans un modèle d'apprentissage automatique, elle représente le biais et
nous indique ce que serait l'étiquette dans un point de données où toutes les
caractéristiques sont précisément nulles.
équation linéaire C'est l'équation d'une droite. Elle est donnée par deux paramètres : la
pente et l'ordonnée à l'origine. Si la pente est m et l'ordonnée à l'origine est b, alors
l'équation de la ligne est y = mx + b, et la ligne est formée par tous les points (x,y) qui
satisfont à l'équation. Dans un modèle d'apprentissage automatique, x est la valeur de la
caractéristique et y est la prédiction de l'étiquette. Le poids et le biais du modèle sont
respectivement m et b.
Nous pouvons maintenant analyser l'équation. Lorsque nous disons que la pente de la ligne est de
50, cela signifie que chaque fois que nous ajoutons une pièce à la maison, nous estimons que le
prix de la maison va augmenter de
$50. Lorsque nous disons que l'ordonnée à l'origine de la ligne est 100, cela signifie que l'estimation
du prix d'une maison (hypothétique) de zéro pièce serait le prix de base de 100 $. Cette ligne
est tracée dans la figure 3.4.
500
400
300
Prix
200
100
Nombre de pièces
Figure 3.4 Le modèle que nous formulons est la ligne qui s'approche le plus possible de toutes les maisons.
Maintenant, parmi toutes les lignes possibles (chacune avec sa propre équation), pourquoi avons-
nous choisi celle-ci en particulier ? Parce que celle-là passe près des points. Il en existe peut-être
une meilleure, mais au moins nous savons que celle-ci est bonne, contrairement à celle qui ne passe
nulle part près des points. Nous revenons maintenant au problème initial, où nous avons un
ensemble de maisons, et nous voulons construire une route aussi près que possible de ces maisons.
La solution : Construire un modèle de régression pour les prix 45
Comment trouver cette du ligne
logement
? Nous y reviendrons plus tard dans ce chapitre. Mais pour
l'instant, disons que nous avons une boule de cristal qui, étant donné un certain nombre de
points, trouve la ligne qui passe le plus près d'eux.
46 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Par conséquent, notre modèle prédit que la maison coûte 300 $. Cela peut également être
illustré graphiquement à l'aide de la ligne, comme le montre la figure 3.5.
500
400
$300
Prix
200
100
Nombre de pièces
Figure 3.5 Notre tâche consiste maintenant à prédire le prix de la maison de quatre pièces. En utilisant le modèle
(ligne), nous déduisons que le prix prédit de cette maison est de 300 $.
écoles) sont positivement corrélés au prix de la maison. En d'autres termes, comme les
maisons plus grandes et bien situées coûtent plus cher, plus cette caractéristique est élevée, plus
le prix de la maison devrait être élevé. En revanche, comme on peut imaginer que les maisons
plus anciennes ont tendance à être moins coûteuses, la caractéristique de l'âge est corrélée
négativement au prix de la maison.
Que se passe-t-il si le poids d'une caractéristique est nul ? Cela se produit lorsqu'une
caractéristique n'est pas pertinente pour le prix. Par exemple, imaginez une caractéristique
qui mesure le nombre de voisins dont le nom de famille commence par la lettre A. Cette
caractéristique n'a pratiquement aucun rapport avec le prix de la maison, et nous nous
attendrions donc à ce que, dans un modèle raisonnable, le poids correspondant à cette
caractéristique soit nul ou très proche de zéro.
De la même manière, si une caractéristique a un poids très élevé (qu'il soit négatif ou positif),
nous l'interprétons comme le modèle nous indiquant que cette caractéristique est importante
pour déterminer le prix de la maison. Dans le modèle précédent, il semble que le nombre de
pièces soit une caractéristique importante, car son poids est le plus élevé (en valeur absolue).
Dans la section intitulée "La réduction de la dimensionnalité simplifie les données sans
perdre trop d'informations" du chapitre 2, nous avons lié le nombre de colonnes d'un
ensemble de données à la dimension dans laquelle se trouve l'ensemble de données. Ainsi, un
ensemble de données à deux colonnes peut être représenté comme un ensemble de points dans le
plan, et un ensemble de données à trois colonnes peut être représenté comme un ensemble de
points dans un espace tridimensionnel. Dans un tel ensemble de données, un modèle de
régression linéaire correspond non pas à une ligne mais à un plan qui passe aussi près que
possible des points. Imaginez que de nombreuses mouches volent dans la pièce en position
stationnaire, et que notre tâche consiste à essayer de faire passer une gigantesque feuille de
carton aussi près que possible de toutes les mouches. Il s'agit d'une régression linéaire
multivariée avec trois variables. Le problème devient difficile à visualiser pour les ensembles
de données comportant plus de colonnes, mais nous pouvons toujours imaginer une équation
linéaire avec de nombreuses variables.
Dans ce chapitre, nous traitons principalement de la formation de modèles de régression
linéaire avec une seule caractéristique, mais la procédure est similaire avec plusieurs
caractéristiques. Je vous encourage à lire ce chapitre en gardant ce fait à l'esprit, et à imaginer
comment vous généraliseriez chacun de nos prochains états-majors à un cas avec plusieurs
caractéristiques.
Quelques questions qui se posent et quelques réponses rapides
D'accord, votre tête bourdonne peut-être d'une foule de questions. Répondons à certaines d'entre
elles (toutes, je l'espère) !
1. Que se passe-t-il si le modèle fait une erreur ?
2. Comment avez-vous trouvé la formule qui prédit le prix ? Et que ferions-nous si au lieu
de six maisons, nous en avions des milliers ?
3. Supposons que nous ayons construit ce modèle de prédiction, et que de nouvelles maisons
commencent à apparaître sur le marché.
Existe-t-il un moyen de mettre à jour le modèle avec de nouvelles informations ?
La solution : Construire un modèle de régression pour les prix 49
du ces
Ce chapitre répond à toutes logement
questions, mais voici quelques réponses rapides :
1. Que se passe-t-il si le modèle fait une erreur ?
Le modèle estime le prix d'une maison, nous nous attendons donc à ce qu'il fasse une
petite erreur presque tout le temps, car il est très difficile de trouver le prix exact. Le
processus d'apprentissage consiste à trouver le modèle qui fait les plus petites erreurs à
nos points.
50 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
OK !
Merci !
Merci ! S'il vous
plaît,
rapproch
ez-vous !
Figure 3.6 Une illustration de l'algorithme de régression linéaire. Nous commençons en haut à gauche avec une ligne aléatoire
et se termine en bas à gauche par une ligne qui s'ajuste bien à l'ensemble des données. À chaque étape, deux
choses se produisent : (1) nous choisissons un point aléatoire, et (2) le point demande à la ligne de se
rapprocher de lui. Après de nombreuses itérations, la ligne sera en
une bonne position. Cette figure ne comporte que trois itérations à des fins d'illustration, mais dans la vie
réelle, de nombreuses autres itérations sont nécessaires.
C'était la vue de haut niveau. Pour étudier le processus plus en détail, nous devons nous plonger
dans les détails mathématiques. Commençons par définir quelques variables.
• p : Le prix d'une maison dans l'ensemble de données
• p̂: Le prix prédit d'une maison
• r : Le nombre de pièces
• m : Le prix par chambre
• b : Le prix de base d'une maison
Pourquoi le chapeau sur le prix prédit, p̂? Tout au long de ce livre, le chapeau indique qu'il s'agit de la
variable que notre modèle prédit. De cette façon, nous pouvons distinguer le prix réel d'une
maison dans l'ensemble de données de son prix prédit.
Ainsi, l'équation d'un modèle de régression linéaire qui prédit le prix comme étant le prix de
base plus le prix par pièce multiplié par le nombre de pièces est la suivante
p̂= mr + b.
Pour avoir une idée de l'algorithme de régression linéaire, imaginez que nous disposons d'un
modèle dans lequel le prix par pièce est de 40 $ et le prix de base de la maison est de 50 $. Ce
modèle prédit le prix d'une maison à l'aide de la formule suivante :
p̂= 40 - r + 50
Pour illustrer l'algorithme de régression linéaire, imaginons que, dans notre ensemble de
données, nous ayons une maison de deux pièces qui coûte 150 $. Ce modèle prédit que le prix
de la maison est de 50 + 40 - 2 = 130. Ce n'est pas une mauvaise prédiction, mais elle est
inférieure au prix de la maison. Comment pouvons-nous améliorer le modèle ? Il semble que
l'erreur du modèle soit de penser que la maison est trop bon marché. Peut-être que le modèle
a un prix de base bas, ou peut-être qu'il a un prix par pièce bas, ou peut-être les deux. Si nous
augmentons les deux d'un petit montant, nous pouvons obtenir une meilleure estimation.
Augmentons le prix par pièce de 0,50 $ et le prix de base de 1 $. (J'ai choisi ces chiffres au
hasard.) Voici la nouvelle équation :
p̂= 40,5 - r + 51
Le nouveau prix prédit pour la maison est 40,5 - r + 51 = 132. Comme 132 $ est plus proche de
150 $, notre nouveau modèle fait une meilleure prédiction pour cette maison. Par
conséquent, il s'agit d'un meilleur modèle pour ce point de données. Nous ne savons pas s'il
s'agit d'un meilleur modèle pour les autres points de données, mais ne nous en préoccupons
pas pour l'instant. L'idée de l'algorithme de régression linéaire est de répéter le processus
précédent plusieurs fois. Le pseudo-code de l'algorithme de régression linéaire est le suivant :
Pseudocode de l'algorithme de régression linéaire
Entrées : Un ensemble de données de points
Sorties : Un modèle de régression linéaire qui s'adapte à cet ensemble de données.
Procédure :
• Choisissez un modèle avec des poids aléatoires et un biais aléatoire.
• Répétez plusieurs fois :
– Choisissez un point de données au hasard.
– Ajustez légèrement les pondérations et le biais afin d'améliorer la prédiction pour
ce point de données particulier.
• Retournez le modèle que vous avez obtenu.
Vous vous posez peut-être quelques questions, telles que les suivantes :
• De combien dois-je ajuster les poids ?
• Combien de fois dois-je répéter l'algorithme ? En d'autres termes, comment savoir si j'ai
terminé ?
• Comment puis-je savoir que cet algorithme fonctionne ?
Nous répondons à toutes ces questions dans ce chapitre. Dans les sections "L'astuce du carré"
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 47
régression linéaire
et "L'astuce de l'absolu", nous apprenons quelques astuces intéressantes pour trouver de
bonnes valeurs pour ajuster les poids. Dans la section
48 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Dans les sections "L'erreur absolue" et "L'erreur carrée", nous voyons la fonction d'erreur, qui
nous aidera à décider quand arrêter l'algorithme. Enfin, dans la section "Descente de
gradient", nous abordons une méthode puissante appelée descente de gradient, qui justifie le
fonctionnement de cet algorithme. Mais tout d'abord, commençons par déplacer des lignes
dans le plan.
Cours accéléré sur la pente et l'ordonnée à l'origine
Dans la section "L'étape de formulation", nous avons parlé de l'équation d'une ligne. Dans
cette section, nous allons apprendre à manipuler cette équation pour déplacer notre ligne.
Rappelez-vous que l'équation d'une ligne a les deux composantes suivantes :
• La pente
• L'ordonnée à l'origine
La pente nous indique l'inclinaison de la ligne, et l'ordonnée à l'origine nous indique où se
trouve la ligne. La pente est définie comme la montée divisée par la descente, et l'ordonnée à
l'origine nous indique où la ligne croise l'axe des y (l'axe vertical). Dans la figure 3.7, nous
pouvons voir ces deux éléments dans un exemple. Cette ligne a l'équation suivante :
y = 0,5x + 2
y y
0.5
x x
Pente = 0,5y-interception =2
Figure 3.7 La droite dont l'équation est y = 0,5x + 2 a une pente de 0,5 (à gauche) et un
ordonnée à l'origine de 2 (à droite).
Que signifie cette équation ? Elle signifie que la pente est 0,5 et que l'ordonnée à l'origine est 2.
Lorsque nous disons que la pente est de 0,5, cela signifie que lorsque nous marchons le long
de cette ligne, pour chaque unité que nous déplaçons vers la droite, nous nous déplaçons de 0,5
unité vers le haut. La pente peut être nulle si nous ne nous déplaçons pas du tout vers le haut ou
négative si nous nous déplaçons vers le bas. Une ligne verticale a une pente indéfinie, mais
heureusement, elle n'a pas tendance à apparaître dans la régression linéaire. Plusieurs lignes
peuvent avoir la même pente. Si je trace une ligne parallèle à la ligne de la figure 3.7, cette
ligne augmentera également de 0,5 unité pour chaque unité déplacée vers la droite. C'est là
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 49
régression
qu'intervient l'ordonnée linéaire L'ordonnée à l'origine nous indique à quel endroit la droite
à l'origine.
coupe l'axe des ordonnées. Cette ligne coupe l'axe des x à la hauteur 2, et c'est l'ordonnée à
l'origine.
50 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
En d'autres termes, la pente de la ligne nous indique la direction dans laquelle la ligne est
orientée, et l'ordonnée à l'origine nous indique l'emplacement de la ligne. Remarquez qu'en
spécifiant la pente et l'ordonnée à l'origine, la ligne est complètement spécifiée. Dans la figure 3.8,
nous pouvons voir différentes lignes avec le même ordonnée à l'origine et différentes lignes avec
la même pente.
1
pente =
x 0
0
x
-1
Figure 3.8 Quelques exemples de pente et d'ordonnée à l'origine. À gauche, nous voyons plusieurs lignes avec le
même point d'arrivée et des pentes différentes. Remarquez que plus la pente est élevée, plus la ligne est raide. À
droite, nous voyons plusieurs lignes avec la même pente et des ordonnées différentes. Remarquez que plus
l'ordonnée à l'origine est élevée, plus la ligne est située haut.
Dans notre exemple actuel de logement, la pente représente le prix par pièce et l'ordonnée à
l'origine représente le prix de base d'une maison. Gardons cela à l'esprit et, lorsque nous
manipulons les lignes, pensons à ce que cela apporte à notre modèle de prix du logement.
A partir des définitions de la pente et de l'ordonnée à l'origine, on peut déduire ce qui suit :
Changer la pente :
• Si nous augmentons la pente d'une ligne, la ligne tournera dans le sens inverse des aiguilles d'une
montre.
• Si nous diminuons la pente d'une ligne, la ligne tournera dans le sens des aiguilles d'une montre.
Ces rotations s'effectuent sur le pivot illustré à la figure 3.9, à savoir le point d'intersection de la
droite et de l'axe des ordonnées.
Changement de l'ordonnée à l'origine :
• Si nous augmentons l'ordonnée à l'origine d'une ligne, la ligne est translatée vers le haut.
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 51
régression linéaire
• Si nous diminuons l'ordonnée à l'origine d'une ligne, la ligne est translatée vers le bas.
52 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
La figure 3.9 illustre ces rotations et translations, qui nous seront utiles lorsque nous voudrons
ajuster nos modèles de régression linéaire.
y y
Pivot
x x
Figure 3.9 Gauche : L'augmentation de la pente fait tourner la ligne dans le sens inverse des aiguilles d'une
montre, tandis que la diminution de la pente la fait tourner dans le sens des aiguilles d'une montre. Droite :
L'augmentation de l'ordonnée à l'origine fait tourner la droite vers le haut, tandis que la diminution de
l'ordonnée à l'origine la fait tourner vers le bas.
Une astuce simple pour rapprocher une ligne d'un ensemble de points, un point à la
fois.
Rappelons que l'algorithme de régression linéaire consiste à répéter une étape dans laquelle
nous rapprochons une ligne d'un point. Pour ce faire, nous pouvons utiliser des rotations et des
translations. Dans cette section, nous apprenons une astuce appelée l'astuce simple, qui consiste à
effectuer une légère rotation et translation de la ligne dans la direction du point pour le
rapprocher (figure 3.10).
Bonjour !
S'il vous
plaît,
rapprochez-
vous.
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de Mieux ? 53
régression linéaireOK
!
Figure 3.10 Notre objectif est de faire pivoter et translater la ligne d'une petite quantité pour nous rapprocher du point.
54 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
L'astuce pour déplacer correctement la ligne vers un point consiste à identifier où se trouve le
point par rapport à la ligne. Si le point est au-dessus de la ligne, nous devons déplacer la ligne vers
le haut, et s'il est en dessous, nous devons la déplacer vers le bas. La rotation est un peu plus
difficile, mais comme le pivot est le point d'intersection de la ligne et de l'axe des y, nous
pouvons voir que si le point est au-dessus de la ligne et à droite de l'axe des y, ou en dessous de la
ligne et à gauche de l'axe des y, nous devons faire tourner la ligne dans le sens inverse des aiguilles
d'une montre. Dans les deux autres cas, nous devons faire pivoter la ligne dans le sens des aiguilles
d'une montre. Ces cas sont résumés dans les quatre cas suivants, qui sont illustrés à la figure 3.11
:
Cas 1 : Si le point est au-dessus de la ligne et à droite de l'axe des y, nous faisons pivoter la
ligne dans le sens inverse des aiguilles d'une montre et la translatons vers le haut.
Cas 2 : Si le point est au-dessus de la ligne et à gauche de l'axe des y, nous faisons pivoter la ligne
dans le sens des aiguilles d'une montre et la translatons vers le haut.
Cas 3 : Si le point se trouve en dessous de la ligne et à droite de l'axe des y, nous faisons
pivoter la ligne dans le sens des aiguilles d'une montre et la translatons vers le bas.
Cas 4 : Si le point se trouve en dessous de la ligne et à gauche de l'axe des y, on fait pivoter la ligne
dans le sens inverse des aiguilles d'une montre et on la translate vers le bas.
Tournez dans le
Rotation dans le
sens inverse
sens des
y des aiguilles
aiguilles d'une
d'une montre,
montre,
translation vers Cas 2 Cas 1 traduisez vers
le haut !
le haut !
Cas 4 Cas 3
Maintenant que nous avons ces quatre cas, nous pouvons écrire le pseudo-code de l'astuce
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 55
régression linéaire
simple. Mais d'abord, clarifions quelques notations. Dans cette section, nous avons parlé de lignes
dont l'équation est y = mx + b,
56 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
où m est la pente et b l'ordonnée à l'origine. Dans l'exemple du logement, nous avons utilisé la
notation similaire suivante :
• Le point de coordonnées (r, p) correspond à une maison avec r pièces et un prix p.
• La pente m correspond au prix par chambre.
• L'ordonnée à l'origine b correspond au prix de base de la maison.
• La prédiction p̂= mr + b correspond au prix prédit de la maison.
Pseudocode pour l'astuce simple
Entrées :
• Une ligne dont la pente est m, l'ordonnée à l'origine b et l'équation p̂= mr + b
• Un point de coordonnées (r, p)
Sortie :
• Une ligne avec l'équation p̂= m¢r + b qui est plus proche du point
Procédure :
Choisissez deux très petits nombres aléatoires, et appelez-les h1 et h2 (la lettre grecque eta).
Cas 1 : Si le point est au-dessus de la ligne et à droite de l'axe des y, nous faisons pivoter la ligne dans
le sens inverse des aiguilles d'une montre et la translatons vers le haut :
• Ajouter h1 à la pente m. Obtenir m¢ = m + h1.
• Ajouter h2 à l'ordonnée à l'origine b. Obtenir b ¢ = b + h2.
Cas 2 : Si le point est au-dessus de la ligne et à gauche de l'axe des y, nous faisons pivoter la ligne
dans le sens des aiguilles d'une montre et la translatons vers le haut :
• Soustraire h1 de la pente m. Obtenir m¢ = m - h1.
• Ajouter h2 à l'ordonnée à l'origine b. Obtenir b ¢ = b + h2.
Cas 3 : Si le point se trouve en dessous de la ligne et à droite de l'axe des y, nous faisons
pivoter la ligne dans le sens des aiguilles d'une montre et la translatons vers le bas :
• Soustraire h1 de la pente m. Obtenir m¢ = m - h1.
• Soustraire h2 de l'ordonnée à l'origine b. Obtenir b ¢ = b - h2.
Cas 4 : Si le point se trouve en dessous de la ligne et à gauche de l'axe des y, on fait pivoter la ligne
dans le sens inverse des aiguilles d'une montre et on la translate vers le bas :
• Ajouter h1 à la pente m. Obtenir m¢ = m + h1.
• Soustraire h2 de l'ordonnée à l'origine b. Obtenir b ¢ = b - h2.
Retour : La ligne d'équation p̂= m¢r + b ¢.
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 57
régression linéaire
Notez que dans notre exemple, ajouter ou soustraire un petit nombre à la pente signifie
augmenter ou diminuer le prix par pièce. De même, ajouter ou soustraire un petit nombre à
l'ordonnée à l'origine signifie augmenter ou diminuer le prix de base de la maison. En outre, comme
la coordonnée x correspond au nombre de pièces, ce nombre n'est jamais négatif. Ainsi, seuls
les cas 1 et 3 comptent dans notre exemple, ce qui signifie que nous pouvons résumer cette
astuce simple en langage familier comme suit :
Une astuce simple
• Si le modèle nous a donné un prix pour la maison qui est inférieur au prix réel, ajoutez
un petit montant aléatoire au prix par pièce et au prix de base de la maison.
• Si le modèle nous a donné un prix pour la maison qui est plus élevé que le prix réel,
soustrayez un petit montant aléatoire du prix par pièce et du prix de base de la
maison.
Cette astuce connaît un certain succès dans la pratique, mais elle est loin d'être la meilleure
façon de déplacer des lignes. Certaines questions peuvent se poser, comme la suivante :
• Peut-on choisir de meilleures valeurs pour h1 et h2 ?
• Peut-on regrouper les quatre cas en deux, ou peut-être en un seul ?
La réponse à ces deux questions est oui, et nous allons voir comment dans les deux sections suivantes.
y y
Prix Prix prévu
Figure 3.12 Gauche : Lorsque le point se trouve au-dessus de la ligne, le prix est plus élevé que le prix prédit, de sorte que
l'indicateur de prix de la figure 3.12 est plus élevé que le prix prédit.
La différence est positive. Droite : Lorsque le point est en dessous de la ligne, le prix est plus petit que le prix
prédit, la différence est donc négative.
taux d'apprentissage Un très petit nombre que nous choisissons avant de former notre
modèle. Ce nombre nous aide à nous assurer que notre modèle change en très petites
quantités lors de l'entraînement. Dans ce livre, le taux d'apprentissage sera désigné par
h, la lettre grecque eta.
Comme le taux d'apprentissage est petit, la valeur h(p - p̂) l'est aussi. C'est la valeur que nous ajoutons à
l'ordonnée à l'origine pour déplacer la droite dans la direction du point.
La valeur que nous devons ajouter à la pente est similaire, mais un peu plus compliquée.
Remarquez les deux observations suivantes :
• Observation 3 : Dans le tour simple, lorsque le point se trouve dans le scénario 1 ou 4 (au-
dessus de la ligne et à droite de l'axe vertical, ou au-dessous de la ligne et à gauche de
l'axe vertical), nous faisons tourner la ligne dans le sens inverse des aiguilles d'une
montre. Sinon (scénario 2 ou 3), nous la faisons tourner dans le sens des aiguilles d'une
montre.
• Observation 4 : Si un point (r, p) est à droite de l'axe vertical, alors r est positif. Si le point
est à gauche de l'axe vertical, alors r est négatif. Cette observation est illustrée à la
figure 3.13. Remarquez que dans cet exemple, r ne sera jamais négatif, car il s'agit du
nombre de pièces. Cependant, dans un exemple général, une caractéristique peut être
négative.
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 59
régression linéaire
y
Number y
Nombre
<0
de pièces de
>0
pièces
x
x
Figure 3.13 Left: When the point is to the left of the y-axis, the number of rooms is negative. Right: When the
point is to the right of the y-axis, the number of rooms is positive.
Considérons la valeur r(p - p̂). Cette valeur est positive lorsque r et p - p̂sont tous deux positifs ou tous
deux négatifs. C'est précisément ce qui se produit dans les scénarios 1 et 4. De même, r(p - p̂) est
négatif dans les sce- narios 2 et 3. Par conséquent, en raison de l'observation 4, c'est la quantité
que nous devons ajouter à la pente. Nous voulons que cette valeur soit petite, donc encore
une fois, nous la multiplions par le taux d'apprentissage et nous concluons que l'ajout de hr(p -
p̂) à la pente déplacera toujours la ligne dans la direction du point.
Nous pouvons maintenant écrire le pseudocode de l'astuce du carré comme suit :
Pseudocode pour l'astuce du carré
Entrées :
• Une ligne dont la pente est m, l'ordonnée à l'origine b et l'équation p̂= mr + b
• Un point de coordonnées (r, p)
• Une petite valeur positive h (le taux d'apprentissage)
Sortie :
• Une ligne avec l'équation p̂= m¢r + b ¢ qui est plus proche du point
Procédure :
• Ajouter hr(p - p̂) à la pente m. Obtenir m¢ = m + hr(p - p̂) (cela fait tourner la droite).
• Ajouter h(p - p̂) à l'ordonnée à l'origine b. Obtenir b ¢ = b + h(p - p̂) (cela translate la droite).
Retour : La ligne d'équation p̂= m¢r + b ¢
Nous sommes maintenant prêts à coder cet algorithme en Python ! Le code de cette section est le suivant :
• Carnet de notes : Codage_régression_linéaire.ipynb
– https://github.com/luisguiserrano/manning/blob/master/Chapter_3_Linear_
Regression/Coding_linear_regression.ipynb
60 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
L'astuce absolue : Une autre astuce utile pour rapprocher la ligne des points
Le truc carré est efficace, mais un autre truc utile, que nous appelons le truc absolu, est un inter-
médiaire entre le truc simple et le truc carré. Dans le tour carré, nous avons utilisé les deux
quantités, p - p̂(prix - prix prédit) et r (nombre de chambres), pour nous aider à ramener les quatre
cas à un. Dans l'astuce absolue, nous utilisons uniquement r pour nous aider à ramener les
quatre cas à deux. En d'autres termes, voici l'astuce absolue :
Je vous encourage à vérifier que le montant ajouté à chacun des poids a bien le bon signe,
comme nous l'avons fait avec le tour du carré.
L'algorithme de régression linéaire : Répéter plusieurs fois le tour absolu ou
carré pour rapprocher la ligne des points.
Maintenant que nous avons fait tout le travail difficile, nous sommes prêts à développer
l'algorithme de régression linéaire ! Cet algorithme prend en entrée un ensemble de points et
renvoie une droite qui s'y ajuste bien. Cet algo- rithme consiste à commencer avec des valeurs
aléatoires pour notre pente et notre ordonnée à l'origine, puis à répéter la procédure de mise
à jour plusieurs fois en utilisant l'astuce de l'absolu ou du carré. Voici le pseudo-code :
Pseudocode de l'algorithme de régression linéaire
Entrées :
• Un ensemble de données sur les maisons, avec le nombre de pièces et les prix.
Sorties :
• Poids des modèles : prix par pièce et prix de base
Procédure :
• Commencez par des valeurs aléatoires pour la pente et l'ordonnée à l'origine.
• Répétez plusieurs fois :
– Choisissez un point de données au hasard.
– Mettez à jour la pente et l'ordonnée à l'origine en utilisant l'astuce de l'absolu ou du carré.
Chaque itération de la boucle est appelée une époque, et nous définissons ce nombre au début de
notre algorithme. Cette astuce simple a surtout été utilisée à des fins d'illustration, mais comme nous
l'avons déjà mentionné, elle permet d'éviter les erreurs de calcul.
62 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
ne fonctionne pas très bien. Dans la vie réelle, nous utilisons le truc absolu ou carré, qui
fonctionne beaucoup mieux. En fait, bien que les deux soient couramment utilisés, le truc carré
est plus populaire. C'est pourquoi nous l'utiliserons pour notre algorithme, mais n'hésitez pas à
utiliser l'astuce absolue si vous préférez.
Voici le code de l'algorithme de régression linéaire. Notez que nous avons utilisé le
paquetage Python ran- dom pour générer des nombres aléatoires pour nos valeurs initiales
(pente et ordonnée à l'origine) et pour sélectionner nos points à l'intérieur de la boucle :
Importe le paquet aléatoire dans
Importation
générer des nombres (pseudo) aléatoires
d'aléatoire
def linear_regression(features, labels, learning_rate=0.01, epochs = 1000) :
prix_par_chambre = random.random()
prix_base = random.random() Génère des valeurs aléatoires pour
pour epoch dans range(epochs) : la pente et l'ordonnée à l'origine
i = random.randint(0, len(features)-
1) num_rooms = features[i] Choisit un point
prix = étiquettes[i] aléatoire dans notre
jeu de données.
Répète prix_par_chambre, prix_de_base = square_trick(prix_de_base,
prix_par_chambr
l'étape de e,
mise à jour nombre_de_chamb
plusieurs res, prix,
fois learning_rate=learning_rate)
Retourner le prix par chambre, le
prix de base. Applique l'astuce du carré pour déplacer
la ligne la plus proche de notre point
L'étape suivante consiste à exécuter cet algorithme pour construire un modèle qui s'adapte à notre
ensemble de données.
Charger nos données et les tracer
Tout au long de ce chapitre, nous chargerons et tracerons nos données et modèles à l'aide de
Matplotlib et NumPy, deux packages Python très utiles. Nous utilisons NumPy pour stocker
des tableaux et effectuer des opérations mathématiques, tandis que nous utilisons Matplotlib
pour les graphiques.
La première chose que nous faisons est d'encoder les caractéristiques et les étiquettes de
l'ensemble de données du tableau 3.2 sous forme de tableaux NumPy comme suit :
importez numpy comme np
features = np.array([1,2,3,5,6,7])
labels = np.array([155, 197, 244, 356, 407, 448])
Ensuite, nous traçons l'ensemble des données. Dans le référentiel, nous avons quelques
fonctions pour tracer le code dans le fichier utils.py, que nous vous invitons à consulter. Le tracé
de l'ensemble de données est illustré à la figure 3.14. Remarquez que les points semblent
proches de former une ligne.
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 63
régression linéaire
99.097
64 I
Chapitre 3 Tracer une ligne proche de nos points : La régression
linéaire
Figure 3.15 Le tracé des points du tableau 3.2 et la ligne que nous avons obtenue avec l'algorithme de régression linéaire
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 65
régression linéaire
La figure 3.15 montre la ligne où le prix (arrondi) par pièce est de 51,05 $, et le prix de base est
$99.10. Ce chiffre n'est pas très éloigné des 50 et 100 dollars que nous avons évoqués plus haut dans ce
chapitre.
Pour visualiser le processus, examinons un peu plus la progression. Dans la figure 3.16, vous
pouvez voir quelques-unes des lignes intermédiaires. Remarquez que la ligne commence très
loin des points. Au fur et à mesure que l'algo- rithme progresse, elle se déplace lentement
pour s'ajuster de mieux en mieux à chaque fois. Remarquez qu'au début (dans les 10
premières époques), la ligne se déplace rapidement vers une bonne solution. Après l'époque
50, la ligne est bonne, mais elle ne correspond pas encore parfaitement aux points. Si on la
laisse tourner pendant toute la durée des 10 000 époques, on obtient un ajustement parfait.
Figure 3.16 Dessin de certaines des lignes de notre algorithme, à mesure que nous approchons d'une
meilleure solution. Le premier graphique montre le point de départ. Le deuxième graphique montre les 10
premières époques de l'algorithme de régression linéaire. Remarquez comment la ligne se rapproche de
l'ajustement des points. Le troisième graphique montre les 50 premières époques. Le quatrième graphique
montre les époques 51 à 10 000 (la dernière époque).
de celle que nous avons apprise dans ce chapitre. La seule différence est que chacune des
caractéristiques est mise à jour de la même manière que la pente. Dans l'exemple du logement,
nous avions une pente et un ordonnée à l'origine. Dans le cas général, pensez à de nombreuses
pentes et à un seul ordonnée à l'origine.
Le cas général consiste en un ensemble de données de m points et de n caractéristiques. Ainsi, le
modèle a m
des poids (considérez-les comme la généralisation de la pente) et un biais. La notation est la
suivante :
• Les points de données sont x , x , ... , x . Chaque point est de la forme x = (x , x(i) , ...
(1) (2) (m) (i) (i)
,
x(i) ).
1 2 n
Procédure :
• Ajouter h(y - yˆ) à l'ordonnée à l'origine b. Obtenir b ¢ = b + h(y - yˆ).
• Pour i = 1, 2, ..., n :
– Ajouter hx(y - yˆ) au poids w . iOn obtienti w ¢ = iw + hr(y - yˆ).
Retour : Le modèle avec l'équation yˆ = w ¢x + w ¢x + ... + w ¢x + b ¢
1 12 2n n
La fonction d'erreur mesure cela en attribuant une grande valeur au mauvais modèle à gauche
et une petite valeur au bon modèle à droite. Les fonctions d'erreur sont aussi parfois appelées
fonctions de perte ou fonctions de coût dans la littérature. Dans ce livre, nous les appelons
fonctions d'erreur, sauf dans certains cas particuliers où le nom plus couramment utilisé exige
le contraire.
Figure 3.17 Deux modèles, un mauvais (à gauche) et un bon (à droite). Le mauvais modèle est affecté d'une erreur
importante et le bon modèle d'une erreur faible.
La question est maintenant de savoir comment définir une bonne fonction d'erreur pour les
modèles de régression linéaire. Il existe deux façons courantes de le faire : l'erreur absolue et
l'erreur carrée. En bref, l'erreur absolue est la somme des distances verticales entre la ligne et
les points de l'ensemble de données, et l'erreur carrée est la somme des carrés de ces
distances.
Dans les prochaines sections, nous allons apprendre à connaître ces deux fonctions d'erreur plus
en détail. Nous verrons ensuite comment les réduire à l'aide d'une méthode appelée descente
de gradient. Enfin, nous traçons l'une de ces fonctions d'erreur dans notre exemple existant et
nous voyons à quelle vitesse la méthode de descente de gradient nous permet de la réduire.
L'erreur absolue : Une métrique qui nous indique la qualité de
notre modèle en ajoutant les distances
Dans cette section, nous examinons l'erreur absolue, qui est une métrique qui nous indique la
qualité de notre modèle. L'erreur absolue est la somme des distances entre les points de
données et la ligne. Pourquoi l'appelle-t-on l'erreur absolue ? Pour calculer chacune de ces
distances, nous prenons la différence entre l'étiquette et l'étiquette prédite. Cette différence
peut être positive ou négative selon que le point se trouve au-dessus ou au-dessous de la ligne.
Pour transformer cette différence en un nombre toujours positif, nous prenons sa valeur absolue.
Par définition, un bon modèle de régression linéaire est un modèle où la ligne est proche des
points. Que signifie "proche" dans ce cas ? Il s'agit d'une question subjective, car une ligne qui
est proche de certains points peut être éloignée d'autres. Dans ce cas, préférons-nous choisir
une ligne qui est très proche de certains points et éloignée de certains autres ? Ou devons-
nous essayer d'en choisir une qui soit assez proche de tous les points ? L'erreur absolue nous
aide à prendre cette décision. La ligne que nous choisissons est celle qui minimise l'erreur
absolue, c'est-à-dire celle pour laquelle la somme des distances verticales entre chacun des
62 Chapitre 3 I Tracer une ligne proche de nos points : La régression
points et la ligne est minimale. Dans la figure 3.18, vous pouvez voir deux lignes, et leur erreur
linéaire
absolue est illustrée comme la somme des segments verticaux. La ligne de gauche a une
grande erreur absolue
Comment mesurons-nous nos résultats ? La fonction 63
d'erreur
alors que celle de droite a une petite erreur absolue. Ainsi, entre ces deux, nous choisirions celle
de droite.
Grande erreur absoluePetite erreur absolue
Erreur = + + + Erreur =+ + +
Figure 3.18 L'erreur absolue est la somme des distances verticales entre les points et la ligne. Notez que l'erreur
absolue est grande pour le mauvais modèle à gauche et petite pour le bon modèle à droite.
Erreur = + + + Erreur = + + +
Figure 3.19 L'erreur quadratique est la somme des carrés des distances verticales entre les points et la ligne.
Notez que l'erreur quadratique est importante pour le mauvais modèle de gauche et faible pour le bon modèle de
droite.
Comme nous l'avons mentionné précédemment, l'erreur quadratique est plus souvent utilisée dans
la pratique que l'erreur absolue. Pourquoi ? Un carré a une dérivée beaucoup plus agréable
64 I
Chapitre 3 Tracer une ligne proche de nos points : La régression
linéaire
qu'une valeur absolue, ce qui est pratique pendant le processus de formation.
Comment mesurons-nous nos résultats ? La fonction 65
d'erreur
L'erreur absolue moyenne et l'erreur quadratique moyenne (racine) sont plus courantes
dans la vie réelle.
Tout au long de ce chapitre, nous utilisons les erreurs absolues et carrées à des fins d'illustration.
Cependant, dans la pratique, l'erreur absolue moyenne et l'erreur carrée moyenne sont utilisées
beaucoup plus couramment. Elles sont définies de manière similaire, sauf qu'au lieu de
calculer des sommes, nous calculons des moyennes. Ainsi, l'erreur absolue moyenne est la
moyenne des distances verticales entre les points et la ligne, et l'erreur quadratique moyenne est
la moyenne des carrés de ces mêmes distances. Pourquoi sont-elles plus fréquentes ?
Imaginons que nous souhaitions comparer l'erreur d'un modèle à l'aide de deux ensembles de
données, l'un comportant 10 points et l'autre 1 million de points. Si l'erreur est une somme de
quantités, une pour chaque point, alors l'erreur est probablement beaucoup plus élevée sur
l'ensemble de données d'un million de points, car nous ajoutons beaucoup plus de nombres. Si
nous voulons les comparer correctement, nous devons utiliser les moyennes dans le calcul de
notre erreur pour obtenir une mesure de la distance moyenne entre la ligne et chaque point.
À titre d'illustration, une autre erreur couramment utilisée est l'erreur quadratique moyenne,
ou RMSE en abrégé. Comme son nom l'indique, elle est définie comme la racine de l'erreur
quadratique moyenne. Elle est utilisée pour faire correspondre les unités du problème et aussi
pour nous donner une meilleure idée de l'ampleur de l'erreur que fait le modèle dans une
prédiction. Comment cela ? Imaginez le scénario suivant : si nous essayons de prédire le prix des
maisons, les unités du prix et du prix prédit sont, par exemple, des dollars ($). Les unités de l'erreur
carrée et de l'erreur carrée moyenne sont les dollars au carré, ce qui n'est pas une unité
commune. Si nous prenons la racine carrée, non seulement nous obtenons l'unité correcte, mais
nous avons également une idée plus précise du nombre de dollars dont le modèle se trompe par
maison. Par exemple, si l'erreur quadratique moyenne est de 10 000 $, nous pouvons nous
attendre à ce que le modèle fasse une erreur d'environ 10 000 $ pour toute prédiction que nous
faisons.
pour descendre, mais il y a beaucoup de brouillard, et nous ne pouvons voir qu'à environ un
mètre de distance. Que devons-nous faire ? Une bonne méthode consiste à regarder autour de
soi et à déterminer dans quelle direction nous pouvons faire un seul pas, de manière à descendre
le plus possible. Ce processus est illustré dans la figure 3.20.
Le
Mont
Errorest
Figure 3.20 Nous sommes au sommet du mont Errorest et souhaitons en descendre, mais nous ne voyons pas très loin.
Pour descendre, il faut examiner toutes les directions dans lesquelles nous pouvons faire un pas et
déterminer celle qui nous aide le plus à descendre. Nous sommes alors un pas plus près du fond.
Lorsque nous trouvons cette direction, nous faisons un petit pas, et comme ce pas a été fait dans la
direction de la plus grande descente, il est fort probable que nous soyons descendus un peu. Tout
ce que nous avons à faire est de répéter ce processus plusieurs fois jusqu'à ce que nous atteignions
(avec un peu de chance) le fond. Ce processus est illustré à la figure 3.21.
Le
Mont
Errorest
Figure 3.21 La façon de descendre de la montagne est de faire ce petit pas dans la direction qui nous fait
descendre le plus et de continuer à le faire pendant longtemps.
68 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Pourquoi ai-je dit avec espoir ? Eh bien, ce processus comporte de nombreuses mises en garde.
Nous pourrions atteindre le fond, ou nous pourrions aussi atteindre une vallée et alors nous
n'avons nulle part où aller. Nous n'allons pas aborder ce sujet maintenant, mais nous disposons de
plusieurs techniques pour réduire la probabilité que cela se produise. L'annexe B, " Utilisation de la
descente de gradient pour former des réseaux neuronaux ", présente certaines de ces
techniques.
Une grande partie des mathématiques que nous balayons du revers de la main sont expliquées
plus en détail dans l'annexe B. Mais ce que nous avons fait dans ce chapitre est exactement la
descente de gradient. Comment cela ? La descente par gradient fonctionne comme suit :
1. Commencez quelque part sur la montagne.
2. Trouvez la meilleure direction pour faire un petit pas.
3. Faites ce petit pas.
4. Répétez les étapes 2 et 3 plusieurs fois.
Cela peut vous sembler familier, car dans la section "L'algorithme de régression linéaire",
après avoir défini les trucs absolus et carrés, nous avons défini l'algorithme de régression linéaire
de la manière suivante :
1. Commencez par n'importe quelle ligne.
2. Trouvez la meilleure direction pour déplacer un peu notre ligne, en utilisant l'astuce de l'absolu ou du
carré.
3. Déplacez la ligne un peu dans cette direction.
4. Répétez les étapes 2 et 3 plusieurs fois.
L'image mentale de cette situation est illustrée à la figure 3.22. La seule différence est que
cette fonction d'erreur ressemble moins à une montagne qu'à une vallée, et notre objectif est
de descendre jusqu'au point le plus bas. Chaque point de cette vallée correspond à un modèle
(ligne) qui tente de s'adapter à nos données. Le site
Erreur
importante
Étap
e
Petite
erreur
Solution optimale
Comment mesurons-nous nos résultats ? La fonction 69
d'erreur
Figure 3.22 Chaque point de cette montagne correspond à un modèle différent. Les points en dessous sont de
bons modèles avec une petite erreur, et les points au-dessus sont de mauvais modèles avec une grande erreur.
L'objectif est de descendre de cette montagne. La façon de descendre est de commencer quelque part et de
faire continuellement un pas qui nous fait descendre. Le gradient nous aidera à décider dans quelle direction
faire un pas qui nous aide à descendre le plus.
70 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
La hauteur du point est l'erreur donnée par ce modèle. Ainsi, les mauvais modèles sont en
haut, et les bons modèles sont en bas. Nous essayons d'aller le plus bas possible. Chaque
étape nous fait passer d'un modèle à un modèle légèrement meilleur. Si nous procédons de la
sorte plusieurs fois, nous finirons par obtenir le meilleur modèle (ou du moins, un modèle
assez bon !).
Tracer la fonction d'erreur et savoir quand arrêter l'algorithme.
Dans cette section, nous voyons un tracé de la fonction d'erreur pour la formation que nous
avons effectuée plus tôt dans la section "Utilisation de l'algorithme de régression linéaire dans
notre ensemble de données". Ce tracé nous donne des informations utiles sur la formation de ce
modèle. Dans le référentiel, nous avons également tracé la fonction d'erreur quadratique
moyenne (RMSE) définie dans la section "Erreurs quadratiques moyennes absolues et (racine)
moyennes ...". Le code pour calculer la RMSE est le suivant :
def rmse(labels, predictions)
: n = len(labels)
différences = np.subtract(labels, predictions)
retourner np.sqrt(1.0/n * (np.dot(différences, différences))))
Produit scalaire Pour coder la fonction RMSE, nous avons utilisé le produit scalaire, qui est
un moyen simple d'écrire une somme de produits de termes correspondants dans deux
vecteurs. Par exemple, le produit scalaire des vecteurs (1,2,3) et (4,5,6) est 1 - 4 + 2 - 5 +
3 - 6 = 32. Si l'on calcule le produit scalaire d'un vecteur et de lui-même, on obtient la
somme des carrés des entrées.
Le graphique de notre erreur est présenté à la figure 3.23. Notez qu'elle chute rapidement
après environ 1 000 itérations, et qu'elle ne change pas beaucoup après cela. Ce graphique
nous donne des informations utiles : il nous indique que pour ce modèle, nous pouvons
exécuter l'algorithme d'apprentissage pendant seulement 1 000 ou 2 000 itérations au lieu de
10 000 et obtenir des résultats similaires.
Comment mesurons-nous nos résultats ? La fonction 71
d'erreur
Figure 3.23 Le graphique de l'erreur quadratique moyenne pour notre exemple courant. Remarquez que
l'algorithme a réussi à réduire cette erreur après un peu plus de 1 000 itérations. Cela signifie que nous n'avons
pas besoin de faire tourner cet algorithme pendant 10 000 itérations, car environ 2 000 d'entre elles font
l'affaire.
Application dans la vie réelle : Utilisation de Turi Create pour prévoir les 67
prix des logements en Inde
En général, la fonction d'erreur nous donne de bonnes informations pour décider quand
arrêter l'exécution de l'algorithme. Souvent, cette décision est basée sur le temps et la puissance
de calcul dont nous disposons. Cependant, d'autres repères utiles sont couramment utilisés
dans la pratique, tels que les suivants :
• Lorsque la fonction de perte atteint une certaine valeur que nous avons prédéterminée.
• Lorsque la fonction de perte ne diminue pas de manière significative pendant plusieurs époques.
Turi Create est le SFrame. Nous commençons par télécharger les données dans un SFrame, en
utilisant la commande suivante :
données = tc.SFrame('Hyderabad.csv')
Le tableau est trop grand, mais vous pouvez voir les premières lignes et colonnes dans le tableau 3.3.
Tableau 3.3 Les cinq premières lignes et les sept premières colonnes de l'ensemble de données sur les prix
des logements à Hyderabad
Nombre
Prix Zone Reven Personnel Gymnase PiscinePool
de
te d'entretien
chambres
à coucher
30000000 3340 4 0 1 1 1
7888000 1045 2 0 0 1 1
4866000 1179 2 0 0 1 1
8358000 1675 3 0 0 0 0
6845000 1670 3 0 1 1 1
La formation d'un modèle de régression linéaire dans Turi Create ne prend qu'une ligne de
code. Nous utilisons la fonction create du package linear_regression. Dans cette fonction,
nous devons seulement spécifier le tar- get (label), qui est Price, comme suit :
modèle = tc.linear_regression.create(data, target='Price')
L'apprentissage peut prendre quelques instants, mais une fois l'apprentissage terminé, il
fournit des informations. L'un des champs qu'il produit est l'erreur quadratique moyenne.
Pour ce modèle, la RMSE est de l'ordre de 3 000 000. C'est une erreur moyenne quadratique
importante, mais cela ne signifie pas que le modèle fait de mauvaises prédictions. Cela peut
signifier que l'ensemble de données comporte de nombreuses valeurs aberrantes. Comme
vous pouvez l'imaginer, le prix d'une maison peut dépendre de nombreuses autres
caractéristiques qui ne figurent pas dans l'ensemble de données.
Nous pouvons utiliser le modèle pour prédire le prix d'une maison d'une superficie de 1 000
mètres carrés, avec trois chambres à coucher, comme suit :
house = tc.SFrame({'Area' : [1000], 'No. of Bedrooms' :[3]})
model.predict(house)
Sortie : 2594841
Le modèle indique que le prix d'une maison de taille 1 000 et de trois chambres est de 2 594 841.
Nous pouvons également former un modèle en utilisant moins de caractéristiques. La fonction
create nous permet de saisir les caractéristiques que nous voulons utiliser sous forme de
tableau. La ligne de code suivante entraîne un modèle appelé simple_ model qui utilise la
zone pour prédire le prix :
70 I
Chapitre 3 Tracer une ligne proche de nos points : La régression
linéaire
simple_model = tc.linear_regression.create(data, features=['Area'],
target='Price')
Nous pouvons explorer les poids de ce modèle avec la ligne de code suivante :
simple_model.coefficients
Que faire si les données ne sont pas alignées ? 69
Régression polynomiale
Figure 3.24 L'ensemble de données sur les prix des logements à Hyderabad restreint à la zone et au prix. La ligne
représente le modèle que nous avons obtenu en utilisant uniquement la caractéristique zone pour prédire le
prix.
Nous pourrions faire beaucoup plus avec cet ensemble de données, et je vous invite à
poursuivre l'exploration. Par exemple, essayez d'explorer quelles caractéristiques sont plus
importantes que d'autres en regardant les poids du modèle. Je vous encourage à jeter un coup
d'œil à la documentation de Turi Create (https://apple.github.io/ turicreate/docs/api/) pour
d'autres fonctions et astuces que vous pouvez utiliser pour améliorer ce modèle.
Nous avons déjà vu des polynômes, car toute ligne est un polynôme de degré 1. Les paraboles
sont des exemples de polynômes de degré 2. Formellement, un polynôme est une fonction à
une variable qui peut être exprimée comme une somme de multiples de puissances de cette
variable. Les puissances d'une variable x sont 1, x, x2 , x3 , ..... Notez que les deux premières
sont x0 = 1 et x1 = x. Par conséquent, les exemples suivants sont des exemples de polynômes :
• y=4
• y = 3x + 2
• y = x2 - 2x + 5
• y = 2x3 + 8x2 - 40
Nous définissons le degré du polynôme comme l'exposant de la puissance la plus élevée dans
l'expression du polynôme. Par exemple, le polynôme y = 2x3 + 8x2 - 40 est de degré 3, car 3 est
l'exposant le plus élevé auquel la variable x est élevée. Remarquez que dans cet exemple, les
polynômes sont de degré 0, 1, 2 et 3. Un polynôme de degré 0 est toujours une constante, et un
polynôme de degré 1 est une équation linéaire comme celles que nous avons vues
précédemment dans ce chapitre.
Le graphique d'un polynôme ressemble beaucoup à une courbe qui oscille plusieurs fois. Le
nombre de fois qu'elle oscille est lié au degré du polynôme. Si un polynôme a un degré d, alors
le graphique de ce polynôme est une courbe qui oscille au plus d - 1 fois (pour d > 1). Dans la figure
3.25, nous pouvons voir les graphiques de quelques exemples de polynômes.
Figure 3.25 Les polynômes sont des fonctions qui nous aident à mieux modéliser nos données. Voici les tracés
de quatre polynômes de degrés 0 à 3. Notez que le polynôme de degré 0 est une ligne horizontale, le polynôme
de degré 1 est une ligne quelconque, le polynôme de degré 2 est une parabole et le polynôme de degré 3 est
une courbe qui oscille deux fois.
À partir du graphique, remarquez que les polynômes de degré 0 sont des lignes plates. Les
polynômes de degré 1 sont des lignes avec des pentes différentes de 0. Les polynômes de degré
2 sont des quadratiques (paraboles). Les polynômes de degré 3 ressemblent à une courbe qui
oscille deux fois (bien qu'ils puissent potentiellement osciller moins de fois). À quoi
ressemblerait le tracé d'un polynôme de degré 100 ? Par exemple, le tracé de y = x100 - 8x62 +
73x27 - 4x + 38 ? Il faudrait le tracer pour le savoir, mais nous savons avec certitude qu'il s'agit d'une
courbe qui oscille au maximum 99 fois.
72 Chapitre 3 I Tracer une
Paramètres et hyperparamètres71
ligne proche de nos points : La régression
linéaire
Des données non linéaires ? Pas de problème : essayons d'ajuster une courbe
polynomiale à ces données.
Dans cette section, nous allons voir ce qui se passe si nos données ne sont pas linéaires (c'est-
à-dire qu'elles ne semblent pas former une ligne) et que nous souhaitons leur appliquer une
courbe polynomiale. Disons que nos données ressemblent à la partie gauche de la figure 3.26.
Quels que soient nos efforts, nous ne parvenons pas à trouver une bonne courbe qui
corresponde à ces données. Pas de problème ! Si nous décidons d'ajuster un polynôme de
degré 3 (également appelé cubique), nous obtenons la courbe illustrée à droite de la figure
3.26, qui correspond bien mieux aux données.
Régression
polynomia
le
Figure 3.26 La régression polynomiale est utile lorsqu'il s'agit de modéliser des données non linéaires. Si nos
données ressemblent à la partie gauche de la figure, il sera difficile de trouver une ligne qui les ajuste bien. En
revanche, une courbe s'adaptera bien aux données, comme vous pouvez le voir dans la partie droite de la
figure. La régression polynomiale nous aide à trouver cette courbe.
Le processus d'entraînement d'un modèle de régression polynomiale est similaire à celui d'un
modèle de régression linéaire. La seule différence est que nous devons ajouter plus de colonnes à
notre ensemble de données avant d'appliquer la régression linéaire. Par exemple, si nous décidons
d'ajuster un polynôme de degré 3 aux données de la figure 3.26, nous devons ajouter deux
colonnes : une correspondant au carré de la caractéristique et une correspondant au cube de la
caractéristique. Si vous souhaitez étudier cela plus en détail, consultez la section "Régression
polynomiale, test et régularisation avec Turi Create" du chapitre 4, dans laquelle nous étudions
un exemple de régression polynomiale dans un ensemble de données paraboliques.
Une petite mise en garde concernant l'entraînement d'un modèle de régression polynomial est
que nous devons décider du degré du polynôme avant le processus d'entraînement. Comment
décider de ce degré ? Voulons-nous une ligne (degré 1), une parabole (degré 2), une cubique (degré
3), ou une courbe de degré 50 ? Cette question est importante, et nous la traitons au chapitre 4,
lorsque nous apprenons l'overfitting, le underfitting et la régularisation !
Paramètres et hyperparamètres
Les paramètres et les hyperparamètres font partie des concepts les plus importants de
l'apprentissage automatique. Dans cette section, nous allons apprendre ce qu'ils sont et
comment les distinguer.
Comme nous l'avons vu dans ce chapitre, les modèles de régression sont définis par leurs poids
et leur biais - les paramètres du modèle. Cependant, nous pouvons tourner de nombreux autres
boutons avant d'entraîner un modèle, tels que le taux d'apprentissage, le nombre d'époques, le
degré (si l'on considère un modèle de régression polynomial), et bien d'autres. Ces paramètres
sont appelés hyperparamètres.
72 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Chaque modèle d'apprentissage automatique que nous apprenons dans ce livre possède des paramètres
et des hyperparamètres bien définis. On a tendance à les confondre facilement, c'est pourquoi la règle
empirique pour les distinguer est la suivante :
• Toute quantité que vous définissez avant le processus de formation est un hyperparamètre.
• Toute quantité que le modèle crée ou modifie pendant le processus de
formation est un paramètre.
Applications de la régression
L'impact de l'apprentissage automatique se mesure non seulement à la puissance de ses
algorithmes, mais aussi à l'ampleur des applications utiles qu'il propose. Dans cette section, nous
verrons quelques applications de la régression linéaire dans la vie réelle. Dans chacun des
exemples, nous décrivons le problème, nous apprenons certaines caractéristiques pour le
résoudre, puis nous laissons la régression linéaire faire sa magie.
Systèmes de recommandation
L'apprentissage automatique est largement utilisé pour générer de bonnes recommandations
dans certaines des applications les plus connues, notamment YouTube, Netflix, Facebook,
Spotify et Amazon. La régression joue un rôle clé dans la plupart de ces systèmes de
recommandation. Comme la régression prédit une quantité, tout ce que nous avons à faire pour
générer de bonnes recommandations est de déterminer quelle quantité est la meilleure pour
indiquer l'interaction ou la satisfaction de l'utilisateur. Voici quelques exemples plus
spécifiques.
Recommandations de vidéos et de musique
L'un des moyens utilisés pour générer des recommandations vidéo et musicales consiste à prédire
le temps pendant lequel un utilisateur va regarder une vidéo ou écouter une chanson. Pour cela,
nous pouvons créer un modèle de régression linéaire où les étiquettes sur les données sont le
nombre de minutes pendant lesquelles chaque chanson est regardée par chaque utilisateur.
Les caractéristiques peuvent être des données démographiques sur l'utilisateur, comme son
âge, sa localisation et sa profession, mais elles peuvent aussi être comportementales, comme les
autres vidéos ou chansons sur lesquelles il a cliqué ou avec lesquelles il a interagi.
Recommandations sur les produits
Les magasins et les sites de commerce électronique utilisent également la régression linéaire
pour prévoir leurs ventes. L'une des façons de le faire est de prédire combien un client
dépensera dans le magasin. Nous pouvons le faire en utilisant la régression linéaire. L'étiquette à
prédire peut être le montant dépensé par l'utilisateur, et les caractéristiques peuvent être
démographiques et comportementales, de la même manière que pour les recommandations
vidéo et musicales.
Soins de santé
Exercices 73
La régression a de nombreuses applications dans le domaine de la santé. Selon le problème
que nous voulons résoudre, la prédiction de la bonne étiquette est la clé. Voici quelques
exemples :
• Prévision de la durée de vie d'un patient, sur la base de son état de santé actuel.
• Prévision de la durée d'un séjour à l'hôpital, sur la base des symptômes actuels
74 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Résumé
• La régression est une partie importante de l'apprentissage automatique. Elle consiste à
entraîner un algorithme avec des données étiquetées et à l'utiliser pour faire des
prédictions sur des données futures (non étiquetées).
• Les données étiquetées sont des données accompagnées d'étiquettes qui, dans le cas de
la régression, sont des chiffres. Par exemple, les nombres peuvent être les prix des
maisons.
• Dans un ensemble de données, les caractéristiques sont les propriétés que nous utilisons
pour prédire l'étiquette. Par exemple, si nous voulons prédire les prix des logements, les
caractéristiques sont tout ce qui décrit la maison et qui pourrait déterminer le prix,
comme la taille, le nombre de pièces, la qualité de l'école, le taux de criminalité, l'âge
de la maison et la distance à l'autoroute.
• La méthode de régression linéaire pour la prédiction consiste à attribuer un poids à
chacune des caractéristiques et à additionner les poids correspondants multipliés par
les caractéristiques, plus un biais.
• Graphiquement, on peut voir l'algorithme de régression linéaire comme une tentative de
faire passer une ligne aussi près que possible d'un ensemble de points.
• L'algorithme de régression linéaire fonctionne en commençant par une ligne aléatoire,
puis en la rapprochant lentement de chacun des points mal classés, pour tenter de les
classer correctement.
• La régression polynomiale est une généralisation de la régression linéaire, dans laquelle
nous utilisons des courbes au lieu de lignes pour modéliser nos données. Cette méthode
est particulièrement utile lorsque notre ensemble de données est non linéaire.
• La régression a de nombreuses applications, notamment les systèmes de recommandation,
le commerce électronique et les soins de santé.
Exercices
Exercice 3.1
Un site Web a formé un modèle de régression linéaire pour prédire le nombre de minutes qu'un
utilisateur passera sur le site. La formule qu'ils ont obtenue est
ˆt = 0,8d + 0,5m + 0,5y + 0,2a + 1,5
où ˆt est le temps prédit en minutes, et d, m, y et a sont des variables indicatrices (c'est-à-dire
qu'elles ne prennent que les valeurs 0 ou 1) définies comme suit :
• d est une variable qui indique si l'utilisateur est sur le bureau.
• m est une variable qui indique si l'utilisateur est sur un appareil mobile.
Exercices 75
• y est une variable qui indique si l'utilisateur est jeune (moins de 21 ans).
• a est une variable qui indique si l'utilisateur est un adulte (21 ans ou plus).
76 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire
Exemple : Si un utilisateur est âgé de 30 ans et se trouve sur un ordinateur de bureau, alors d = 1, m =
0, y = 0 et a = 1.
Si un utilisateur de 45 ans consulte le site web depuis son téléphone, quel est le temps qu'il
devrait passer sur le site ?
Exercice 3.2
Imaginons que nous ayons formé un modèle de régression linéaire dans un ensemble de
données médicales. Le modèle prédit la durée de vie attendue d'un patient. À chacune des
caractéristiques de notre ensemble de données, le modèle attribuerait un poids.
a) Pour les quantités suivantes, indiquez si vous pensez que le poids attaché à cette quantité
est un nombre positif, un nombre négatif ou zéro. Remarque : si vous pensez que le poids est un très
petit nombre, qu'il soit positif ou négatif, vous pouvez dire zéro.
1. Nombre d'heures d'exercice que le patient fait par semaine
2. Nombre de cigarettes que le patient fume par semaine
3. Nombre de membres de la famille souffrant de problèmes cardiaques
4. Nombre de frères et sœurs du patient
5. Si le patient a été hospitalisé ou non
b) Le modèle a également un biais. Pensez-vous que ce biais est positif, négatif ou nul ?
Exercice 3.3
Voici un ensemble de données sur les maisons, avec leur taille (en pieds carrés) et leur prix (en dollars).
Supposons que nous ayons formé le modèle où la prédiction du prix de la maison en fonction de la
taille est la suivante :
pˆ = 2s + 50
a. Calculez les prédictions que ce modèle fait sur l'ensemble de données.
b. Calculez l'erreur absolue moyenne de ce modèle.
c. Calculez l'erreur quadratique moyenne de ce modèle.
Exercices 77
Exercice 3.4
Notre objectif est de rapprocher la droite d'équation yˆ = 2x + 3 du point (x, y) = (5, 15) en
utilisant les astuces apprises dans ce chapitre. Pour les deux problèmes suivants, utilisez le taux
d'apprentissage h = 0,01.
a. Appliquez l'astuce absolue pour modifier la ligne ci-dessus afin qu'elle soit plus proche du point.
b. Appliquez l'astuce du carré pour modifier la ligne ci-dessus afin qu'elle soit plus proche du point.