Introduction
En Machine Learning, la méthode des équations normales est une méthode d’optimisation permettant de résoudre des problèmes de régression, c’est-à-dire des problèmes visant à prédire une variable continue (une quantité). La figure ci-dessous illustre un exemple de ce genre de problème, avec sur la droite la solution recherchée. Le but est ici de trouver quel est le modèle qui minimise l’erreur quadratique moyenne (la MSE : Mean Squared Error), c’est-à-dire la distance euclidienne moyenne entre les points et la droite du modèle.
Recherche du meilleur modèle
Le modèle que l’on cherche à développer est un modèle linéaire, c’est-à-dire un modèle de la forme:
f(x) = ax + b(ou pour la forme générale : f(x_1, ..., x_n) = \displaystyle \sum_{j=1}^{n} w_j x_j + b )
Pour trouver un “bon” modèle, il faut tester différentes valeurs pour ces paramètres w_j en mesurant les valeurs qui donnent les plus petites erreurs. Ces erreurs sont mesurées par la MSE :
MSE = \frac{1}{2m} \displaystyle \sum_{i=1}^{m} (f(x) - y)^2
La figure ci-dessous montre le résultat de plusieurs valeurs de “a” testées pour un modèle du type f(x) = ax + b. Le graphique de la MSE montre une forme de parabole indiquant quelle est la meilleure valeur de “a” pour notre modèle (celle au minimum de la parabole). Il existe 2 approches pour trouver ce minimum. La première est la descente de gradient, et la deuxième est la méthode des équations normales.
Les Équations Normales
la méthode des équations normales consiste à trouver le point minimum de la courbe de MSE en calculant la position à laquelle cette courbe donne une dérivée nulle. Car en mathématique, une dérivée nulle est indicative d’un minimum, d’un maximum ou bien d’un plateau. Or la formule de la MSE (et son graphique parabolique) permet de déduire qu’il n’y a ni maximum, ni plateau. De cette manière, en trouvant les coordonnées \theta = [w_j, b] satisfaisant une dérivée de MSE nulle, on est certain d’obtenir le meilleur modèle possible (celui qui minimise la MSE). Voici les maths :
Notre modèle (sous forme vectorielle):
F = X.\theta
La MSE :
MSE = \frac{1}{2m} \displaystyle \sum_{i=1}^{m} (X.\theta - y)^2
La dérivée de la MSE (par rapport aux paramètres du modèle):
\displaystyle \frac{\partial MSE }{\partial \theta } = \frac{1}{m} X^T (X.\theta - y)
Comme énoncé plus haut, la méthode des équations normales cherche la valeur de \theta qui assure une dérivée nulle. On commence donc par poser :
\displaystyle \frac{\partial MSE }{\partial \theta } = 0
En développant cette formule, on arrive à celle des équations normales:
\theta = (X^T.X)^{-1}.X^T.y
Le code
[code lang=”python”]
import numpy as np
import matplotlib.pyplot as plt
# Génération de données
m = 100
X = np.linspace(0, 10, m).reshape(-1, 1)
y = 0.6 * X + 40 + np.random.randn(m, 1)
# Formule des équations normales
theta = np.dot(np.linalg.pinv(X.T.dot(X)), X.T.dot(y))
# Utilisation du modele pour effectuer des prédictions
predictions = X.dot(theta)
[/code]
Bonjour,
Tout d’abord, article très intéressant, merci :-))
Je trouve vos graphiques super attractifs, avec quoi les réaliser vous? Quel logiciel ?
J’aimerai aussi pouvoir faire le style surlignage pour mes fiches de révision, merci par avance !
Thomas
Merci beaucoup Thomas. Je fais mes graphiques sur tablette en dessinant au stylet dans l’application Bloc note d’Apple.
D’accord, c’est la tablette qui fait tout le style en fait? Car Bloc note Apple est très simpliste si je dis pas de bêtise ^^
Vous avez quelle tablette ? (j’en vois tellement :p)
C’est un Ipad 6eme génération. En effet le bloc note est très simpliste mais avec un stylet on peut faire des graphiques sympas 🙂
Bonjour Guillaume,
J’ai bien compris l’aspect mathématique et beaucoup de codes de modèle de régression linéaire à travers
vos vidéos et je vous en remercie énormément. Cependant, j’aimerais également comprendre comment implémenter
avec python, l’équation du modèle de machine learning.
Je vous remercie encore une fois de plus.
Bonjour, je vous conseille de suivre ma série de videos Python Machine Learning pour répondre a cette question
Bonjour,
merci beaucoup pour le cours c est formidable
je veux svp le code entier 🙂
merci
Vous êtes au top Monsieur.
Que Dieu vous garde pour les jeunes apprenants comme nous . Je vous souhaite tout le meilleur que vous désirez
Bonjour,Guillaume,
Moi c’est IBRAHIM,
Vraiment j’ai trouvé votre article très intéressent et très bien détaillé.
Moi je suis nouveau et c’est ma toute première fois de vous lire,maintenant j’aimerais savoir
comment je peux faire pour parvenir à vous lire à chaque fois que vous postez??? .
Bonjour et merci beaucoup
Pour rester informé des nouveautés, il suffit de vous abonnez a la newsletter en téléchargeant le livre gratuit.
Bonjour,
Ok c’est compris mais le livre est téléchargeable sur google?