TP 2 - Algorithmes de gradient stochastiques¶

In [17]:
import numpy as np

n = 10000
p = 5
theta_true = np.array([-2, -1, 0, 1, 2])

On considère le modèle

Objectifs du TP¶

L'objectif de ce TP est d'étudier le comportement d'un estimateur en ligne basé sur le gradient dans les cadres :

  • de la régression linéaire,
  • de la régression logistique.

On s'intéressera à la convergence de l'estimateur $\theta_i$ vers le vrai paramètre $\theta$ et à l'évolution de l'erreur quadratique.


1. Régression linéaire¶

On considère le modèle

$ Y_i = X_i^T \theta + \varepsilon_i, $

avec :

  • $\theta = (-2,-1,0,1,2)^T \in \mathbb{R}^5$,
  • $X_i \sim \mathcal{N}(0, I_5)$,
  • $\varepsilon_i \sim \mathcal{N}(0,1)$, indépendants.

On note $n = 10000$.

  1. Générer un échantillon un échantillon $(X_i, Y_i)_{i=1,\dots,n}$.
In [18]:
 
  1. Écrire une fonction qui ressorte l'ensemble des estimateurs $\theta_i$, pour $i = 0, \ldots, n-1$, définis par la descente de gradient stochastique : $$ \theta_{i+1} = \theta_{i} + \gamma_{i+1} \nabla_\theta \ell(Y_{i+1}, X_{i+1}, \theta_{i}). $$
In [19]:
 
  1. Tracer l'évolution de l'erreur quadratique $\|\theta_i-\theta\|^2$ pour un échantillon.
In [ ]:
 
  1. Répéter l'expérience sur 50 échantillons indépendants et tracer l'erreur quadratique moyenne.
In [ ]:
 
  1. Refaire la question 4 mais en prenant cette fois-ci $X \sim \mathcal{N}(0,\text{diag}(1,4,9,16,25))$ et $ c_{\gamma}=0.3,0.1,0.01 $.
In [ ]:
 

2. Régression logistique¶

Tracer l'évolution de l'erreur quadratique dans le cadre de la régression logistique, i.e. $$ \mathbb{P}(Y_i=1|X_i)=\sigma(X_i^T\theta), \quad \sigma(t)=\frac{1}{1+e^{-t}}. $$

In [ ]:
 
In [ ]: