• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 29/01/2024

Passez de la régression linéaire à la régression logistique

L'objectif de ce chapitre est de :

  • découvrir la régression logistique pour des problématiques de classification binaire,

  • comprendre son extension à la classification multi-classe,

  • réaliser la sélection de variables pour la classification.

Pour nous accompagner

Nous nous servirons des données biologiques d'athlètes (voir le cours sur l'ACP) comme fil rouge pour ce chapitre du cours. Un extrait de ces données est présenté dans le tableau 1.

Classification d'athlètes en fonction de leurs données biologiques
Tableau 1 : Classification d'athlètes en fonction de leurs données biologiques

Étant donné un athlète (une ligne du tableau), notons  $\(\mathbf{x}\)$ le vecteur contenant ses paramètres biologiques  (rcc, wcc, .., wt) et $\(y = \left \lbrace \begin{array}{lll} 1 & \text{si} & \text{genre} = f \\ 0 & \text{si} & \text{genre} = m \end{array} \right.\)$ son genre.

Construisez le modèle de prédiction

Fonction de score

Afin de classifier un point donné, nous allons construire dans un premier temps un modèle de score linéaire $\(f(\mathbf{x}) = \beta_0 + \sum_{j=1}^d \beta_j \, x_j.\)$ La règle de classification qui en découle s'exprime

$\[\hat y = g(\mathbf{x})= \left \lbrace \begin{array}{lll} 1 & \text{si} & f(\mathbf{x}) > 0 \\ 0 & \text{si} & f(\mathbf{x}) < 0 \end{array} \right.\]$

 où $\(\hat y\)$ est l'étiquette qu'on attribue au point $\(\mathbf{x}\)$ .

La frontière de séparation entre les deux classes est alors définie par l'hyper-plan d'équation

$\[f(\mathbf{x}) = 0\]$

Pour illustrer cette fonction de classification, nous avons établi le modèle de score sur les données des athlètes en utilisant seulement deux variables (fer, lbm). La figure 1 montre la représentation des points (les athlètes) de chaque classe et la frontière de séparation.

Figure 1 : Hyper-plan de séparation entre les deux classes matérialisée par la droite en pointillés
Figure 1 : Hyper-plan de séparation entre les deux classes matérialisée par la droite en pointillés

Cette frontière délimite deux demi-plans distincts, où le modèle prédit respectivement les classes $\(y=1\)$ et $\(y=0\)$ . La prédiction est simplement basée sur le signe de la fonction de score.

Quelle confiance avons-nous dans la classification faite ?

Point  

Score  

Classe prédite

Niveau de confiance

  $\(\mathbf{x} = \begin{bmatrix}
0.91 \\
3
\end{bmatrix}\)$
   $\(f(\mathbf{x})=12.14\)$

  $\(\hat y=1\)$  

 Élevée

$\(\mathbf{x} = \begin{bmatrix}
0.14 \\
-0.16
\end{bmatrix}\)$

  $\(f(\mathbf{x}) = 0.26\)$

  $\(\hat y=1\)$  

 Faible

Tableau 2 : scores, prédictions et niveaux de confiance associés

Le tableau 2 montre des exemples de scores obtenus pour deux points de la figure 1 .  L'étiquette  du premier point peut être attribuée avec confiance, car son score est élevé. A contrario, le score du deuxième point vaut 0.26 ce qui n'incite pas à accorder un niveau de confiance important à la décision de classification lui correspondant. Ceci conduit à la question suivante : peut-on quantifier le niveau de confiance ?

Du score à la probabilité conditionnelle $\(\mathbb{P}(y=1/\mathbf{x})\)$  

Pour quantifier notre niveau de confiance, nous pouvons faire appel à la notion de probabilité. Spécifiquement, nous considérons $\(\mathbb{P}(y=1/\mathbf{x})\)$ la probabilité de prédire la classe $\(y=1\)$ sachant le point $\(\mathbf{x}\)$ . Nous pouvons relier cette probabilité conditionnelle à la valeur du score de la façon suivante :

  • Si  $\(f(\mathbf{x}) \,\, \longrightarrow \,\, - \infty\)$ , avec certitude nous prédisons  $\(\hat y = 0\)$ , donc $\(\mathbb{P}(y=1/\mathbf{x}) = 0\)$ .

  • Si  $\(f(\mathbf{x}) \,\, \longrightarrow \,\, + \infty\)$ , avec confiance on a   $\(\hat y = 1\)$ et par conséquent $\(\mathbb{P}(y=1/\mathbf{x}) = 1\)$ .

  • Si  $\(f(\mathbf{x}) \longrightarrow 0\)$ , nous n'avons pas de certitude sur la décision ( $\(\hat y =0\)$  ou $\(\hat y = 1\)$ ) ; dans ce cas $\(\mathbb{P}(y=1/\mathbf{x}) = 0.5\)$ .

Une fonction monotone croissante permettant de transformer le score en probabilité est la fonction sigmoide. Elle est définie par

$\(\text{sigm} : \mathbb{R} \,\, \longrightarrow [0, 1] \\ \quad \,\, f(\mathbf{x}) \quad \longmapsto \mathbb{P}(y=1/\mathbf{x}) = \frac{\exp^{\,\, f(\mathbf{x})}}{1 + \exp^{\,\, f(\mathbf{x})}}\)$

Les figures suivantes montrent respectivement les scores de l'exemple de la figure 1 et les probabilités  qui en découlent.

Représentation des scores (triés par ordre croissant) des points.
Figure 2 : Représentation des scores (triés par ordre croissant) des points
Figure 3 : Probabilité conditionnelle de la classe P(y=1/x) en fonction du score.
Figure 3 : Probabilité conditionnelle de la classe P(y=1/x) en fonction du score

Nous constatons que les points dont le score est élevé ont une probabilité forte. Les points dont le score est proche de 0 ont bien une probabilité proche de 0.5 et se situent sur la frontière de séparation. Nous pouvons alors formuler notre règle de classification à partir de la probabilité conditionnelle.

Estimez les paramètres du modèle

Le problème à résoudre

Maintenons que le concept du modèle de régression logistique est défini, nous allons voir comment estimer les paramètres du modèle que sont les coefficients $\(\beta_0, \cdots, \beta_d\)$ . Tout d'abord, écrivons le modèle de score en notation vectorielle :

$\[f(\mathbf{x}) = \beta_0 + \sum_{j=1}^d \, \beta_j \, x_j = \boldsymbol{\varphi}^\top \, \boldsymbol{\beta}\quad \text{avec} \quad \boldsymbol{\varphi} = \begin{pmatrix} 1 \\ \mathbf{x} \end{pmatrix}\in \mathbb{R}^{d+1} \quad \text{et} \quad \boldsymbol{\beta} = \begin{pmatrix} \beta_0 \\ \beta_1 \\ \vdots \\ \beta_d \end{pmatrix} \in \mathbb{R}^{d+1}\]$

Nous pouvons aussi expliciter la probabilité conditionnelle par la relation

$\[\mathbb{P}(y=1/\mathbf{x}, \boldsymbol{\beta}) = \frac{\exp^{\, \boldsymbol{\varphi}^{\, \top} \,\, \boldsymbol{\beta}}}{1 + \exp^{\boldsymbol{\varphi}^{\, \top} \,\, \boldsymbol{\beta}}} \hspace{100pt} (1)\]$

qui met en évidence le fait que cette probabilité dépend de $\(\boldsymbol{\beta}\)$ .

Étant donné les points d'apprentissage $\( \left \{ (\mathbf{x}_i, y_i) \in \mathbb{R}^d \times \{0, 1\} \right \}_{i=1}^n\)$ , nous cherchons à estimer le vecteur des paramètres  $\(\boldsymbol{\beta} \in \mathbb{R}^{d+1}\)$ tel que pour tout point $\((\mathbf{x}_i, y_i)\)$ on ait :

  •   $\(\mathbb{P}(y=1/\mathbf{x}_i, \boldsymbol{\beta}) = 0\)$ si   $\(y_i = 0\)$  ,

  •  $\(\mathbb{P}(y=1/\mathbf{x}_i, \boldsymbol{\beta}) = 1\)$ si $\(y_i=1\)$ .

Pour cela, on va maximiser la log-vraisemblance conditionnelle des données

$\[\mathcal{L}(\boldsymbol{\beta}) = \log \Pi_{i=1}^n \,\, \mathbb{P}(y_i \, /\, \mathbf{x}_i, \boldsymbol{\beta})= \sum_{i=1}^n \,\, \log \mathbb{P}(y_i \, /\, \mathbf{x}_i, \boldsymbol{\beta})\]$

 ou de façon équivalente minimiser  $\(J(\boldsymbol{\beta}) = - \mathcal{L}(\boldsymbol{\beta})\)$ par rapport à $\(\boldsymbol{\beta}\)$ .

Comme $\(y_i \in \{0, 1\}\)$ et $\(\mathbb{P}(y_i = 0 \, /\, \mathbf{x}_i, \boldsymbol{\beta}) = 1 - \mathbb{P}(y_i = 1\, /\, \mathbf{x}_i, \boldsymbol{\beta})\)$ nous  pouvons écrire notre problème d'optimisation comme ci-dessous.

Une approche d'estimation des paramètres

 En remplaçant  $\(\mathbb{P}(y=1 \, /\, \mathbf{x}, \boldsymbol{\beta})\)$ par son expression (1) dans J , il est possible de montrer que le problème d'optimisation devient

$\(\min_{\boldsymbol{\beta}}J(\boldsymbol{\beta}) = \sum_{i=1}^n \big[\,\, - y_i \, \boldsymbol{\varphi}_i^\top \, \boldsymbol{\beta} +\log \left(1 + \exp^{\boldsymbol{\varphi}_i^\top \,\, \boldsymbol{\beta}} \,\, \right) \big]\)$

Contrairement à la régression linéaire, ce problème n'admet pas de solution analytique. Elle se calcule via des algorithmes d'optimisation de type méthode du gradient ou méthode de Newton. Nous allons expliciter le premier algorithme, qui est facile à comprendre et à implémenter.

 Pour la régression logistique, le gradient de J a pour expression

$\[\begin{eqnarray} \nabla J (\boldsymbol{\beta} \,) & = & \sum_{i=1}^n \,\, - y_i \, \boldsymbol{\varphi}_i \, + \frac{\exp^{\boldsymbol{\varphi}_i^\top \,\, \boldsymbol{\beta}}}{1 + \exp^{\boldsymbol{\varphi}_i^\top}} \, \boldsymbol{\varphi}_i \\ \nabla J (\boldsymbol{\beta} \,) & = & - \sum_{i=1}^n \,\, \underbrace{\left(y_i - \mathbb{P}(y_i=1 \, /\, \mathbf{x}_i, \boldsymbol{\beta} ) \right)}_{\text{Différence entre la vraie classe et la prédiction}} \boldsymbol{\varphi}_i \end{eqnarray}\]$

Les points bien prédits avec une forte probabilité sont caractérisés par  $\(y_i - \mathbb{P}(y_i=1 \, /\, \mathbf{x}_i, \boldsymbol{\beta} ) \approx 0\)$ ; ils  n'influencent donc pas la valeur du gradient contrairement aux points mal classés. À chaque itération, le vecteur de paramètre est mis à jour afin de corriger ces erreurs de classification.

 La figure 6 montre la décroissance et la convergence du critère J sur le problème de classification des athlètes en fonction de leurs paramètres biologiques.

Diminution du critère J au fil des itérations (exemple des données biologiques)
Figure 6 : Évolution du critère J au fil des itérations (exemple des données biologiques)

Classifiez avec le modèle appris

 On fait quoi après ?

Connaissant l'estimation $\(\hat{\boldsymbol{\beta}}\)$ des paramètres, pour tout point $\(\mathbf{x}\)$ ,  on pourra proposer comme estimation des probabilités conditionnelles des classes 

$\[\begin{eqnarray} \hat{ \mathbb{P}}(y=1/\mathbf{x}) & = & \frac{\exp^{\boldsymbol{\varphi}^\top\hat{\boldsymbol{\beta}}}}{1+ \exp^{\boldsymbol{\varphi}^\top\hat{\boldsymbol{\beta}}}} \\ \hat{ \mathbb{P}}(y=0/\mathbf{x}) & = & \frac{1}{1+ \exp^{\boldsymbol{\varphi}^\top\hat{\boldsymbol{\beta}}}} \end{eqnarray}\]$

avec  $\(\boldsymbol{\varphi} = \begin{pmatrix} 1 \\ \mathbf{x} \end{pmatrix}\)$ . La prédiction de sa classe s'obtient par

$\[\hat y = \left \lbrace \begin{array}{lcl} 1 & \text{si} & \hat f(\mathbf{x}) = \boldsymbol{\varphi}^\top \hat{\boldsymbol{\beta}} > 0 \quad \text{ou} \quad \hat{ \mathbb{P}}(y=1/\mathbf{x}) \,\,\, > \,\,0.5 \\ \\ 0 & \text{sinon} & \end{array} \right.\]$

Cette prédiction pourra ensuite être comparée à la vraie étiquette $\(y\)$ pour mesurer les performances de classification du modèle de régression logistique.

Sélectionnez les variables utiles

A-t-on besoin de toutes les variables pour bien prédire la classe ?

Comme pour la régression linéaire, nous souhaitons sélectionner les variables utiles pour réaliser la classification. L'histoire va se répéter : on peut faire une régression logistique régularisée en résolvant le problème

$\[\min_{\boldsymbol{\beta}} \sum_{i=1}^n \,\, y_i \, \boldsymbol{\varphi}_i^\top \, \boldsymbol{\beta} + \log \left(1 + \exp^{\boldsymbol{\varphi}_i^\top \,\, \boldsymbol{\beta}} \,\, \right) + \lambda \, \Omega(\beta_1, \cdots, \beta_d)\]$

avec $\(\Omega(\beta_1, \cdots, \beta_d)\)$ le terme de régularisation et $\(\lambda > 0\)$ le paramètre de régularisation à régler par l'utilisateur.

Par exemple, en prenant $\(\Omega(\beta_1, \cdots, \beta_d) = \sum_{j=1}^d \,\, |\beta_j|\)$ on a l'équivalent du lasso (voir chapitre précédent) pour la régression logistique.  Les graphiques suivants montrent l'influence de cette régularisation sur les variables sélectionnées et le réglage adéquat du paramètre $\(\lambda\)$ . Nous pouvons constater sur les figures 7-a et 7-b que nous pouvons obtenir de bonnes performances de classification en utilisant seulement quatre variables.

Evolution de la valeur des paramètres \beta_j en fonction du paramètre de régularisation sur l'exemple des données biologiques.
Figure 7-(a) Évolution de la valeur des paramètres  \(\beta_j\) en fonction de  \(\lambda\) sur l'exemple de classification des athlètes

Critère de validation (erreur de classification) en fonction du paramètre de régularisation pour la régression logistique lasso. La ligne en pointillé indique la valeur retenue.
Figure 7-(b) Critère de validation (taux d'erreur de classification) en fonction de  \(\lambda\).  La ligne en pointillés indique la valeur de  \(\lambda\) retenue correspondant au minimum de l'erreur de validation.

Généralisez la régression logistique à la classification multi-classe

Et si on a plus de deux classes ?

Supposons qu'au lieu de classer les athlètes par genre, on veut les classer en fonction de leur discipline sportive, Sprint, 400m, Tennis… Dans ce cas l'étiquette $\(y \in {0, 1, \cdots, K-1}\)$ avec K  le nombre de classes.  Nous pouvons généraliser le principe de la régression logistique pour la classification binaire au problème multi-classe. Pour cela, nous définissons les probabilités conditionnelles des K classes par

$\[\begin{eqnarray} \mathbb{P}(y=0/\mathbf{x}) &=& \frac{1}{1+ \sum_{l=1}^{K-1} \exp^{\boldsymbol{\varphi}^\top \boldsymbol{\beta_l} }} \\ \mathbb{P}(y=k/\mathbf{x}) & = & \frac{\exp^{\boldsymbol{\varphi}^\top \boldsymbol{\beta_k} }}{1+ \sum_{l=1}^{K-1} \exp^{\boldsymbol{\varphi}^\top \boldsymbol{\beta_l} }} \quad \forall \, k=1, \cdots, K-1 \end{eqnarray}\]$

On pourra vérifier que la somme des probabilités vaut 1.

Comment calculer les paramètres ?

Les probabilités conditionnelles font intervenir $\((K-1)\)$ vecteurs de paramètres  $\(\boldsymbol{\beta}_k\)$ , qui sont déterminés par minimisation de l'opposée de la log vraisemblance.

$\[\begin{eqnarray} J & = & - \log \Pi_{i=1}^n \,\, \Pi_{k=0}^{K-1} \quad \mathbb{P}(y_i = k\, /\, \mathbf{x}_i)^{z_{ik}} \\ J & = & - \sum_{i=1}^n \,\, \sum_{k=0}^{K-1} \quad {z_{ik}} \,\,\log \mathbb{P}(y_i = k\, /\, \mathbf{x}_i) \end{eqnarray}\]$

$\(z_{ik} = \left \lbrace \begin{array}{lll} 1 & \text{si} & y_i = k \\ 0 & \text{sinon} & \end{array} \right.\)$ 

Le critère à minimiser est, comme précédemment, la somme de n termes de fonction de coût égale à $\(\sum_{k=0}^{K-1} \,\, \mathbb{1}_{y=k} \,\,\log \mathbb{P}(y = k\, /\, \mathbf{x})\)$ .

Les méthodes de descente, comme l'algorithme du gradient, peuvent être utilisées pour estimer les paramètres même si le problème à résoudre est plus compliqué.

La figure suivante montre un exemple de classification multi-classe à K=3 classes sur les données biologiques des athlètes. Nous pouvons constater qu'on a K frontières linéaires de séparation entre les classes. Ces frontières définissent des séparations entre paires de classes.

Exemple de classification multi-classe
Figure 8 : Exemple de classification multi-classe

En résumé

La régression logistique linéaire  :

  • permet de réaliser la classification binaire et multi-classe,

  • fournit les probabilités conditionnelles des classes — ce qui permet de prendre des décisions  avec un niveau de confiance,

  • donne des frontières de séparation entre classes linéaires,

  • permet d'intégrer dans le problème d'optimisation des termes de régularisation afin de sélectionner les variables utiles.

Dans le chapitre suivant, nous allons étudier une autre méthode de classification, le SVM, et son extension au cas non-linéaire.

Exemple de certificat de réussite
Exemple de certificat de réussite