Vous êtes sur la page 1sur 13

Université Tunis Dauphine M1 BDIA

Apprentissage statistique I
Examen Juillet 2023
Les documents, calculatrices, téléphones et ordinateurs portables sont interdits. La qualité de la
rédaction sera prise en compte dans la notation.

Problème
On considère le jeu de données Caravan (de la bibliothèque ISLR du Logiciel R). La variable cible (ou réponse)
est Purchase : qui indique si un individu donné achète ou non une assurance caravane. On a :

> dim(Caravan)
[1] 5822 86
> summary(Purchase)
No Yes
5474 348
> 348/5822
[1] 0.0598

1. S’agit-il d’un problème d’apprentissage supervisé ou non supervisé ? de classification ou de régression ?


2. Combien y a-t-il d’individus n dans cette étude ? Combien y a-t-il de variables explicatives p ?
3. Quelle est le pourcentage de personnes, de cette étude, qui ont acheté une assurance caravane ?

On décide de standardiser les données ainsi toutes les variables auront une moyenne de zéro et un écart-type de
un. La fonction du logiciel R, pour la standardisation, est scale()

4. Quelle est, d’après-vous, l’importance de la standardisation en analyse de données ?


5. On utilise donc l’instruction scale. On obtient :
standardized.X=scale(Caravan [,-86])
D’après vous, à quoi correspond la colonne 86 pour ce jeu de données Caravan ? Pourquoi on l’a enlevé
de la standardisation ?
Quelle est la dimension de ce nouveau jeu de données standardized.X ?

On manipulera par la suite, ce nouveau jeu de données standardized.X. On divise les observations en un jeu de
test et un jeu d’entraînement.

6. Expliquer l’utilité de chacun de ces deux jeux de données ainsi obtenus.

On écrit :

> test =1:1000


> train.X=standardized.X[-test,]
> test.X=standardized.X[test,]
> train.Y=Purchase[-test]
> test.Y=Purchase[test]
> set.seed(1)

On rappelle que test est une fonction numérique, avec des valeurs comprises entre 1 et 1000.
standardized.X[test,] donne la sous-matrice des données contenant les observations dont les indices vont de 1 à
1000, standardized.X[-test,] donne la sous-matrice contenant les observations dont les indices ne vont pas de 1
à 1000.

1
7. Quelles sont les dimensions de train.X, test.X, train.Y, test.Y ?
8. En quoi l’instruction set.seed (1) est-elle utile ?

On continue l’étude :

> knn.pred=knn (train.X, test.X, train.Y, k=1)


> mean(test.Y!= knn.pred)
[1] 0.118
> mean(test.Y!=" No")
[1] 0.059
> table(knn .pred ,test.Y)
test.Y
knn .pred No Yes
No 873 50
Yes 68 9
> 9/(68+9)
[1] 0.117

9. Quelle est la méthode utilisée ? Quel(s) est (sont) son (ses) hyperparamètre(s) ?
10. Cette méthode est-elle sensible aux grandes valeurs de p ? Justifier votre réponse.
11. Quelle est la dimension de knn.pred ?
12. Donner l’expression mathématique derrière knn.pred ?
13. A quoi correspondent les deux valeurs numériques 0.118 et 0.059 ?
14. Quelle est (sur l’échantillon test) la proportion des gens qui ont décidé de souscrire une assurrance comme
cela a été prédit.
15. A quoi correspond la valeur 0.117.
16. Conclure.

On utilise maintenant les instructions suivantes :

> knn.pred=knn (train .X,test.X,train .Y,k=3)


> table(knn .pred ,test.Y)
test.Y
knn .pred No Yes
No 920 54
Yes 21 5
> 5/26
[1] 0.192
> knn.pred=knn (train .X,test.X,train .Y,k=5)
> table(knn .pred ,test.Y)
test.Y
knn .pred No Yes
No 930 55
Yes 11 4
> 4/15
[1] 0.267

17. Discuter et comparer les résultats obtenus.


18. Que risque-t-il de se passer si on prend k trop grand ?
19. Expliquer comment on peut choisir k convenablement.
20. Proposer une autre méthode permettant de résoudre les questions de ce problème. Préciser ses hyperpa-
ramètres.

2
Apprentissage statistique II
Examen Juillet 2023
Le sujet comporte quatre exercices indépendants. Les documents, calculatrices, téléphones et
ordinateurs portables sont interdits. La qualité de la rédaction sera prise en compte dans la
notation. Le barême est donné à titre indicatif.

Exercice 1 (Modèles Linéaires simples (5 points))


On observe (Xi , Yi )1≤i≤n avec Xi ∈ R et Yi ∈ R et on considère le modèle linéaire simple suivant :

Yi = βXi + b + ϵi , 1 ≤ i ≤ n

1. Rappeler la méthode des moindres carrés pour estimer β et b.


2. Ecrire (avec détails) les équations de mise à jour de l’algorithme de la descente de gradient permettant
d’estimer β et b.
3. Même question qu’en 2. pour l’algorithme de la descente de gradient stochastique.
4. Représenter ce modèle sous la forme d’un réseau de neurones en précisant tous les hyperparamètres
associés.

Exercice 2 (Classification non-supervisée (5 points))


On considère les variables aléaoires suivantes X1 , · · · , Xn qu’on souhaite classer en k groupes I1 , · · · , Ik selon
leurs ressemblances.

1. Rappeler les définitions de l’inertie intra-classe, de l’intertie inter-classe et de l’inertie totale.


2. Ecrire la relation de Huygens reliant ces trois inerties.
3. Ecrire l’algorithme Kmeans pour deux classes.
4. Comment se comporte l’inertie intra-classe à chaque itération de l’algorithme Kmeans. Justifier votre
réponse.

Exercice 3 (Classification multi-labels (6 points))


On rappelle que la fonction softmax est définie de Rk vers [0, 1]k par
!
ex1 exk
φ(x1 , · · · , xk ) = Pk , · · · , Pk .
i=1 exi i=1 exi

On observe, pour une plante donnée, les 4 mesures suivantes longueur du sépale X (1) , largeur du sépale X (2) ,
longueur du pétale X (3) et largeur du pétale X (4) on voudrait pouvoir classer cette plante dans l’une des espèces
suivantes : setosa, versicolor et virginica.
1. Ecrire en utilisant la fonction softmax un modèle paramétrique permettant de prédire la probabilité
d’appartenance d’une plante donnée à l’une des trois espèces.
2. Représenter ce modèle sous la forme d’un réseau de neurones à une seule cachée. Combien y-a-t-il de
neurones dans la couche de sortie ?
3. Donner une fonction de coût permettant d’estimer les paramètres du modèle proposé.

Exercice 4 (Régression logistique (4 points))


On considère les instructions Python suivantes :

3
def algo_training(X, y, num_steps, learning_rate, batch_size):
w, b = np.zeros(X.shape[1]), 0
costs_SGD=[]
for step in range(num_steps):
batch = np.random.choice(X.shape[0], batch_size)
X_batch, y_batch = X[batch], y[batch]
aa = sigmoid(np.dot(X_batch,w)+b) - y_batch
grad_w = np.matmul(X_batch.T, aa)
grad_b = np.sum(aa)
w = w - learning_rate * grad_w
b = b - learning_rate * grad_b
if step%300==0:
print ("Dans l’étape ",step,", les paramètres sont", w, b,";")
print ("la value de la fonction de coût est", cost_log_likelihood(X,y,w,b)) return w,b

1. Sachant qu’il s’agit d’un problème de régression logistique binaire (la sortie est dans {0, 1}), définir
cost_log_likelihood(X,y,w,b))

2. De quel algorithme s’agit-il ?

4
Apprentissage statistique II
Examen Mai 2023
Le sujet comporte trois exercices indépendants. Les documents, calculatrices, téléphones et
ordinateurs portables sont interdits. La qualité de la rédaction sera prise en compte dans la
notation. Le barême est donné à titre indicatif.

Exercice 5 (Questions de cours (4 points))

1. Citer deux méthodes utilisées pour résoudre un problème de classification non-supervisée.


2. (2a) Expliquer briévement le rôle de l’algorithme de la Descente de Gradient DG et de la Descente de
Gradient Stochastique DGS.
(2b) Quelle est la différence entre l’algorithme DG et l’algorithme DGS. ?
(2c) A quoi sert le taux d’apprentissage dans ces deux algorithmes.
3. Modèle de régression linéaire et Réseau de neurones :
(3a) Expliquer comment le modèle de régression linéaire est un réseau de neurones particulier (on peut
se faire aider par un schéma).
(3b) Quelle est la fonction de coût correspondante et calculée sur les données (Xi , Yi )1≤i≤n ?
(3c) Ecrire l’algorithme de la descente de gradient associé et préciser son objectif.

Exercice 6 (Classification binaire à labels dans {−1, 1} (12 points))

Soit DN = {(Xi , Yi ), 1 ≤ i ≤ N } i.i.d. de loi (X, Y ) : (Ω, F, P) → Rp × {−1, 1} l’ensemble d’entraînement.

On rappelle que la fonction de régression logistique ou sigmoide, que l’on notera ϕ le long de cet exercice,
est définie, pour u ∈ R, par,
1
ϕ(u) = .
1 + e−u

   (1) 
w1 x
 ·   ·  t Pp (j)
On rappelle aussi que pour w = 
 ·  et x =  · , w x = j=1 wj x .
  

wp x(p)
1. Montrer que pour tout u ∈ R
ϕ(−u) = 1 − ϕ(u).
2. On considère le modèle de régression logistique pour Y ∈ {−1, 1} avec paramètres w, b (w ∈ Rp est le
vecteur du poids et b ∈ R est l’intercept) suivant :

P (Y = 1|X = x) = ϕ(wt x + b)

(2a) Montrer que P (Y = −1|X = x) = ϕ(−(wt x + b)).


(2b) Écrire la fonction de prédiction pour (w, b) donné.
3. Ecrire la fonction du log-vraisemblance sur les données DN . On notera lDN (w, b) cette fonction.
4. On définit la fonction de coût sur les données DN par,

J DN (w, b) := −lDN (w, b)

Montrer que,
N
X
J DN (w, b) = log exp(−Yi (wt Xi + b)) + 1 .

i=1

5
5. Calculer, pour j = 1, · · · , p
∂J DN (w, b)
.
∂wj
6. Calculer
∂J DN (w, b)
.
∂b
7. Ecrire l’algorithme de la descente de gradient stochastique afin d’approcher un minimiseur de la fonction
du coût J DN (w, b).
8. Ecrire cet algorithme en code Python (on pourra utiliser les indications ci-dessous).
def SGD_training(X, y, num_steps, learning_rate, batch_size):

w, b = # remplir votre code ici, pour l’initialisation des parametres w et b

costs_SGD=[] # (initialisation du ’costs_SGD’)

for step in range(num_steps):

# Étape 1 : échantillonner un mini-batch à partir des données.

# Étape 2 : mettre à jour le paramètre w et b

return # compléter

Exercice 7 (Classification naïve bayésienne (4 points))

On considère le problème simple suivant : chaque observation est décrite par deux variables discrètes, X (1)
et X (2) , toutes deux à valeurs dans {0, 1}. Le label associé à (X (1) , X (2) ) est donné par la variable Y à valeurs
dans {0, 1}. On observe les 4 réalisations suivantes :

(1) (2)
xi xi yi
1 1 0
1 0 1
0 1 1
0 0 1

1. Ecrire l’hypothèse naïve bayésienne.


2. Calculer le classifieur naïf bayésien construit à partir de ces quatre données (on pourra présenter les
résultats sous la forme d’un tableau).
3. Vérifier si ce classificateur naïf bayésien classe correctement toutes les données d’entraînement.

6
Université Tunis Dauphine M1 BDIA

Apprentissage statistique et grande dimension


Examen Janvier 2023
Le sujet comporte quatre exercices indépendants. Les documents, calculatrices, téléphones et
ordinateurs portables sont interdits. La qualité de la rédaction sera prise en compte dans la
notation. Le barême est donné à titre indicatif.

Exercice 8 (Questions de Cours (4 points))


1. Rappeler le modèle de régression logistique pour la classification binaire et calculer l’équation de la
frontière de décision entre les deux classes.
2. Entre les deux ensembles de données Dn et D̃n (pour la classification binaire) des deux figures ci-dessous,
quel ensemble est plus adapté à une application de la méthode de régression logistique ? Justifier votre
réponse.

3. Quels sont les hyperparamètres dans un modèle de réseau de neurones artificiels.

Exercice 9 (Arbres et Forêts aléatoires (4 points))


On considère les données Boston (déjà vues en cours) et on rappelle :

dim(Boston)
[1] 506 14
names(Boston)
"crim" "zn" "indus" "chas" "nox" "rm" "age"
"dis" "rad" "tax" "ptratio" "black" "lstat" "medv"

L’objectif est d’adapter un arbre de régression à l’ensemble de données de Boston afin d’expliquer et de prédire
la variable medv. On utilise les instructions suivantes :

library(MASS)
library(tree)
set.seed(1)
train = sample(1:nrow(Boston), nrow(Boston)/2)
tree.boston = tree(medv~., Boston, subset =train)

7
1. En quoi l’instruction set.seed est-elle utile ?
2. On obtient (grâce à l’instruction plot(tree.boston)) le graphe suivant :

Combien y-a-t-il de noeuds terminaux ? quelles sont les variables explicatives qui ont construit cet arbre ?
combien y a-t-il de variables explicatives au total ?
3. On obtient :
>summary(tree.boston)
Regression tree:
tree(formula = medv~., data = Boston, subset = train)
Residual mean deviance : 12.65 = 3099 / 245
A quoi correspond la valeur 12.65 ? Quelle est la formule mathématique correspondante ?
4. On voudrait maintenant appliquer les forêts aléatoires aux données de Boston, en utilisant le package
randomForest dans R. On utilise les instructions suivantes :
library(randomForest)
set.seed(1)
Forest.boston =randomForest(medv~.,data=Boston, subset =train, mtry=13, ntree =500,
importance=TRUE)
Expliquer ces instructions. A quoi correspond l’instruction mtry=13 ?

Exercice 10 (SVM (8 points))


 
2 β1
Rappel. On rappelle qu’un hyperplan de R de coefficients α et β = est l’ensemble suivant
β2
  
x1 2
P(α, β) = ∈ R : α + β1 x 1 + β2 x 2 = 0
x2
  
x1
et que cet hyperplan partage l’ensemble R2 en deux demi-plans : P + (α, β) = ∈ R2 : α + β1 x1 + β2 x2 > 0
   x2  
x1 x1
et P− (α, β) = ∈ R2 : α + β1 x1 + β2 x2 < 0 . On rappelle aussi que la distance d’un point x =
x2 x2
de R2 à l’hyperplan P(α, β) est donnée par

|α + β1 x1 + β2 x2 |
d(x, P(α, β)) = ,
∥β∥
p
avec ∥β∥ = β12 + β22 .

8
(A) Cas linéairement séparables. Soit Dn = {(xi , yi )1≤i≤n } avec xi ∈ R2 et yi ∈ {−1, 1}. On suppose
dans ce paragraphe que les points sont linéairement séparables.
 Oncherche à determiner l’équation du "meilleur"
xi1
hyperplan séparant les deux classes +1 et -1. On note xi = . On dira que ce point est bien classé si
xi2

yi = +1 si et seulement si xi ∈ P + (α, β) et
yi = −1 si et seulement si xi ∈ P− (α, β)

1. Rappeler la définition, ainsi que son expression, de la marge M d’un hyperplan par rapport au nuage de
points Dn .
2. Que doit vérifier la Marge M du "meilleur hyperplan" ?
3. Que veut dire la condition
yi (α + β1 xi1 + β2 xi2 ) ≥ M ∥β∥?
4. Ecrire un problème d’optimisation permettant de construire ce "meilleur hyperplan".
β
5. Ecrire un nouveau problème d’optimisation en effectuant le changement de variable suivant w = M ∥β∥
et b = M α∥β∥ .

(B) Cas non séparables. Dans ce cas, un problème d’optimisation, vu en cours, afin de trouver le meilleur
hyperplan consiste à minimiser la quantité :
n
1 X
∥w∥2 + γ ξi ,
2 i=1
 
w1
sous les contraintes ξi ≥ 0, yi (w1 xi1 + w2 xi2 + α) ≥ 1 − ξi , ∀ 1 ≤ i ≤ n avec w = . Le réel γ étant un
w2
hyperparamètre positif.
6. Que représente les quantités (ξi )1≤i≤n introduit dans le problème d’optimisation ci-dessus ?
7. À quoi correspond le cas γ = +∞ ?
8. Les deux figures ci-dessous sont une illustration de ce problème d’optimisation avec les deux valeurs
suivantes de γ ∈ {1000, 0.02}. Associer à chaque figure la valeur de γ correspondante. Justifier votre
réponse.

Exercice 11 (Réseaux de neurones (4 points))


On considère les données Boston (déjà vues en cours). L’objectif est d’adapter un réseau de neurones afin
d’expliquer et de prédire la variable medv.

On utilise les instructions suivantes :

RN.fit= neuralnet(medv~tax+lstat,data.frame(Boston[Itrain,]))
plot(RN.fit)

9
et on obtient le graphe suivant :

1. Combien de couches cachées y-a-t-il dans ce réseau ?


2. Combien de neurones y a-t-il sur chaque couche cachée ?
3. Quelles sont les fonctions d’activation des couches cachées ?
4. Quelle est la fonction d’activation de la couche de sortie ?
5. Quelles sont les dimensions des inputs et outputs de ce réseau ?
6. Ecrire la valeur prédite pour medv pour une valeur de tax=a et une valeur de Istat=b.

10
Université Tunis Dauphine M1 BDIA

Apprentissage statistique et grande dimension


Partiel du 4 Novembre 2022
Le sujet comporte cinq exercices indépendants. Les documents, calculatrices, téléphones et
ordinateurs portables sont interdits. La qualité de la rédaction sera prise en compte dans la
notation. Le barême est donné à titre indicatif.

Exercice 12 (Questions de cours, 1pts)


On considère les exemples des problèmes d’apprentissage suivants. Pour chacun de ces exemples, préciser s’il
s’agit d’un problème de classification supervisée (binaire ou multi-label), de classification non supervisée, ou de
régression.

(1A) Prédire si un patient, hospitalisé en raison d’une crise cardiaque, va avoir une deuxième crise cardiaque.
La prédiction est basée, entre autres, sur des mesures cliniques pour ce patient.
(1B) Estimer la quantité de glucose dans le sang d’une personne diabétique en observant le spectre d’ab-
sorption infrarouge du sang de cette personne
(1C) Identifiez les numéros dans un code postal manuscrit à 5 chiffres, à partir d’une image.
(1D) On souhaite faire un profilage de clients dans l’objectif de cibler l’envoi de publicités. On dispose d’un
fichier de données de ces clients et on souhaite donc les regrouper en sous-groupes homogènes à partir
des données du fichier.

Exercice 13 (QCM, 2pts)


Répondre par vrai ou faux (tout en justifiant brièvement votre réponse).

(2A) La méthode des K-plus proches voisins (K-NN) est une méthode paramétrique.
(2B) La méthode des K-plus proches voisins (K-NN) a une très bonne performance quand la dimension des
covariables (features ou inputs) est grande.
(2C) Le modèle de régression logistique est adapté à toutes les données.
(2D) Soit Dn = {(Xi , Yi )1≤i≤n } l’ensemble des données avec Yi ∈ {0, 1}. On a construit deux prédicteurs
de classification fˆ1 et fˆ2 . Sur Dn , l’erreur de prédiction pour fˆ1 est de 10% et celui pour fˆ2 est 0.1%. On
peut donc conclure que fˆ2 est meilleur que fˆ1 et choisir fˆ2 comme prédicteur.

Exercice 14 (Régression linéaire, 9pts)


Le but de cet exercice est de prédire le salaire d’un joueur de baseball en fonction de certaines statistiques
associées à ses performances sur l’année. On va utiliser l’ensemble de données Hitters.

fix(Hitters)
names(Hitters)
[1] "AtBat " "Hits" "HmRun " "Runs" "RBI"
[6] "Walks " "Years " "CAtBat " "CHits " "CHmRun "
[11] "CRuns " "CRBI" "CWalks " "League " "Division "
[16] "PutOuts " "Assists " "Errors " "Salary " "NewLeague "
> dim(Hitters )
[1] 263 20
> sum(is.na(Hitters$Salary))
[1] 0

11
On note par Yi le salaire du ième joueur, Xi le vecteur des variables explicatives associées à l’ième joueur.
On pose le modèle linéaire suivant
Yi = Xit β + ϵi , 1 ≤ i ≤ n
(ϵi )1≤i≤n étant des variables aléatoires centrées et β étant le vecteur des paramètres. On rappelle que Z t désigne
le vecteur (ligne) transposé du vecteur (colonne) Z.

1. En consultant les sorties de R ci-dessus, donner la valeur de n ainsi que les dimensions des vecteurs β et
Xi .
2. A quoi sert l’instruction sum(is.na(Hitters$Salary)) ?

On découpe l’échantillon (Xi , Yi )1≤i≤n en deux. L’échantillon d’entraînement de taille ntrain = 185 et
l’échantillon test de taille ntest . Les données, ainsi découpées, sont notées par (x.train, y.train) et (x.test, y.test).

3. Quelles sont les dimensions de x.train, y.train, x.test, y.test ?


4. Expliquer les instructions suivantes
grid = 10^seq(10,-2,length=100)
ridge.mod1 = glmnet(x,y,alpha = 0, lambda = grid)
ridge.mod2 = glmnet(x,y,alpha = 1, lambda = grid)
Que faut-il mettre à la place de x et de y ? Par la suite on va utiliser ces nouvelles instructions rectifiées.
5. Que donne l’instruction suivante :
ridge.pred4=predict(ridge.mod1, lambda=4, newx=x.test)
6. On souhaite maintenant calculer une erreur de prédiction, compléter alors l’instruction suivante :
mean((ridge.pred4- ??)^2
Donner la formule mathématique associée.
7. Expliquer la méthode de choix de λ par validation croisée k-fold (décrire ses étapes).
8. On note par λcv cette valeur de λ obtenue par validation croisée. Finir l’étude en donnant des instructions
du logiciel R.

Exercice 15 (Méthode KNN, 6pts)


Le tableau ci-dessous fournit un ensemble de données contenant six observations, une variable explicative
de dimension 3 et une variable de réponse qualitative Y .

Obs. X1 X2 X3 Y
1 0 3 0 Rouge
2 2 0 0 Rouge
3 0 1 3 Rouge
4 0 1 2 Vert
5 -1 0 1 Vert
6 1 1 1 Rouge

On découpe l’échantillon en deux : un échantillon d’entraînement comprenant les données relatives aux 4
premiers individus et donc un échantillon test comprenant les données relatives au 5ième et 6ième individus.

1. Calculer en utilisant la méthode KNN et pour les différentes valeurs de K = 1, · · · , 4 les prédictions
pour la première donnée de l’échantillon test (c’est-à-dire relative à la cinquième observation). On peut
présenter le résultat sous la forme d’un tableau.
2. Calculer en utilisant la méthode KNN et pour les différentes valeurs de K = 1, · · · , 4 les prédictions pour
la deuxième donnée de l’échantillon test (c’est-à-dire relative à la sixième observation).
3. En déduire l’erreur de prédiction sur l’échantillon test, pour chaque valeur de K.
4. Que vaut Kopt la valeur de K qui minimise cette erreur de prédiction ?
5. Quelle est la prédiction pour Y lorsque X1 = X2 = X3 = 0 pour cette valeur de Kopt .

12
6. Que faut-il faire pour trouver le "bon" K par la méthode de validation croisée 3-fold. ?

Exercice 16 (Régression Logistique, 2pts)


On collecte des données pour un groupe d’étudiants en master avec les variables X1 = nombre d’heures
d’études durant le master, X2 = nombre d’heure d’études en licence, et Y est une variable binaire qui vaut 1
pour un étudiant ayant obtenu une mention. On ajuste une régression logistique et on obtient une estimation
des coefficients, β̂0 , β̂1 , β̂2 . On suppose que β̂0 < 0, β̂1 > 0, β̂2 > 0.
1. Donner une estimation (en fonction de β̂0 , β̂1 , β̂2 ) de la probabilité qu’un étudiant, qui étudie pendant
40 h en master et ayant étudié 42h en licence, obtienne une mention.
2. Combien d’heures l’étudiant (ayant étudié 42h en licence) aurait-il besoin d’étudier en master pour avoir
50% de chances d’obtenir une mention dans ce master ? exprimer le résultat à l’aide de β̂0 , β̂1 , β̂2 .

13

Vous aimerez peut-être aussi