Vous êtes sur la page 1sur 71

Abonnez-vous à DeepL Pro pour éditer ce document.

Visitez www.DeepL.com/pro pour en savoir plus.

Dessiner une li ne près de nos points :


Régression linéaire 3

Dans ce chapitre
• Qu'est-ce que la régression linéaire ?

• l'ajustement d'une ligne à travers un ensemble de points de données

• codage de l'algorithme de régression linéaire en Python

• utiliser Turi Create pour construire un modèle de régression


linéaire afin de prédire les prix des logements dans un
ensemble de données réelles

• qu'est-ce que la régression polynomiale

• l'ajustement d'une courbe plus complexe à des données non linéaires

• discuter d'exemples de régression linéaire dans le monde réel, tels


que les applications médicales et les systèmes de
recommandation.
35
36Chapitre 3 I Tracer une ligne proche de nos points : La régression linéaire

J'ai bu une tasse Que pensez-vous


de café et j'ai Le lendemain, j'ai bu qu'il se passe
réussi à écrire deux tasses de café et si je bois trois
une page. j'ai réussi à écrire deux tasses ?
pages. Je ne sais pas. Je
ne suis pas un
spécialiste des
données.

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

Figure 3.2 Une ligne qui passe près des points

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.

Le problème : nous devons prédire le prix d'une maison.


Disons que nous sommes des agents immobiliers chargés de vendre une nouvelle maison. Nous ne
connaissons pas le prix, et nous voulons le déduire en le comparant à celui d'autres maisons. Nous
examinons les caractéristiques de la maison qui pourraient influencer le prix, telles que la taille, le
nombre de pièces, l'emplacement, le taux de criminalité, la qualité des écoles et la distance par
rapport aux commerces. En fin de compte, nous voulons une formule pour toutes ces
caractéristiques qui nous donne le prix de la maison, ou du moins une bonne estimation de
celui-ci.
38 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire

La solution : Construire un modèle de


régression pour les prix du logement
Prenons un exemple aussi simple que possible. Nous ne considérons qu'une seule des
caractéristiques - le nombre de pièces. Notre maison a quatre pièces, et il y a six maisons à
proximité, avec une, deux, trois, cinq, six et sept pièces, respectivement. Leurs prix sont
indiqués dans le tableau 3.1.

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 :

Prix = 100 + 50(Nombre de chambres)

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.

Poids Dans la formule correspondant au modèle, chaque caractéristique est multipliée


par un facteur correspondant. Ces facteurs sont les poids. Dans la formule précédente, la
seule caractéristique est le nombre de pièces, et le poids correspondant est de 50.

biais Comme vous pouvez le constater, la formule correspondant au modèle comporte


une constante qui n'est attachée à aucune des caractéristiques. Cette constante est appelée
le biais. Dans ce modèle, le biais est de 100, et il correspond au prix de base d'une maison.

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.

L'étape de formulation : Formulation d'une règle qui estime le prix de la maison


L'ensemble de données du tableau 3.2 est suffisamment proche de celui du tableau 3.1, donc pour
l'instant, nous pouvons utiliser la même formule pour le prix. La seule différence est que les prix ne
correspondent pas exactement à ce que dit la formule et que nous avons une petite erreur.
Nous pouvons écrire l'équation comme suit :
Prix = 100 + 50(Nombre de pièces) + (Petite erreur)
Si nous voulons prédire les prix, nous pouvons utiliser cette équation. Même si nous ne
sommes pas sûrs d'obtenir la valeur réelle, nous savons qu'il est probable que nous en soyons
proches. La question est maintenant de savoir comment nous avons trouvé cette équation. Et
surtout, comment un ordinateur peut-il trouver cette équation ?
Revenons au graphique et voyons ce que l'équation signifie ici. Que se passe-t-il si nous
regardons tous les points pour lesquels la coordonnée verticale (y) est égale à 100 plus 50 fois la
coordonnée horizontale (x) ? Cet ensemble de points forme une ligne de pente 50 et
d'ordonnée 100. Avant de décortiquer l'énoncé précédent, voici les définitions de la pente, de
l'ordonnée à l'origine et de l'équation d'une droite. Nous y reviendrons plus en détail dans la
section "Cours accéléré sur la pente et l'ordonnée à l'origine".

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

pour augmenter, lorsque nous augmentons la valeur de la caractéristique d'une unité. Si la


ligne est horizontale, alors la pente est nulle, et si la ligne descend, la pente est négative.

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

L'étape de la prédiction : Que faisons-nous lorsqu'une nouvelle maison arrive sur le


marché ?
Passons maintenant à l'utilisation de notre modèle pour prédire le prix de la maison de quatre
pièces. Pour cela, nous introduisons le nombre quatre comme caractéristique dans notre
formule pour obtenir ce qui suit :

Prix = 100 + 50 - 4 = 300

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 $.

Et si nous avons plus de variables ? Régression linéaire multivariée


Dans les sections précédentes, nous avons découvert un modèle qui prédit le prix d'une maison sur
la base d'une seule caractéristique : le nombre de pièces. Nous pouvons imaginer de nombreuses
autres caractéristiques qui pourraient nous aider à prédire le prix d'une maison, comme la taille, la
qualité des écoles du quartier et l'âge de la maison. Notre modèle de régression linéaire peut-il
prendre en compte ces autres variables ? Absolument. Lorsque la seule caractéristique est le
nombre de pièces, notre modèle prédit le prix comme la somme des caractéristiques
multipliées par leur poids correspondant, plus un biais. Si nous avons d'autres caractéristiques, il
nous suffit de les multiplier par leurs poids correspondants et de les ajouter au prix prédit. Par
conséquent, un modèle pour le prix d'une maison pourrait ressembler à ceci :
Prix = 30(nombre de pièces) + 1,5(taille) + 10(qualité des écoles) - 2(ancienneté de la maison) + 50
Dans cette équation, pourquoi tous les poids sont-ils positifs, à l'exception de celui
La solution : Construire un modèle de régression pour les prix 47
du logement
correspondant à l'âge de la maison ? La raison en est que les trois autres caractéristiques (le
nombre de pièces, la taille et la qualité de la maison) sont positives.
48 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire

é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

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 ?
Oui, c'est la question principale que nous abordons dans ce chapitre ! Lorsque nous avons
six maisons, le problème de tracer une ligne qui s'en rapproche est simple, mais si
nous avons des milliers de maisons, cette tâche devient difficile. Ce que nous faisons
dans ce chapitre est de concevoir un algorithme, ou une procédure, pour que
l'ordinateur trouve une bonne ligne.
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 les nouvelles informations ?
Absolument ! Nous construirons le modèle de manière à ce qu'il puisse être
facilement mis à jour si de nouvelles données apparaissent. Il s'agit d'un aspect
qu'il faut toujours rechercher dans l'apprentissage automatique. Si nous avons
construit notre modèle de telle sorte que nous devons recalculer l'ensemble du
modèle à chaque fois que de nouvelles données apparaissent, il ne sera pas très utile.

Comment faire en sorte que l'ordinateur


dessine cette ligne : L'algorithme de
régression linéaire
Nous arrivons maintenant à la question principale de ce chapitre : comment faire en sorte
qu'un ordinateur dessine une ligne qui passe vraiment près des points ? Nous procédons de la
même manière que pour beaucoup de choses en apprentissage automatique : étape par
étape. Commencez par une ligne aléatoire, et trouvez un moyen d'améliorer un peu cette
ligne en la rapprochant des points. Répétez ce processus plusieurs fois, et voilà, vous obtenez
la ligne souhaitée. Ce processus s'appelle l'algorithme de régression linéaire.
La procédure peut sembler idiote, mais elle fonctionne très bien. Commencez par une ligne
aléatoire. Choisissez un point aléatoire dans l'ensemble de données et rapprochez légèrement
la ligne de ce point. Répétez ce processus plusieurs fois, en choisissant toujours un point
aléatoire dans l'ensemble de données. Voici le pseudo-code de l'algorithme de régression
linéaire, vu sous cet angle géométrique. L'illustration est présentée à la figure 3.6.
Pseudocode de l'algorithme de régression linéaire (géométrique)
Entrées : Un ensemble de données de points
dans le plan Sorties : Une ligne qui passe près des
points Procédure :
• Choisissez une ligne au hasard.
• Répétez plusieurs fois :
– Choisissez un point de données au hasard.
La solution : Construire un modèle de régression pour les prix 51
du logement
– Déplacez la ligne un peu plus près de ce point.
• Retournez la ligne que vous avez obtenue.
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 45
régression linéaire

S'il vous S'il vous


plaît, plaît,
rapproch rapproch
ez-vous ! C'est fait ! ez-vous ! OK !

OK !

Merci ! Merci ! C'est fait !


C'est OK !
Merci !
fait !

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.

C'est une façon de dire

Prix prévisionnel = (Prix par pièce)(Nombre de pièces) + Prix de base de la


maison.
46 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire

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

Rotation dans le sens Traduire de haut en


des aiguilles d'une bas
montre et dans le
sens inverse des
aiguilles d'une
montre

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.

Comme expliqué précédemment, en général, l'équation d'une droite s'écrit y = mx + b, où x et


y correspondent aux coordonnées horizontales et verticales, m correspond à la pente et b à
l'ordonnée à l'origine. Tout au long de ce chapitre, pour correspondre à la notation, nous
écrirons l'équation sous la forme p̂= mr + b, où p̂correspond au prix prédit, r au nombre de pièces, m
(la pente) au prix par pièce, et b (l'ordonnée à l'origine) au prix de base de la maison.

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

Rotation Rotation dans le


dans le sens sens des aiguilles
inverse des d'une montre,
aiguilles d'une translation vers
montre, le bas !
translation vers le
Figure 3.11 Les quatre cas. Dans chacun d'eux, nous devons faire pivoter la ligne et la translater d'une manière
bas !
différente pour rapprocher la ligne du point correspondant.

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.

L'astuce du carré : Une façon beaucoup plus astucieuse de rapprocher


notre ligne d'un des points.
Dans cette section, je vous montre un moyen efficace de rapprocher une ligne d'un point. Je
l'appelle l'astuce du carré. Rappelez-vous que le tour simple consistait en quatre cas basés sur
la position du point par rapport à la ligne. L'astuce du carré ramène ces quatre cas à un seul en
trouvant des valeurs avec les bons signes (+ ou -) à ajouter à la pente et à l'ordonnée à l'origine
pour que la droite se rapproche toujours du point.
Nous commençons par l'ordonnée à l'origine. Remarquez les deux observations suivantes :
• Observation 1 : Dans le tour simple, lorsque le point est au-dessus de la ligne, nous
ajoutons une petite quantité à l'ordonnée à l'origine. Lorsqu'il est en dessous de la
ligne, nous soustrayons une petite quantité.
• Observation 2 : Si un point est au-dessus de la ligne, la valeur p - p̂(la différence entre le prix et
le prix prédit) est positive. S'il est en dessous de la ligne, cette valeur est négative. Cette
observation est illustrée dans la figure 3.12.
58 Chapitre 3 I Tracer une ligne proche de nos points : La régression
linéaire

y y
Prix Prix prévu

Prix - Prix prédit > 0 Prix - Prix prédit < 0

Prix prévu Prix


x x

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.

En mettant ensemble l'observation 1 et l'observation 2, nous concluons que si nous ajoutons la


différence p - pˆ à l'ordonnée à l'origine, la ligne se déplacera toujours vers le point, car cette valeur
est positive lorsque le point est au-dessus de la ligne et négative lorsque le point est au-dessous
de la ligne. Cependant, en apprentissage automatique, nous voulons toujours faire de petits
pas. Pour nous y aider, nous introduisons un concept important dans l'apprentissage
automatique : le taux d'apprentissage.

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

Et voici le code pour l'astuce du carré :


def square_trick(base_price, prix_par_chambre, num_chambres, prix,
taux_d'apprentissage) :
prix_prévu = prix_de_base + prix_par_chambre*nombre_de_chambres Calcule la
prix_de_base += taux_d'apprentissage*(prix_prévu) prédiction
prix_par_chambre +=
taux_d'apprentissage*nombre_de_chambres*(prix_prévu) return
prix_par_chambre, prix_de_base

Traduit la ligne Fait pivoter la ligne

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 :

Pseudocode pour l'astuce absolue


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 :
Cas 1 : Si le point est au-dessus de la ligne (c'est-à-dire si p > pˆ) :
• Ajoutez hr à la pente m. Obtenez m¢ = m + hr (ceci fait tourner la ligne dans le sens
inverse des aiguilles d'une montre si le point est à droite de l'axe des y, et dans le sens
des aiguilles d'une montre s'il est à gauche de l'axe des y).
• Ajouter h à l'ordonnée à l'origine b. Obtenir b ¢ = b + h (cela traduit la ligne vers le haut).
Cas 2 : si le point est en dessous de la droite (c'est-à-dire si p < pˆ) :
• Soustraire hr de la pente m. Obtenir m¢ = m - hr (ceci fait tourner la ligne dans le
sens des aiguilles d'une montre si le point est à droite de l'axe des y, et dans le sens
inverse des aiguilles d'une montre s'il est à gauche de l'axe des y).
• Soustraire h de l'ordonnée à l'origine b. Obtenir b ¢ = b - h (cela translate la droite vers le bas).
Retour : La ligne d'équation p̂= m¢r + b ¢
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 61
régression linéaire

Voici le code pour l'astuce absolue :


def absolute_trick(prix de base, prix_par_chambre, nombre_de_chambres,
prix, taux_d'apprentissage) :
prix_prévu = prix_de_base +
prix_par_chambre*nombre_de_chambres si prix >
prix_prévu :
prix_par_salle += taux
d'apprentissage*nombre_salles
prix_de_base += taux d'apprentissage
autre :
price_per_room -= learning_rate*num_rooms
base_price -= learning_rate
Retourner le prix par chambre, le prix de base.

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

Figure 3.14 Le tracé des points du tableau 3.2

L'utilisation de l'algorithme de régression linéaire dans notre jeu de données


Maintenant, appliquons l'algorithme pour ajuster une ligne à ces points. La ligne de code
suivante exécute l'algorithme avec les caractéristiques, les étiquettes, le taux d'apprentissage égal
à 0,01 et le nombre d'époques égal à 10 000. Le résultat est le graphique illustré à la figure 3.15.
Régression linéaire(caractéristiques, étiquettes, taux d'apprentissage = 0.01, époques
= 10000)

Prix par chambre :


51.053 Prix de base :

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.

Point de départEpoque 1-10 Epoque1-50Epoque 51-10,000

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).

Utiliser le modèle pour faire des prédictions


Maintenant que nous avons un modèle de régression linéaire brillant, nous pouvons l'utiliser pour
faire des prédictions ! Rappelez-vous, au début du chapitre, que notre objectif était de prédire le
prix d'une maison de quatre pièces. Dans la section précédente, nous avons exécuté l'algorithme
et obtenu une pente (prix par pièce) de 51,05 et un ordonnée à l'origine (prix de base de la
maison) de 99,10. L'équation est donc la suivante :
p̂= 51,05r + 99,10
La prédiction que fait le modèle pour une maison avec r = 4
pièces est la suivante
p̂= 51,05 - 4 + 99,10 = 303,30.
Notez que 303,30 $ n'est pas loin des 300 $ que nous avions estimés au début du chapitre !

L'algorithme de régression linéaire générale (facultatif)


Cette section est facultative, car elle se concentre principalement sur les détails
mathématiques de l'algorithme plus abstrait utilisé pour un ensemble de données général.
Cependant, je vous encourage à la lire pour vous habituer à la notation utilisée dans la plupart
66 Chapitre 3 I Tracer une ligne proche de nos points : La régression
des ouvrages sur l'apprentissage
linéaire automatique.
Dans les sections précédentes, nous avons décrit l'algorithme de régression linéaire pour notre
ensemble de données avec une seule caractéristique. Mais comme vous pouvez l'imaginer, dans la
vie réelle, nous travaillerons avec des ensembles de données comportant de nombreuses
caractéristiques. Pour cela, nous avons besoin d'un algorithme général. La bonne nouvelle est que
l'algorithme général n'est pas très différent.
Comment faire en sorte que l'ordinateur dessine cette ligne : L'algorithme de 67
régression linéaire

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

• Les étiquettes correspondantes sont y1, y2, ... , ym.


• Les poids du modèle sont w1, w2, ... , wn.
• Le biais du modèle est b.

Pseudocode pour l'astuce générale du carré


Entrées :
• Un modèle dont l'équation est
11
yˆ = w x + w x + ...n+ w x + b
2 2+n

• Un point de coordonnées (x, y)


• Une petite valeur positive h (le taux d'apprentissage)
Sortie :
• Un modèle avec l'équation yˆ =1 12w2n¢x + w ¢x + ... + w ¢x + b ¢ qui est plus proche du point
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

Le pseudocode de l'algorithme général de régression linéaire est le même que celui de la


section "L'algorithme de régression linéaire", car il consiste à itérer sur le tour de carré général,
nous l'omettrons donc.

Comment mesurons-nous nos résultats ? La fonction


d'erreur
Dans les sections précédentes, nous avons développé une approche directe pour trouver le
meilleur ajustement de ligne. Cependant, il est souvent difficile d'utiliser une approche directe
68 I
Chapitre 3 Tracer une ligne proche de nos points : La régression
pour résoudre leslinéaire
problèmes d'apprentissage automatique. Une façon plus indirecte, mais
plus mécanique, de procéder est d'utiliser les fonctions d'erreur. Une fonction d'erreur est une
métrique qui nous indique comment notre modèle se comporte. Par exemple, regardez les
deux modèles de la figure suivante
3.17. Celui de gauche est un mauvais modèle, tandis que celui de droite est un bon modèle. L'erreur
Comment mesurons-nous nos résultats ? La fonction 61
d'erreur

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.

Mauvais modèle Bonmodèle

Grande erreur Petiteerreur

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.

L'erreur quadratique : Une métrique qui nous indique la


qualité de notre modèle en additionnant les carrés des
distances.
L'erreur au carré est très similaire à l'erreur absolue, sauf qu'au lieu de prendre la valeur absolue de
la différence entre l'étiquette et l'étiquette prédite, nous prenons le carré. Cela transforme
toujours le nombre en un nombre positif, car le carré d'un nombre le rend toujours positif. Le
processus est illustré à la figure 3.19, où l'erreur au carré est représentée comme la somme des
aires des carrés des longueurs entre les points et la ligne. Vous pouvez voir que le mauvais modèle
de gauche présente une erreur quadratique importante, tandis que le bon modèle de droite
présente une erreur quadratique faible.
Grand carréerreur Petitcarré erreur

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.

Descente par gradient : Comment diminuer une fonction d'erreur en


descendant lentement d'une montagne.
Dans cette section, je vous montre comment réduire toutes les erreurs précédentes en
utilisant une méthode similaire à celle que nous utiliserions pour descendre lentement d'une
montagne. Ce processus utilise des dérivés, mais voici la bonne nouvelle : vous n'avez pas besoin de
dérivés pour le comprendre. Nous les avons déjà utilisées dans le processus d'entraînement dans les
sections "Le truc carré" et "Le truc absolu" précédentes. Chaque fois que nous "déplaçons une
petite quantité dans cette direction", nous calculons en arrière-plan une dérivée de la fonction
d'erreur et l'utilisons pour nous donner une direction dans laquelle déplacer notre ligne. Si
vous aimez les calculs et que vous voulez voir la dérivation complète de cet algorithme à l'aide des
dérivées et des gradients, consultez l'annexe B. Prenons un peu de recul et regardons la régression
linéaire de loin. Qu'est-ce que nous voulons faire ?
Nous voulons trouver la ligne qui correspond le mieux à nos données. Nous disposons d'une
métrique appelée fonction d'erreur, qui nous indique à quel point une ligne est éloignée des
données. Ainsi, si nous pouvions réduire ce nombre autant que possible, nous trouverions la
meilleure ligne d'ajustement. Ce processus, commun à de nombreux domaines des
mathématiques, s'appelle la minimisation des fonctions, c'est-à-dire la recherche de la plus petite
66 Chapitre 3 I Tracer une ligne proche de nos points : La régression
valeur possible qu'une fonction peut renvoyer. C'est là que la descente de gradient entre en jeu :
linéaire
c'est un excellent moyen de minimiser une fonction.
Dans ce cas, la fonction que nous essayons de minimiser est l'erreur (absolue ou carrée) de
notre modèle. Une petite mise en garde s'impose : la descente de gradient ne trouve pas
toujours la valeur minimale exacte de la fonction, mais elle peut trouver quelque chose de très
proche. La bonne nouvelle est que, dans la pratique, la descente de gradient est rapide et
efficace pour trouver les points où la fonction est faible.
Comment fonctionne la descente en pente ? La descente par gradient est l'équivalent de la
descente d'une montagne. Disons que nous nous trouvons au sommet d'une grande
montagne appelée Mont Errorest. Nous souhaitons
Comment mesurons-nous nos résultats ? La fonction 67
d'erreur

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.

Doit-on s'entraîner en utilisant un point à la


fois ou plusieurs ? Descente de gradient
stochastique et par lots
Dans la section "Comment amener l'ordinateur à tracer cette ligne", nous avons entraîné un
modèle de régression linéaire en répétant une étape plusieurs fois. Cette étape consistait à
choisir un point et à déplacer la ligne vers ce point. Dans la section "Comment mesurer nos
résultats", nous avons entraîné un modèle de régression linéaire en calculant l'erreur (absolue ou
au carré) et en la diminuant à l'aide de la descente de gradient. Cependant, cette erreur a été
calculée sur l'ensemble des données, et non sur un point à la fois. Pourquoi cela ? En réalité, nous
pouvons former des modèles en itérant sur un point à la fois ou sur l'ensemble des données.
Cependant, lorsque les ensembles de données sont très volumineux, les deux options peuvent
s'avérer coûteuses. Nous pouvons pratiquer une méthode utile appelée apprentissage par mini-
lots, qui consiste à diviser nos données en de nombreux mini-lots. À chaque itération de
l'algorithme de régression linéaire, nous choisissons un des mini-lots et procédons à l'ajustement
des poids du modèle afin de réduire l'erreur dans ce mini-lot. La décision d'utiliser un point, un
mini-batch de points ou l'ensemble des données à chaque itération donne lieu à trois types
généraux d'algorithmes de descente de gradient. Lorsque nous utilisons un point à la fois, on parle
de descente de gradient stochastique. Lorsque l'on utilise un mini-lot, on parle de descente de
gradient par mini-lots.
Lorsque nous utilisons l'ensemble des données, on parle de descente de gradient par lots. Ce
processus est illustré plus en détail dans l'annexe B, "Utilisation de la descente de gradient
pour former des modèles".

Application dans la vie réelle : Utilisation de Turi


Create pour prévoir les prix des logements en Inde
Dans cette section, je vous montre une application réelle. Nous allons utiliser la régression
linéaire pour prédire les prix des logements à Hyderabad, en Inde. L'ensemble de données que
nous utilisons provient de Kaggle, un site populaire pour les concours d'apprentissage
automatique. Le code de cette section est le suivant :
• Carnet de notes : House_price_predictions.ipynb
- https://github.com/luisguiserrano/manning/blob/master/Chapter_3_Linear_
68 Chapitre 3 I Tracer une ligne proche de nos points : La régression
Regression/House_price_predictions.ipynb
linéaire
• Jeu de données : Hyderabad.csv
Cet ensemble de données comporte 6 207 lignes (une par maison) et 39 colonnes
(caractéristiques). Comme vous pouvez l'imaginer, nous ne coderons pas l'algorithme à la
main. Au lieu de cela, nous utilisons Turi Create, un paquetage populaire et utile dans lequel
de nombreux algorithmes d'apprentissage automatique sont mis en œuvre. L'objet principal
pour stocker les données dans
Application dans la vie réelle : Utilisation de Turi Create pour prévoir les 69
prix des logements en Inde

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

La sortie nous donne les pondérations suivantes :


• Pente : 9664.97
• Intersection des ordonnées : -6 105 981,01
L'intercept est le biais, et le coefficient de la surface est la pente de la ligne, lorsque nous traçons la
surface et le prix. La figure 3.24 montre le tracé des points avec le modèle correspondant.

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.

Que faire si les données ne sont


pas alignées ? Régression
polynomiale
Dans les sections précédentes, nous avons appris à trouver le meilleur ajustement linéaire
pour nos données, en supposant que nos données ressemblent à une ligne. Mais que se passe-t-
il si nos données ne ressemblent pas à une ligne ? Dans cette section, nous allons découvrir une
extension puissante de la régression linéaire, appelée régression polynomiale, qui nous permet de
traiter les cas où les données sont plus complexes.
70 I
Chapitre 3 Tracer une ligne proche de nos points : La régression
Un type particulier de fonctions courbes : Polynômes
linéaire
Pour apprendre la régression polynomiale, nous devons d'abord apprendre ce que sont les
polynômes. Les polynômes sont une classe de fonctions qui sont utiles pour modéliser des
données non linéaires.
Que faire si les données ne sont pas alignées ? 71
Régression polynomiale

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.

Degré 0 Degré 1 Degré 2 Degré 3


y=4 y = 3x + y= x2 - 2x -3 y= x + 2x2 - 4x -1
3

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).

Taille (s) Prix (p)


Maison 1 100 200
Maison 2 200 475
Maison 3 200 400
Maison 4 250 520
Maison 5 325 735

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.

Vous aimerez peut-être aussi