0% ont trouvé ce document utile (0 vote)
26 vues34 pages

Chap 2

Ce document traite de l'apprentissage supervisé, en se concentrant sur la régression, qui est utilisée pour prédire des valeurs réelles. Il présente divers modèles de régression, notamment la régression linéaire, et discute de la fonction coût ainsi que des méthodes d'évaluation des modèles, telles que la validation croisée. Enfin, il illustre l'implémentation de la régression linéaire à l'aide d'un ensemble de données sur les maisons à Boston, en comparant plusieurs modèles pour déterminer le meilleur.

Transféré par

mootazlaayouni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues34 pages

Chap 2

Ce document traite de l'apprentissage supervisé, en se concentrant sur la régression, qui est utilisée pour prédire des valeurs réelles. Il présente divers modèles de régression, notamment la régression linéaire, et discute de la fonction coût ainsi que des méthodes d'évaluation des modèles, telles que la validation croisée. Enfin, il illustre l'implémentation de la régression linéaire à l'aide d'un ensemble de données sur les maisons à Boston, en comparant plusieurs modèles pour déterminer le meilleur.

Transféré par

mootazlaayouni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Apprentissage supervisé - Régression

Mohamed Essaied Hamrita

IHEC - Sousse

1 / 34
Introduction

La fonction coût (Cost (loss) function)

La régression linéaire

2 / 34
3 / 34
Introduction

4 / 34
Introduction

L’apprentissage supervisé est classée dans deux catégories d’algorithmes:

5 / 34
Introduction

L’apprentissage supervisé est classée dans deux catégories d’algorithmes:


▶ Régression : Un problème de régression se pose lorsque la variable étiquetée
(labelled) est une valeur réelle.

6 / 34
Introduction

L’apprentissage supervisé est classée dans deux catégories d’algorithmes:


▶ Régression : Un problème de régression se pose lorsque la variable étiquetée
(labelled) est une valeur réelle.
Dans la littérature, il existe plusieurs types de modèles de régression tels que la
régression linéaire, la régression logistique, le SVM (Support Vector Machine), NN
(neural network) et KNN (K nearest neighbour), . . .

7 / 34
Introduction

L’apprentissage supervisé est classée dans deux catégories d’algorithmes:


▶ Régression : Un problème de régression se pose lorsque la variable étiquetée
(labelled) est une valeur réelle.
Dans la littérature, il existe plusieurs types de modèles de régression tels que la
régression linéaire, la régression logistique, le SVM (Support Vector Machine), NN
(neural network) et KNN (K nearest neighbour), . . .
▶ Classification : On parle d’un problème de classification lorsque la variable
étiquetée est catégorielle (binaire ou multi-classes).

8 / 34
Introduction

L’apprentissage supervisé est classée dans deux catégories d’algorithmes:


▶ Régression : Un problème de régression se pose lorsque la variable étiquetée
(labelled) est une valeur réelle.
Dans la littérature, il existe plusieurs types de modèles de régression tels que la
régression linéaire, la régression logistique, le SVM (Support Vector Machine), NN
(neural network) et KNN (K nearest neighbour), . . .
▶ Classification : On parle d’un problème de classification lorsque la variable
étiquetée est catégorielle (binaire ou multi-classes).
Les modèles de classification comprennent la régression logistique, l’arbre de décision
(tree decision), la forêt aléatoire (random forest), KNN et SVM.

9 / 34
La fonction coût (Cost (loss) function)

10 / 34
La fonction coût (Cost (loss) function)

L’apprentissage statistique supervisé repose sur une hypothèse qui minimise le coût (la
perte) moyen(ne) dans l’échantillon. Ce qu’on appelle le problème minimisation du coût.

11 / 34
La fonction coût (Cost (loss) function)

L’apprentissage statistique supervisé repose sur une hypothèse qui minimise le coût (la
perte) moyen(ne) dans l’échantillon. Ce qu’on appelle le problème minimisation du coût.
La fonction d’un prédicteur f est donné par: R(f ) = E (ℓ (f (x )) , y ).
Le meilleur prédicteur est celui qui minimise cette fonction: f ∗ = min {R(f )}.

12 / 34
La fonction coût (Cost (loss) function)

L’apprentissage statistique supervisé repose sur une hypothèse qui minimise le coût (la
perte) moyen(ne) dans l’échantillon. Ce qu’on appelle le problème minimisation du coût.
La fonction d’un prédicteur f est donné par: R(f ) = E (ℓ (f (x )) , y ).
Le meilleur prédicteur est celui qui minimise cette fonction: f ∗ = min {R(f )}.
L’estimateur de la fonction coût est:
1 X
Rn (f ) = ℓ (f (xi ), yi )
n
i

13 / 34
La régression linéaire

14 / 34
La régression linéaire

La régression linéaire consiste à estimer (k + 1) paramètres dans une relation linéaire


entre une variable dépendante (target) et k variables indépendantes (features):

yi = β0 + β1 x1i + . . . + βk xki + εi (Y = X β + ε)

▶ f est la relation linéaire entre yi et xki ;


▶ ℓ peut être le coût de l’erreur quadratique:

1 X 2
ℓ(f (x ), y ) = (f (x ) − y )2 = xi′ β − yi
n
i

▶ Le meilleur prédicteur s’obtient en minimisant la fonction coût

1 X 2
fb∗ = min (f (x ) − y )2 = xi′ β − yi
β n
i

15 / 34
Implémentation sous R:
▶ Dataset and exploration: La bibliothèque MASS contient l’ensemble de données de
Boston, qui enregistre la medv (valeur mediane des maisons) pour 506 quartiers de
Boston. Nous chercherons à prédire medv à l’aide de 13 prédicteurs tels que rm
(nombre moyen de pièces par maison), age (âge moyen des maisons) et lstat
(pourcentage de ménages à faible revenu).
library(MASS)
names(Boston) # Les noms des variables

[1] "crim" "zn" "indus" "chas" "nox" "rm" "age"


[8] "dis" "rad" "tax" "ptratio" "black" "lstat" "medv"
any([Link](Boston)) # y a t-il des valeurs manquantes?

[1] FALSE

16 / 34
▶ Model training and evaluation
Le problème fondamental de sur-estimation (overfitting) est que le risque empirique, est
biaisé à la baisse par rapport au risque de la population. Nous pouvons éliminer ce biais
de deux manières : (a) des approches de ré-échantillonnage purement algorithmiques
(train/test (échantillonnage aléatoire simple (EAS)) et k-fold cross validation
(échantillonnage stratifié)) et (b) des estimateurs fondés sur la théorie.

17 / 34
▶ Model training and evaluation
Le problème fondamental de sur-estimation (overfitting) est que le risque empirique, est
biaisé à la baisse par rapport au risque de la population. Nous pouvons éliminer ce biais
de deux manières : (a) des approches de ré-échantillonnage purement algorithmiques
(train/test (échantillonnage aléatoire simple (EAS)) et k-fold cross validation
(échantillonnage stratifié)) et (b) des estimateurs fondés sur la théorie.

18 / 34
▶ Spit data
[Link](0123); n=nrow(Boston)
i_train=sample(1:n, round(0.7*n))
train=Boston[i_train,] ; test=Boston[-i_train,]

où encore, avec la bibliothèque caret


library(caret); [Link](0123)
i_tr=createDataPartition(Boston[,1], p=0.7, list=F)
train2=Boston[i_tr,] ; test2=Boston[-i_tr,]

19 / 34
▶ Estimation
mod1=lm(medv ~ rm , data=train); summary(mod1)

Call:
lm(formula = medv ~ rm, data = train)

Residuals:
Min 1Q Median 3Q Max
-19.325 -2.586 0.028 2.829 39.073

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -32.6774 3.3137 -9.861 <2e-16 ***
rm 8.7735 0.5256 16.691 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6.803 on 352 degrees of freedom


Multiple R-squared: 0.4418, Adjusted R-squared: 0.4402
F-statistic: 278.6 on 1 and 352 DF, p-value: < 2.2e-16

20 / 34
mod2=update(mod1, .~. + lstat , data=train)
summary(mod2)

Call:
lm(formula = medv ~ rm + lstat, data = train)

Residuals:
Min 1Q Median 3Q Max
-12.468 -3.470 -1.154 1.753 27.410

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.98609 3.82193 0.52 0.604
rm 4.58297 0.54042 8.48 6.33e-16 ***
lstat -0.66666 0.05145 -12.96 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5.603 on 351 degrees of freedom


Multiple R-squared: 0.6224, Adjusted R-squared: 0.6202
F-statistic: 289.3 on 2 and 351 DF, p-value: < 2.2e-16

21 / 34
mod3=update(mod2, .~. + age, data=train)
summary(mod3)

Call:
lm(formula = medv ~ rm + lstat + age, data = train)

Residuals:
Min 1Q Median 3Q Max
-12.928 -3.442 -1.175 1.915 26.430

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.96544 3.81823 0.515 0.607
rm 4.49245 0.54437 8.253 3.2e-15 ***
lstat -0.71310 0.06261 -11.389 < 2e-16 ***
age 0.01723 0.01327 1.299 0.195
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5.598 on 350 degrees of freedom


Multiple R-squared: 0.6242, Adjusted R-squared: 0.621
F-statistic: 193.8 on 3 and 350 DF, p-value: < 2.2e-16

22 / 34
On a estimé 3 modèles. La question qui se pose: quel est le meilleur modèle ?

23 / 34
On a estimé 3 modèles. La question qui se pose: quel est le meilleur modèle ?
Pour répondre à cette question, on doit définir ce que veut dire “meilleur”. Dans ce cas,
on utilisera RMSE comme métrique et la validation croisée comme approche de
re-échantillonnage.
[Link](123)
(cv_mod1 <- train(form = medv ~ rm,
data = train, method = "lm",
trControl = trainControl(method = "cv", number = 10)))

Linear Regression

354 samples
1 predictor

No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 318, 319, 318, 319, 319, 319, ...
Resampling results:

RMSE Rsquared MAE


6.568065 0.4999459 4.517952

Tuning parameter 'intercept' was held constant at a value of TRUE

24 / 34
[Link](123)
(cv_mod2 <- train(form = medv ~ rm + lstat,
data = train, method = "lm",
trControl = trainControl(method = "cv", number = 10)))

Linear Regression

354 samples
2 predictor

No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 318, 319, 318, 319, 319, 319, ...
Resampling results:

RMSE Rsquared MAE


5.50875 0.6357689 4.0166

Tuning parameter 'intercept' was held constant at a value of TRUE

25 / 34
[Link](123)
(cv_mod3 <- train(form = medv ~ rm + lstat + age,
data = train, method = "lm",
trControl = trainControl(method = "cv", number = 10)))

Linear Regression

354 samples
3 predictor

No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 318, 319, 318, 319, 319, 319, ...
Resampling results:

RMSE Rsquared MAE


5.577216 0.6290893 4.048824

Tuning parameter 'intercept' was held constant at a value of TRUE

26 / 34
# Extract out of sample performance measures
summary(resamples(list(model1 = cv_mod1, model2 = cv_mod2,
model3 = cv_mod3)))

Call:
[Link](object = resamples(list(model1 = cv_mod1, model2 =
cv_mod2, model3 = cv_mod3)))

Models: model1, model2, model3


Number of resamples: 10

MAE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
model1 3.679413 3.789617 4.171966 4.517952 4.755100 7.561154 0
model2 2.666590 3.587005 3.803046 4.016600 4.392750 6.279433 0
model3 2.810045 3.649151 3.806138 4.048824 4.410426 6.322432 0

RMSE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
model1 4.994818 5.231666 6.008484 6.568065 7.007573 12.070129 0
model2 3.132182 4.933731 5.178013 5.508750 6.024353 9.429550 0
model3 3.311719 4.892822 5.251309 5.577216 6.236043 9.544912 0

Rsquared
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
model1 0.04276741 0.3401524 0.5536225 0.4999459 0.6888395 0.7678734 0
model2 0.32808065 0.5486184 0.6440678 0.6357689 0.7665443 0.8070292 0
model3 0.31286706 0.5440675 0.6521460 0.6290893 0.7546747 0.7883733 0

27 / 34
L’estimation du modèle linéaire se repose sur le respect de quelques hypothèses
(linéarité, variance constante, erreurs non corrolées, . . . )

28 / 34
L’estimation du modèle linéaire se repose sur le respect de quelques hypothèses
(linéarité, variance constante, erreurs non corrolées, . . . )
Donc, l’étape de la validation consiste à vérifier si ces hypothèses sont bien remplies à
travers des graphiques et des tests statistiques.

p1=ggplot(train,aes(medv, rm))+geom_point(size=1, alpha=0.4)+geom_smooth(se=F)

p2=ggplot(train,aes(medv, rm))+geom_point(size=1, alpha=0.4)+geom_smooth(method="lm",se=F)+


scale_y_log10("rm")

29 / 34
gridExtra::[Link](p1,p2, nrow=1)

7
rm

rm
6

10 20 30 40 50 10 20 30 40 50
medv medv

30 / 34
L’homoscédasticité:
p11=ggplot(cv_mod1$finalModel, aes(x = .fitted, y = .resid))+ geom_point()+
geom_hline(yintercept = 0) + labs(title='Residual vs. Fitted Values Plot', x='Fitted Values',
y='Residuals')

p12=ggplot(cv_mod2$finalModel, aes(x = .fitted, y = .resid)) + geom_point() +


geom_hline(yintercept = 0) + labs(title='Residual vs. Fitted Values Plot', x='Fitted Values',
y='Residuals')

p13=ggplot(cv_mod3$finalModel, aes(x = .fitted, y = .resid)) +geom_point() +


geom_hline(yintercept = 0) + labs(title='Residual vs. Fitted Values Plot', x='Fitted Values',
y='Residuals')

gridExtra::[Link](p11,p12,p13,nrow=1)

Residual vs. Fitted Values Plot Residual vs. Fitted Values Plot Residual vs. Fitted Values Plot
40

20
20

20

10
10
Residuals

Residuals

Residuals
0 0
0

−10
−10

−20

0 10 20 30 40 0 10 20 30 40 0 10 20 30 40
Fitted Values Fitted Values Fitted Values

31 / 34
L’autocorrelation: pour tester graphiquement si les erreurs sont indépendantes, on peut
faire recours à la fonction checkresiduals()de la bibliothèque forecast.

forecast::checkresiduals(cv_mod1)
Residuals from lm
40

20

−20
0 100 200 300

0.10
60

0.05

40
0.00
ACF

df$y

−0.05
20

−0.10

0
0 5 10 15 20 25 −20 0 20 40
Lag residuals

32 / 34
Une fois, le modèle est validé, on passe à tester la précision des prévisions du modèle.
Ceci se fait en déterminant la prévision sur la partie test et la comparer par la vrai
valeur.
pred=predict(cv_mod1, newdata = test)
rmse=sqrt(mean((test$medv-pred)ˆ2)); rmse

[1] 6.177801
rmae=sqrt(mean(abs(test$medv-pred))); rmae

[1] 2.103623

33 / 34
dd=[Link](TrueVal=test$medv,PredVal=pred)
p3=ggplot(dd, aes(x=1:nrow(dd)))+
geom_line(aes(y=TrueVal))+
geom_line(aes(y=PredVal), color="darkred")+
labs(x="", y="")
p3

50

40

30

20

10

0 50 100 150

34 / 34

Vous aimerez peut-être aussi