Dans ce cours, nous traitons la régression linéaire, une approche très simple pour l'apprentissage supervisé. En particulier, la régression linéaire est un outil utile pour prédire une variable réponse quantitative.
La régression linéaire simple porte bien son nom : il s'agit d'une approche très simple pour prédire une réponse quantitative Y sur la base d'une variable prédictive X. Elle suppose qu'il existe approximativement une relation linéaire entre X et Y . Mathématiquement, nous pouvons écrire cette relation linéaire comme
Dans l'équation \ref{simpleLM}, $\beta_0$ et $\beta_1$ sont deux constantes inconnues qui représentent les termes de l'intercept ($\beta_0$) et de la pente ($\beta_1$ ) dans le modèle linéaire. Ils sont connus comme les coefficients ou paramètres du modèle.
Une fois que nous avons utilisé nos données d'entraînement du modèle pour estimer $\hat{\beta}_0$ et $\hat{\beta}_1$, nous pouvons prédire nos $Y$ en écrivant:
options(warn=-1)
adv<-read.csv("https://raw.githubusercontent.com/nmeraihi/data/master/islr/Advertising.csv")
head(adv)
fit.lm <- lm(Sales ~ TV, data=adv)
summary(fit.lm)
library(ggplot2)
options(repr.plot.width=5, repr.plot.height=3)
library(ggplot2)
options(repr.plot.width=5, repr.plot.height=3)
ggplot(adv, aes(TV, Sales)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
Soit $ \hat{y}= \hat{\beta}_0 + \hat{\beta}_1 X$ la prédiction pour $Y$ sur la $i$ème valeur de $X$. Pour chaque point rouge dans la figure ci-dessous, on peut calculer "de combien on s'est trompé" dans notre prédiction, on peut le faire en calculant la distance (verticale) entre le point rouge et la droite bleue qui la régression linéaire simple de notre jeu de données.
Alors pour chaque point $i$, nous pouvons écrire $e_i=y_i -\hat{y}_i$. Nous appelons $e_i$ le $i$ème résidu. Nous pouvons calculer la somme du carré (valeur positives et négatives) des résidus par:
ou de manière équivalente à
$$ \text{RSS}=(y_1-\hat{\beta}_0 - \hat{\beta}_1 x_1)^2, (y_2-\hat{\beta}_0 - \hat{\beta}_1 x_2)^2, \dots, (y_n-\hat{\beta}_0 - \hat{\beta}_1 x_2)^2. \label{RSS}\tag{3.3.1} $$Le but bien évidemment est d'avoir cette somme des résidus la plus petite possible. Nous devons donc minimiser RSS
L'approche des moindres carrés choisit $\beta_0$ et $\beta_0$ pour minimiser le RSS. On peut montrer que;
où $\bar{y}=\frac{1}{n}\sum_{i=1}^ny_i$ et$\bar{x}=\frac{1}{n}\sum_{i=1}^nx_i$ sont les moyennes d'échantillonnage. En d'autres termes, (3.4.1) et (3.4.2) définissent les estimations des coefficients des moindres carrés pour la régression linéaire simple.
Soit le vecteur de paramètres $\beta$; $$ \beta:=[\beta_0, \dots \beta_1]^T, $$
le vecteur de la variable réponse des données d'entraînement:
$$ \mathbf{y}=[y_1, \dots y_n]^T $$et la matrice contenant les prédicteurs de l'ensemble des données d'entraînement:
\begin{equation*} \mathbf{X}_{n,p} = \begin{pmatrix} 1 & x_{1,1} & \cdots & x_{1,p} \\ 1 & x_{2,1} & \cdots & x_{2,p} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n,1} & \cdots & x_{n,p} \end{pmatrix} \end{equation*}Montrer que l'estimateur OLS ( ordinary least square ) des paramètres $\beta$ dans une régression linéaire est donné par:
$$ \hat{\beta}= (\mathbf{x}^T \mathbf{x})^{-1}\mathbf{x}^T\mathbf{y} \label{simpleLMOLS}\tag{3.4.3} $$fit.lm$coefficients
On peut donc écrire:
$$ \texttt{ventes} \approx 7.032594 + 0.047537\texttt{ télévision} $$L'équation ci-dessus implique donc qu'une augmentation de 100 unités des coûts de publicité (TV
) augmentera les vente de quatre unités.
La régression linéaire simple est une approche utile pour prédire une variable réponse sur la base d'une seule variable explicative. Cependant, dans la pratique, nous avons souvent plus d'un prédicteur. Par exemple, dans les données sur la publicité, nous avons examiné la relation entre les ventes et la publicité télévisée. Nous disposons également de données sur les sommes dépensées en publicité à la radio et dans les journaux, et nous souhaiterions peut-être savoir si l'un ou l'autre de ces deux médias est associé aux (plus ou moins) aux recettes des ventes.
Au lieu d'ajuster un modèle de régression linéaire simple distinct pour chaque prédicteur, une meilleure approche consiste à étendre le modèle de régression linéaire simple $Y= \beta_0 + \beta_1 X + \epsilon$ afin qu'il puisse directement s'adapter à de multiples prédicteurs. Nous pouvons le faire en donnant à chaque prédicteur un coefficient de pente distinct dans un modèle unique. En général, supposons que nous ayons $p$ prédicteurs distincts. Le modèle de régression linéaire multiple prend alors la forme
où $X_j$ représente le $j$ème prédicteur et $\beta_j$ quantifie l'association entre cette variable et la réponse. Nous interprétons $\beta_j$ comme l'effet moyen sur $Y$ d'une augmentation d'une unité de $X_j$, en maintenant fixes tous les autres prédicteurs. Dans l'exemple de la publicité, (3.5) devient
fit.lm3 <- lm(Sales ~ TV + Radio + Newspaper, data=adv)
summary(fit.lm3)
fit.lm3$coefficients
# install.packages("plotly")
library(plotly)
plot_ly(showscale=FALSE) %>%
add_markers(
x = adv$Radio,
y = adv$TV,
z = adv$Sales,
hoverinfo = 'text',
text = ~paste("x1 - Radio: ", adv$Radio,
"</br> x2 - TV: ", adv$TV,
"</br> y - Ventes: ", adv$Sales)
) %>%
layout(
scene = list(
xaxis = list(title = "x1 - Radio"),
yaxis = list(title = "x2 - TV ($)"),
zaxis = list(title = "y - Vente ($)")
)
)