Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Apprentissage Supervisé

L’équipe IVIA.AFRICA

Dans ce chapitre, nous allons explorer l’apprentissage supervisé. Ce type d’apprentissage, aussi connu sous le nom d’apprentissage avec tutelle (maître), permet de déterminer la relation qui existe entre une variable explicative X\mathbf{X} et une variable à expliquer (étiquette) y\mathbf{y}. En d’autres termes, l’apprentissage supervisé est le processus permettant à un modèle d’apprendre, en lui fournissant des données d’entrée ainsi que des données de sortie. Cette paire d’entrée/sortie est généralement appelée «données étiquetées». Dans un cadre illustratif, pensez à un enseignant qui, connaissant la bonne réponse à une question, évaluera un élève en fonction de l’exactitude de sa réponse à cette question. Pour plus de clarification, comparons l’approche de l’apprentissage automatique à la programmation traditionnelle.

L’apprentissage supervisé est souvent utilisé pour deux types de problèmes: les problèmes de régression et les problèmes de classification.

Problèmes de Régression

Dans l’apprentissage supervisé, on parle de problèmes de régression lorsque la variable à expliquer y\mathbf{y} est continue. Par exemple lorsqu’on veut prédire le prix d’une bouteille de vin sur la base de certaines variables (le pays de fabrication, qualité, le taux d’alcool, etc.). Il s’agit bel et bien d’un problème de régression.

La Régression Linéaire

La régression linéaire est un problème de régression pour lequel le modèle ou la fonction dépend linéairement de ses paramètres Arnaud (2013). Les différents types de régression linéaire que nous connaissons sont la régression linéaire affine, la régression linéaire polynomiale et la régression linéaire à fonctions de base radiales. Dans ce document, nous allons nous focaliser sur deux types fondamentaux de régression linéaire: la régression linéaire affine et la régression linéaire polynomiale.

La régression linéaire affine

Une régression linéaire de paramètre θ\boldsymbol{\theta} est dite affine si pour tout xRd.\mathbf{x} \in \mathbb{R}^d.

fθ(x)=θ0+θ1Tx=[θ0θ1T][1x]f_{\boldsymbol{\theta}}(\mathbf{x}) = \boldsymbol{\theta}_{0} + \boldsymbol{\theta}_{1}^{T} \mathbf{x} = \begin{bmatrix} \boldsymbol{\theta}_0 & \boldsymbol{\theta}_1^{T} \end{bmatrix} \begin{bmatrix} 1 \\ \mathbf{x} \end{bmatrix}

avec θ0R\boldsymbol{\theta}_0 \in \mathbb{R} et θ1Rd.\boldsymbol{\theta}_1 \in \mathbb{R}^d. Le terme [1,x]\left[ 1, \mathbf{x}\right] est appelé attribut du modèle et il sera noté par ϕ(x).\phi(\mathbf{x}).

Représentation graphique d’un exemple de données d’entraînement

Figure 4:Représentation graphique d’un exemple de données d’entraînement

Les jeux de données représentés dans la Figure 4 forment un ensemble d’entraînement où la régression linéaire affine sera la plus appropriée.

Pour déterminer les meilleurs paramètres de la régression linéaire affine deux différentes méthodes sont utilisées à savoir: la méthode explicite et la méthode approximative.

Implementation

Un exemple d’implementation de régression linéaire est disponibleici

La régression linéaire polynomiale

La régression linéaire de paramètre θ\boldsymbol{\theta} est dite polynomiale si pour tout xRd,\mathbf{x} \in \mathbb{R}^d,

fθ(x)=θ0+θ1x1+...+θmxm=[θ0,θ1,...,θm][1x1xm]=i=0mθixi,\begin{aligned} \text{f}_{\boldsymbol{\theta}}(\mathbf{x}) &= \boldsymbol{\theta}_0 + \boldsymbol{\theta}_1 \mathbf{x}^1 +...+ \boldsymbol{\theta}_m \mathbf{x}^{m} \\ &= \left[ \boldsymbol{\theta}_0, \boldsymbol{\theta}_1, ..., \boldsymbol{\theta}_m\right] \begin{bmatrix} 1 \\ \mathbf{x}^{1} \\ \vdots \\ \mathbf{x}^{m} \end{bmatrix} \\ &=\sum_{i=0}^{m} \boldsymbol{\theta}_i \mathbf{x}^{i}, \end{aligned}

avec comme attribut le vecteur ϕ(x)=[1,x1,...,xm]T\phi (\mathbf{x}) = \left[ 1, \mathbf{x}^1, ..., \mathbf{x}^m\right]^T. Ainsi, deux méthodes existent pour déterminer le meilleur paramètre θ\boldsymbol{\theta}^*.

  1. Estimation par la méthode du maximum de vraisemblance (appelée MLE: Maximum Likelihood Estimation): Suivant de manière analogique de la détermination du paramètre θ\boldsymbol{\theta}^* sur la partie précédente, la meilleure valeur du paramètre θ\boldsymbol{\theta}^{*} est déterminée par θ=(xTx)1xTy.\boldsymbol{\theta}^*= (\mathbf{x}^T \mathbf{x})^{-1}\mathbf{x}^T\mathbf{y}.

  2. Estimation par la méthode d’un posteriori maximal (appelée MAP: Maximum A Posteriori): La méthode consiste à trouver la valeur θMAP\boldsymbol{\theta}^{*}_{\mathrm{MAP}} qui maximise le produit entre la vraisemblance et la distribution à priori des paramètres θ\boldsymbol{\theta} comme l’indique l’équation (49). Cette méthode d’estimation apparaît généralement dans un cadre bayésien. Tout comme la méthode du maximum de vraisemblance, elle peut être utilisée afin d’estimer un certain nombre de paramètres inconnus, comme les paramètres d’une densité de probabilité, reliés à un échantillon donné. La seule différence avec la méthode de maximum de vraisemblance est sa possibilité de prendre en compte un à priori non uniforme sur les paramètres à estimer. Ainsi, nous pouvons dire que l’estimateur au maximum de vraisemblance est l’estimateur MAP pour une distribution à priori uniforme.

    Par le théorème de Bayes, nous pouvons obtenir le postérieur comme un produit de vraisemblance avec :

    P(θy;x)=P(y;xθ)P(θ)P(y;x)P(y;xθ)P(θ).\begin{align} \mathbb{P}\left(\boldsymbol{\theta}|\mathbf{y};\mathbf{x} \right) &= \frac{\mathbb{P}\left(\mathbf{y};\mathbf{x}|\boldsymbol{\theta}\right) \mathbb{P}\left(\boldsymbol{\theta} \right)}{\mathbb{P}\left(\mathbf{y};\mathbf{x}\right)} \\ & \propto \mathbb{P}\left(\mathbf{y};\mathbf{x}|\boldsymbol{\theta}\right)\mathbb{P}\left(\boldsymbol{\theta}\right).\nonumber \end{align}

Avec YθN(θTx,σ2)\mathbf{Y}| \boldsymbol{\theta} \sim \mathcal{N}(\boldsymbol{\theta}^T \mathbf{x}, \sigma^2) et θN(0,λ2I)\boldsymbol{\theta} \sim \mathcal{N}(\mathbf{0}, \lambda^2 \mathbf{I})I\mathbf{I} représente la matrice identité dont la dimension est la longueur du vecteur θ\boldsymbol{\theta}. Ainsi, nous pouvons écrire la vraisemblance comme:

P(θy;x)=1σ2πexp((yθTx)22σ2)1λ2πexp(θ22λ2)\mathbb{P}(\boldsymbol{\theta}| \mathbf{y};\mathbf{x}) = \frac{1}{\sigma \sqrt{2\pi }}\exp{\left(-\frac{(y - \boldsymbol{\theta}^T \mathbf{x})^2}{2 \sigma^2}\right)} \frac{1}{\lambda \sqrt{2\pi }} \operatorname{exp}\left(-\frac{\boldsymbol{\theta}^2}{2 \lambda^2}\right)

En utilisant la fonction logarithme, nous avons

logP(θx,y)=log(1σ2πexp((yθTx)22σ2)1λ2πexp(θ22λ2))=12σ2(yθTx)212λ2θ2+cte=12σ2yθx212λ2θ2+cte.\begin{aligned} \log \mathbb{P}(\boldsymbol{\theta}|\mathbf{x}, \mathbf{y}) &= \log\left(\frac{1}{\sigma \sqrt{2\pi }}\operatorname{exp}\left(-\frac{(\mathbf{y} - \boldsymbol{\theta}^T \mathbf{x})^2}{2 \sigma^2}\right) \frac{1}{\lambda \sqrt{2\pi }}\exp{\left(-\frac{\boldsymbol{\theta}^2}{2 \lambda^2}\right)} \right)\\ &= -\frac{1}{2 \sigma^2}(\mathbf{y} - \boldsymbol{\theta}^T \mathbf{x})^2 -\frac{1}{2 \lambda^2}\boldsymbol{\theta} ^2 + c^{te} \\ & = -\frac{1}{2 \sigma^2}||\mathbf{y} - \boldsymbol{\theta} \mathbf{x}||^2 -\frac{1}{2 \lambda^2}||\boldsymbol{\theta}|| ^2 + c^{te}. \end{aligned}

Et le paramètre à estimer θ\boldsymbol{\theta}^* correspond au θ\boldsymbol{\theta} qui annule la dérivée partielle de logP(yx,θ)\log \mathbb{P}(\mathbf{y}| \mathbf{x}, \boldsymbol{\theta}) par rapport à θ\boldsymbol{\theta}.

logP(yx,θ)θ=0logθ(12σ2yθx212λ2θ2+cte)=0\displaystyle \frac{\partial \log \mathbb{P}(\mathbf{y}| \mathbf{x}, \boldsymbol{\theta})}{\partial \boldsymbol{\theta}} = 0 \Longleftrightarrow \frac{\partial \log}{\partial \boldsymbol{\theta}}\left(-\frac{1}{2 \sigma^2}||\mathbf{y} - \boldsymbol{\theta} \mathbf{x}||^2 -\frac{1}{2 \lambda^2}||\boldsymbol{\theta}||^2 + c^{te} \right) = 0.

Ceci revient à déterminer le θ\boldsymbol{\theta} qui annule l’expression

1σ2xT(yθx)1λ2θ.\begin{aligned} \frac{1}{ \sigma^2}\mathbf{x}^T (\mathbf{y} - \boldsymbol{\theta} \mathbf{x}) -\frac{1}{ \lambda^2} \boldsymbol{\theta}. \end{aligned}

Alors,

1σ2xT(yθx)1λ2θ=01σ2xTy+1σ2θxTX1λ2θ=0 (1σ2xTx1λ2)θ=1σ2xTyθ=(xTxσ2λ2I)1xTy.\begin{aligned} &-\frac{1}{ \sigma^2}\mathbf{x}^T (\mathbf{y} - \boldsymbol{\theta} \mathbf{x}) -\frac{1}{ \lambda^2} \boldsymbol{\theta} = 0 \Longleftrightarrow -\frac{1}{ \sigma^2}\mathbf{x}^T \mathbf{y} + \frac{1}{ \sigma^2} \boldsymbol{\theta} \mathbf{x}^T \mathbf{X} - \frac{1}{\lambda^2}\boldsymbol{\theta} = 0 \\ \\ &~(\frac{1}{\sigma^2}\mathbf{x}^T \mathbf{x} - \frac{1}{\lambda^2}) \boldsymbol{\theta} = \frac{1}{\sigma^2}\mathbf{x}^T \mathbf{y} \Longleftrightarrow \boldsymbol{\theta}^* = \left(\mathbf{x}^T \mathbf{x} - \frac{\sigma^2}{\lambda^2} \mathbf{I} \right)^{-1} \mathbf{x}^T\mathbf{y}. \end{aligned}

Cas Pratique

Les Problèmes de Classification

A la différence avec le problème de régression, la classification est un autre type de problème d’apprentissage supervisé où la variable à prédire est discrète (ou qualitative ou catégorique). Cette variable discrète peut être binaire (deux classes) ou multiple (multi-classe). Par exemple lorsqu’on veut catégoriser si un e-mail reçu est un ‘spam’ ou "non-spam" il s’agit bel et bien d’un problème de classification.

L’algorithme des KK plus proches voisins (KK-NN)

L’algorithme des KK plus proches voisins aussi appelé KK-Nearest Neighbors (KK-NN) en anglais est une méthode d’apprentissage supervisé utilisée pour la classification aussi bien que la régression Goodfellow et al. (2016). Il est compté parmi les plus simples algorithmes d’apprentissage automatique supervisé, facile à mettre en oeuvre et à comprendre.

Toutefois dans l’industrie, il est plus utilisé pour les problèmes de classification. Son fonctionnement se base sur le principe suivant: dis moi qui sont tes voisins, je te dirais qui tu es ...

L’objectif de cet algorithme est de déterminer la classe d’une nouvelle observation xx en fonction de la classe majoritaire parmi ses KK plus proches voisins. Donc l’algorithme est basé sur la mesure de similarité des voisins proches pour classifier une nouvelle observation xx.

La méthode des KK plus proches voisins, où KK représente le nombre de voisins proches est une méthode non-paramétrique. Cela signifie que l’algorithme permet de faire une classification sans faire d’hypothèse sur la fonction y=f(x1,x2,xn)y=f(\mathbf{x}_1,\mathbf{x}_2, \dots \mathbf{x}_n) qui relie la variable dépendante y\mathbf{y} aux variables indépendantes x1,x2,,xn\mathbf{x}_1,\mathbf{x}_2, \dots, \mathbf{x}_n.

Soit D\mathcal{D} l’ensemble des données ou l’échantillon d’apprentissage, défini par:

D={(xi,yi),i=1,,n},\mathcal{D}=\{(\mathbf{x}_i, y_i), i=1, \dots, n\},

yi{1,,c}y_i \in \{1,\dots,c\} dénote la classe de la donnée ii et xi=(xi1,,xim)\mathbf{x}_i=(\mathbf{x}_{i1}, \dots, \mathbf{x}_{im}) est le vecteur représentant les variables (attributs) prédictrices de la donnée ii.

Supposons un nouveau point p\textbf{p} pour lequel nous voulons prédire la classe dans la quelle il doit appartenir comme indiqué dans la Figure 7.

Classification d’un nouveau point entre deux classes

Figure 7:Classification d’un nouveau point entre deux classes

La première chose à faire est de calculer la distance entre le point p\textbf{p} avec tous les autres points. Ensuite trouver les KK points les plus proches de p\textbf{p}. C’est-à-dire les KK points dont la distance avec p\textbf{p} est minimale. Les KK-points plus proches de p\textbf{p} dans l’échantillon d’apprentissage sont obtenus par:

Kargminxi {d(p,xi),i=1,,n}.\underset{\mathbf{x}_i}{K-\mbox{argmin}}\ \{d(\textbf{p},\mathbf{x}_i), i=1, \dots, n\}.

Pour tout i{1,,n},dp,i:={d(p,xi), i=1,,n}i \in \{1, \dots, n\}, d_{p, i} := \{ d(p, \mathbf{x}_i), ~ i = 1, \dots, n \}dd est une fonction de distance. Et en suite la classe prédite de p\textbf{p} notée y^\hat{\textbf{y}} est la classe majoritairement représentée par les kk voisins.

Les points similaires ou les points les plus proches sont sélectionnés en utilisant une fonction de distance telle que la distance euclidienne (22), la distance de Manhattan (21) et la distance de Minkowski (23). On choisit la fonction de distance en fonction des types de données manipulées, par exemple dans le cas où les données sont quantitatives et du même type, c’est la distance euclidienne qui est utilisée.

Les points les plus proches de PP sont trouvés en utilisant une fonction de distance telle que la distance Euclidienne, la distance de Minkowski et la distance de Manhattan.

Algorithme

Soient D\mathcal{D} un échantillon d’apprentissage des observations xi\mathbf{x}_i relatives à une classe yiy_i D={(xi,yi),i=1,,n}\mathcal{D}=\{(\mathbf{x}_i, y_i), i=1, \dots,n\} et p\textbf{p} une nouvelle observation dont la classe c^\hat{c} doit être prédite. Les étapes de l’algorithme: Ainsi, l’algorithme se présente comme suit:

  1. Choisir le paramètre KK, le nombre de voisins les plus proches;

  2. Calculer la distance de la nouvelle observation p\textbf{p} avec tous les autres échantillons selon une fonction de distance choisie d(p,xi);d(p, \mathbf{x}_i);

  3. Sélectionner les KK plus proches voisins de p\textbf{p};

  4. Former la collection KcK_c des étiquettes des KK plus proches voisins de p\textbf{p};

  5. Et la classe de p\textbf{p}, c^\hat{c} est choisie d’après la majorité des KcK_c plus proches voisins, c’est-à-dire

    c^=Mode(Kc)\hat{c}=\mbox{Mode}(K_c)

    .

  6. Répéter l’étape 2 à 5 pour chaque nouveau point à classifier.

L’algorithme Comment choisir la valeur de KK ? nous présente le pseudo-code de la méthode de plus proches voisins.

Comment choisir la valeur de KK ?

Validation-croisée (Cross-Validation)

La Validation-croisée (Cross-validation) est une méthode très populaire utilisée pour estimer la performance d’un algorithme. C’est une méthode statistique souvent utilisée dans des procédures d’estimation et aussi pour la sélection de modèles Chen (2019).

Son principe est le suivant :

C’est une technique très utilisée pour le choix de meilleurs paramètres et hyperparamètres d’un modèle, par exemple pour le choix de la meilleure valeur de KK dans l’algorithme de plus proches voisins (KK-NN).

On distingue les variantes suivantes de la technique de validation-croisée:

D’une manière générale, la procédure de partitionnement des données se présente souvent comme suit:

Apprentissage70%+Validation10%+Test20%\begin{aligned} \underbrace{Apprentissage }_{70\%} + \underbrace{Validation}_{10\%}+ \underbrace{Test}_{20\%} \end{aligned}

Les avantages de l’algorithme de KK-NN

Les limitations de l’algorithme de KK-NN

Exemple pratique

Ci-dessous, nous allons prendre un exemple simple pour comprendre l’intuition derrière l’algorithme de KK-NN. Considérons le tableau de données ci-dessous qui contient la taille (feet), l’âge (année) et le poids(en kilogramme) de 10 personnes où ID représente l’identifiant de chaque personne dans le tableau. Comme vous le remarquez le poids du ID 11 est manquant. Nous allons appliquer l’algorithme de KK-NN pour prédire le poids de la personne ID 11.

IDTailleÂgePoids
154577
25.112647
35.63055
45.93459
54.84072
65.83660
75.31940
85.82860
95.52345
105.63258
115.538?

Données pour l’illustration

Nous pouvons représenter graphiquement les données du Paragraph en se basant sur la taille et l’âge.

Comme nous le remarquons, le point rouge (ID 11) est notre nouvelle observation dont nous voulons prédire la classe dans laquelle il appartient.

Étape 1: Commençons par choisir le nombre des voisins les plus proche. Pour notre cas prenons K=5K=5.

Étape 2: Calculer la distance entre le nouveau point (rouge) avec tous les autres points

La distance euclidienne entre nouvelle observation et tous les autres points

Figure 9:La distance euclidienne entre nouvelle observation et tous les autres points

Étape 3: Sélectionner les 5 plus proches voisins.

Sélection de 5 plus proches voisins

Figure 10:Sélection de 5 plus proches voisins

Étape 4: Pour la valeur de K=5K=5, les points les plus proches sont 1, 4, 5, 6 et 10.1,\ 4,\ 5,\ 6\text{ et } 10.

Étape 5: Ainsi, comme la classe des points 4, 64,\ 6 et 10 est majoritaire donc le point 11 se classifie dans cette classe. Et comme c’est un cas de la régression, la prédiction pour ID11 est la moyenne de ces 5 voisins les plus proches c’est-à-dire (77+59+72+60+58)/5=65.2 Kg(77+59+72+60+58)/5=65.2\ Kg. Ainsi le poids prédit pour ID11 est 65.2 Kg65.2\ Kg.

L’algorithme du Perceptron

L’algorithme de perceptron est un algorithme d’apprentissage supervisé utilisé pour la classification binaire (c’est-à-dire séparant deux classes). C’est l’un des tout premier algorithme d’apprentissage supervisé et de réseau de neurones artificiels le plus simple. Le terme vient de l’unité de base dans un neurone qui s’appelle perceptron.

C’est un type de classification linéaire, c’est-à-dire que les données d’apprentissage sont séparées par une droite classées dans des catégories correspondantes de telle sorte que si la classification à deux catégories est appliquée, toutes les données sont rangées dans ces deux catégories. Dans ce cas on cherche à trouver un hyperplan qui sépare correctement les données en deux catégories. Comme nous le voyons dans la Div ci-dessous.

L’algorithme du perceptron

L’idée générale de l’algorithme du perceptron est d’initialiser le vecteur de poids réels wRd\mathbf{w} \in \mathbb{R}^d au vecteur nul ou à une variable aléatoire, itérer un nombre de fois jusqu’à la convergence sur les données d’apprentissage.

Soient D={(xi,yi)}i=1n\mathcal{D} = \{(\mathbf{x}_i, y_i)\}^{n}_{i=1}, un ensemble de données où xiRd\mathbf{x}_i \in \mathbb{R}^d est le vecteur d’entrées de dimension dd et l’étiquette yi{1,1}y_i \in \{-1,1\}; wRd\mathbf{w} \in \mathbb{R}^d un vecteur poids de dimension dd.

L’objectif est de trouver un hyperplan w.x+b=0\mathbf{w}.\mathbf{x} + b=0 qui sépare les deux classes. Le terme bb est l’intercepte appelé aussi "bias term" et wx\mathbf{w}\cdot \mathbf{x} est le produit scalaire défini par w,x:=s=1dwsxs\langle \mathbf{w},\mathbf{x} \rangle := \sum_{s=1}^{d} w_{s} \mathbf{x}_{s}.

C’est-à-dire apprendre le vecteur w\mathbf{w} tel que:

y=signe(wx+b)\begin{aligned} \mathbf{y}& = \operatorname{signe}\left(\mathbf{w}\cdot \mathbf{x} +b\right) \end{aligned}
Si wx+b>0 alors sgn(wx+b)=+1, pour tout x appartenant aˋ la classe positive.Si wx+b0 alors sgn(wx+b)=1, pour tout x appartenant aˋ la classe neˊgative.\begin{aligned} \text{Si } \mathbf{w}\cdot \mathbf{x} +b>0 \text{ alors } \operatorname{sgn}(\mathbf{w}\cdot \mathbf{x} +b) =+1, \text{ pour tout } \mathbf{x} \text{ appartenant \`a la classe positive.} \text{Si } \mathbf{w}\cdot \mathbf{x} + b \leq 0 \text{ alors } \operatorname{sgn}(\mathbf{w}\cdot \mathbf{x} +b) = -1, \text{ pour tout } \mathbf{x} \text{ appartenant \`a la classe négative.} \end{aligned}

Algorithme

Soient les données d’apprentissage D={(x1,y1),,(xn,yn)}\mathcal{D} = \{(\mathbf{x}_1, y_1), \dots, (\mathbf{x}_n, y_n)\}xiRd\mathbf{x}_i \in \mathbb{R}^d, yi{1,1}y_i \in \{-1,1\} et TT le nombre d’itérations. L’algorithme se présente comme suit:

L’avantage de l’algorithme de perceptron est sa simplicité et son efficacité de séparer linéairement les données d’apprentissage. Néanmoins, tous les hyperplans qui séparent les données sont équivalents.

L’algorithme ne peut séparer et converger vers la solution uniquement que si les données d’apprentissage sont linéairement séparables. Aussi, il n’est pas efficace quand il y a beaucoup d’attributs.

La Régression Logistique

La régression logistique est une méthode de classification simple mais puissante, pour les données binaires, et elle peut facilement être étendue à plusieurs classes. Considérons d’abord le modèle de régression le plus simple, correspondant à celui que nous avons vu précédemment, pour effectuer la classification. Nous le trouverons bientôt totalement insuffisant pour ce que nous voulons réaliser et il sera instructif de voir exactement pourquoi. Le modèle de la régression linéaire comme défini dans l’équation (1), peut se réécrire comme:

hθ(x)=θTx,\begin{aligned} h_{\boldsymbol{\theta}}(\mathbf{x})= \boldsymbol{\theta}^T\mathbf{x}, \end{aligned}

x\mathbf{x} est une matrice de taille n×dn\times d et θRd\boldsymbol{\theta} \in \mathbb{R}^{d}.

Comme dans de nombreux problèmes d’estimation de paramètres, θ\boldsymbol{\theta} est trouvé en minimisant certaines fonctions de pertes qui capturent à quel point notre prédiction est proche de la valeur réelle. Quand nous faisons des hypothèses sur la distribution des données, la fonction de perte est souvent en termes de vraisemblance des données. Cela signifie que le θ\boldsymbol{\theta} optimal est celui pour lequel les données observées ont la probabilité la plus élevée. Par exemple, la régression linéaire suppose généralement que la variable dépendante est normalement distribuée autour de la moyenne hθ(x)h_{\boldsymbol{\theta}}(\mathbf{x}). Il peut être montré que la solution du maximum de vraisemblance est le θ\boldsymbol{\theta} qui minimise la somme des erreurs quadratiques (la différence entre les valeurs prédites et les valeurs correctes). Si nous essayons d’utiliser la régression linéaire pour un problème de classification (prenons l’exemple d’une classification binaire) une méthode simple serait de grouper les données de telle sorte que:

y={1,si θTx>00,sinony= \begin{cases} 1,& \text{si } \boldsymbol{\theta}^{T}\mathbf{x} > 0 \\ 0,& \text{sinon} \end{cases}

Ceci est illustré par la Figure 11.

Régression linéaire dans le cas d’une classification binaire

Figure 11:Régression linéaire dans le cas d’une classification binaire

La régression logistique binaire

La régression logistique ordinaire ou régression logistique binaire vise à expliquer une variable d’intérêt binaire (c’est-à-dire de type « oui / non » ou « vrai / faux »). Les variables explicatives qui seront introduites dans le modèle peuvent être quantitatives (l’âge, la taille, etc) ou qualitatives (le genre par exemple).

Exemple

Dans cet exemple, la variable explicative xx est une matrice de vecteurs colonnes x1,x2\mathbf{x}_1, \mathbf{x}_2x1\mathbf{x}_1 est le vecteur ‘apprendre’ qui représente le nombre d’heures d’étude de l’étudiant, et x2\mathbf{x}_2 est le nombre d’heures pendant lesquelles l’étudiant dort. L’objectif est de prédire si l’étudiant va réussir à l’examen ou non, respectivement représentée par les classes 1 et 0.

ApprendreDormirRéussir
4.859.631
8.623.230
5.438.231
9.216.340

Comme dans le cas de la régression linéaire, on suppose que les données suivent une fonction linéaire de la forme:

y=θTx.\begin{aligned} \mathbf{y}= \boldsymbol{\theta}^T\mathbf{x}. \end{aligned}

y\mathbf{y} représente la variable à expliquer, x\mathbf{x} est la variable explicative et θ\boldsymbol{\theta} un paramètre. Comme nous l’avons vu, la variable y\mathbf{y} est une variable continue. Pour utiliser cette technique dans le cas d’une variable discrète (ici binaire), supposons que pp est la probabilité qu’un événement se réalise; alors 1p1-p est la probabilité de l’évènement contraire. La variable aléatoire y\mathbf{y} qui prend les valeurs ‘oui’ ou ‘non’ (1,0 en langage machine) suit la loi de Bernoulli. On définit ce qu’on appelle la transformation logit donnée par l’équation suivante:

log(p1p)=θTx.\log\left(\frac{p}{1-p}\right)=\boldsymbol{\theta}^T\mathbf{x} .

Cette transformation donne la relation entre la probabilité qu’un évenment se réalise et la combinaison linéaire des variables. Le rapport p1p\frac{p}{1-p} est appelé le Rapport de Côte (RC). En appliquant l’exponentielle sur cette relation on obtient:

p1p=eθTx.\frac{p}{1-p} = e^{\boldsymbol{\theta}^T\mathbf{x}}.

Ce qui implique: $$\begin{align} p &=\frac{e^{\boldsymbol{\theta}^T\mathbf{x}}}{1+e^{\boldsymbol{\theta}^T\mathbf{x}}}\nonumber\

&=\frac{1}{1+e^{-\boldsymbol{\theta}^T\mathbf{x}}} \end{align}$$

Avec z=θTxz= \boldsymbol{\theta}^T\mathbf{x}, la fonction σ\sigma définie par σ(z)=11+ez\displaystyle \sigma(z)=\frac{1}{1+e^{-z}} est appelée la fonction Sigmoïde ou logistique. Dans les lignes qui suivent, nous allons donner certaines de ses propriétés.

La fonction Sigmoïde et ses propriétés

Elle est définie par:

σ(z)=11+ez,\sigma(z)=\dfrac{1}{1+e^{-z}},

La représentation graphique de la fonction Sigmoïde est donnée par la Figure 12.

La fonction Sigmoïde

Figure 12:La fonction Sigmoïde

Une qualité importante de cette fonction est qu’elle transforme tous les nombres réels sur la plage [0,1][0, 1]. En régression logistique, cette transformation σ(z)\sigma (z) nous permet d’avoir une vue probabiliste qui est d’une importance cruciale pour la classification. Avec cette fonction, les nombres positifs deviennent des probabilités élevées; les nombres négatifs deviennent de faible probabilité.

Comme vous l’avez sûrement remarqué, l’algorithme de régression linéaire repose sur l’obtention d’un paramètre θ\boldsymbol{\theta}^{*} dit optimal. Dans la section suivante nous allons discuter sur le choix et l’obtention de la valeur θ\boldsymbol{\theta}^{*}.

Estimation du maximum de vraisemblance

Pour choisir la valeur du paramètre θ\boldsymbol{\theta}, on utilise la méthode du maximum de vraisemblance. La variable à expliquer y\mathbf{y} est une variable binaire, i.e y{0,1}\mathbf{y}\in \{0,1\} et la fonction Sigmoïde nous permet de projeter les résultats dans l’intervalle [0,1][0, 1]. Plus précisément, pour un zz considéré, on choisit σ(z)[0,1]\sigma (z) \in [0,1] comme étant un paramètre d’une loi de Bernoulli et ainsi, on a pour tout i=1,,ni=1, \dots, n:

P(Y=yi)=(σ(z))yi(1σ(z))1yi=(σ(θTxi))yi(1σ(θTxi))1yi\begin{aligned} \mathbb{P}(Y=y_{i})&=\left(\sigma(z)\right)^{y_{i}}\left(1-\sigma(z)\right)^{1-y_{i}}\\ &=\left(\sigma(\boldsymbol{\theta}^T\mathbf{x}_i)\right)^{y_{i}} \left (1-\sigma(\boldsymbol{\theta}^T\mathbf{x}_i)\right)^{1-y_{i}} \end{aligned}

Par suite, on peut exprimer la vraisemblance:

(θ)=i=1nP(Y=yi)\begin{aligned} \ell(\boldsymbol{\theta})&=\prod_ {i=1}^{n}\mathbb{P}\left(Y=y_{i}\right) \end{aligned}

En appliquant la fonction logarithme, on obtient le logarithme-vraisemblance donnée par l’expression suivante:

log((θ))L(θ)=i=1nyilogσ(θTxi)+(1yi)log(1σ(θTxi))\begin{aligned} \log( \ell(\boldsymbol{\theta}))\equiv L(\boldsymbol{\theta})=\sum_{i=1}^{n}y_{i}\log\sigma\left(\boldsymbol{\theta}^{T}\mathbf{x}_i\right) + \left(1-y_{i}\right)\log\left(1-\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i)\right) \end{aligned}

Notre objective est de trouver le paramètre θ\boldsymbol{\theta} qui maximise la vraisemblance:

maxθL(θ)=maxθi=1nyilogσ(θTxi)+(1yi)log(1σ(θTxi))\begin{aligned} \max_{\boldsymbol{\theta}} L(\boldsymbol{\theta}) = \max_{\boldsymbol{\theta}}\sum_{i=1}^{n}y_{i}\log\sigma \left(\boldsymbol{\theta}^{T}\mathbf{x}_i \right) + \left(1-y_{i}\right)\log \left(1-\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i)\right) \end{aligned}

En générale, pour trouver l’estimation du maximum de vraisemblance, nous dérivons d’abord la log\log-vraisemblance par rapport à θ\boldsymbol{\theta}. Pour commencer, prenons la dérivée par rapport à une composante de θ\boldsymbol{\theta}, disons θj\theta^j

θjL(θ)=[yi1σ(θTxi)(1yi)11σ(θTxi)]σ(θTxi)(1σ(θTxi))(θjθTxi)=[yi(1σ(θTxi))(1yi)σ(θTxi)]xij=(yiσ(θTxi))xij\begin{aligned} \frac{\partial}{\partial \theta^j}L(\boldsymbol{\theta}) &=\left[ y_i\frac{1}{\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i)}-(1-y_i)\frac{1}{1-\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i)}\right]\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i)(1-\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i))(\frac{\partial}{\partial \theta^j}\boldsymbol{\theta}^{T}\mathbf{x}_i)\\ &=\left[y_i(1-\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i))-(1-y_{i})\sigma(\boldsymbol{\theta}^{T}\mathbf{x}_i)\right]\mathbf{x}_i^{j}\\ &=\left(y_{i}-\sigma(\boldsymbol{\theta}^{T} \mathbf{x}_i)\right)\mathbf{x}_i^{j} \end{aligned}

Une méthode classique de trouver le θ\boldsymbol{\theta} optimal est de poser la dérivée θjL(θ)=0\displaystyle \frac{\partial}{\partial \theta^j}L(\boldsymbol{\theta})=0 pour tout jj et trouver la valeur exacte de θ\boldsymbol{\theta} qui maximise la vraisemblance. Cependant, la solution exacte n’est pas toujours facile à calculer à cause du fait que c’est une équation transcendantale (il n’y a pas de solution analytique). Par conséquent, la technique souvent utilisée pour résoudre ce problème est la méthode de la descente de gradient GD.

Ainsi en utilisant la technique de la descente de gradient, le paramètre θj\theta^j sera mis à jour par la formule suivante, pour chaque itération:

θj=θj+γ.θjL(θ).\theta^j = \theta^j + \gamma . \frac{\partial}{\partial \theta^j}L(\boldsymbol{\theta}).

Le paramètre γ\gamma est appelé taux d’apprentissage. Le paramètre θ\boldsymbol{\theta}^{*} obtenu à la sortie de cet algorithme maximise la log-vraisemblance.

Ainsi nous considérons un seuil 0.5 et regroupons les données comme suit:

y^={1,si σ(θTx)>0.50,sinon\hat{y}= \begin{cases} 1,& \text{si } \sigma(\boldsymbol{\theta}^{*T}\mathbf{x}) > 0.5 \\ 0,& \text{sinon} \end{cases}

Cas pratique

Régression logistique multinomiale

La régression logistique multinomiale est une forme généralisée de la régression logistique binaire utilisée pour estimer la probabilité quand le nombre de classe CC est supérieur à deux. Prenons l’exemple de reconnaissance de chiffres à partir de leur image. Cette tâche consiste à identifier une image comme l’un des éléments de l’ensemble {0,1,2,3,4,5,6,7,8,9}\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\}. Dans ce cas, la fonction [1]Sigmoïde utilisée dans le cas binaire est remplacée par la [2]fonction Softmax.

La fonction Softmax et ses propriétés

La régression logistique multinomiale utilise une fonction Softmax pour modéliser la relation entre les variables explicatives et les probabilités de chaque classe. Elle prédit la classe qui a la probabilité la plus élevée parmi toutes les classes.

La fonction Softmax\operatorname{Softmax} est définie par:

Softmax(z)i=ezij=1Cezj,i=1,,C.u\operatorname{Softmax}(z)_i=\dfrac{e^{z_i}} {\sum_{j=1}^{C} e^{z_{j}}}, \quad i=1,\cdots, C. u

CC est le nombre de classes.

Cette fonction Softmax\operatorname{Softmax} prend comme entrée z\mathbf{z} qui est un vecteur de dimension nn et produit y^\mathbf{\hat{y}} un vecteur de même dimension de valeurs réelles entre 0 et 1.

Toutes les valeurs ziz_{i} sont les éléments du vecteur d’entrée et peuvent prendre n’importe quelle valeur réelle. Le dénominateur de la formule (41) est le terme de normalisation qui garantit que toutes les valeurs de sortie de la fonction totaliseront 1, constituant ainsi une distribution de probabilité valide.

On peut écrire la probabilité de la classe cc pour c=1,,Cc=1,\cdots,C sachant x\mathbf{x} comme:

[P(y=1x)P(y=Cx)]=[Softmax(x)1Softmax(x)C]=1j=1CeθTxj[eθTx1eθTxC]\begin{aligned} \begin{bmatrix} \mathbb{P}(y=1|\mathbf{x}) \\ \vdots \\ \mathbb{P}(y=C|\mathbf{x}) \end{bmatrix} = \begin{bmatrix} \operatorname{Softmax}(\mathbf{x})_{1} \\ \vdots \\ \operatorname{Softmax}(\mathbf{x})_{C} \end{bmatrix}= \dfrac{1}{\sum_{j=1}^{C}e^{\boldsymbol{\theta}^T \mathbf{x}_{j}}} \begin{bmatrix} e^{\boldsymbol{\theta}^T \mathbf{x}_1}\\ \vdots \\ e^{\boldsymbol{\theta}^T \mathbf{x}_{C}} \end{bmatrix} \end{aligned}

Estimation du maximum de vraisemblance

De la même façon que dans le cas de la régression binaire, nous suivrons la même procédure pour déterminer le θ\boldsymbol{\theta} qui maximise la vraisemblance.

(θ)=i=1nP(yix;θ).\ell(\boldsymbol{\theta})= \prod_{i=1}^{n}\mathbb{P}(y_{i}|\mathbf{x};\boldsymbol{\theta}).

L’équation (43) suppose que les instances de données ont été générées indépendamment. Ainsi, en appliquant le logarithme sur (43), nous obtenons:

L(θ)=j=1ni=1Clog[(eθiTxjk=1CeθkTxj)yj]=j=1ni=1Cyjlog(eθiTxjk=1CeθiTxj).\begin{aligned} L(\boldsymbol{\theta})&=\sum_{j=1}^{n}\sum_{i=1}^{C} \log\left[\left(\dfrac{e^{\boldsymbol{\theta}_{i}^T \mathbf{x}_{j}}} {\sum_{k=1}^{C} e^{\boldsymbol{\theta}_{k}^T \mathbf{x}_{j}}}\right)^{y_{j}}\right]\\ &=\sum_{j=1}^{n}\sum_{i=1}^{C}y_{j}\log\left(\dfrac{e^{\boldsymbol{\theta}^{T}_i \mathbf{x}_{j}}} {\displaystyle\sum_{k=1}^{C} e^{\boldsymbol{\theta}^{T}_i \mathbf{x}_{j}}}\right). \end{aligned}

Donc maximiser la log-vraisemblance\operatorname{log-vraisemblance} équivaut à minimiser l’opposé de la log-vraisemblance\operatorname{log-vraisemblance} donnée par l’expression suivante :

L(θ)=j=1ni=1Cyjlog(eθiTxjk=1CeθkTxj)=j=1ni=1Cyj[log(eθiTxj)log(k=1CeθkTxj)].L(\boldsymbol{\theta})= -\sum_{j=1}^{n}\sum_{i=1}^{C}y_{j}\log\left(\dfrac{e^{\boldsymbol{\theta}_{i}^T \mathbf{x}_{j}}} {\sum_{k=1}^{C} e^{\boldsymbol{\theta}^{T}_k \mathbf{x}_{j}}}\right) =- \sum_{j=1}^{n}\sum_{i=1}^{C}y_{j}\left[\log\left(e^{\boldsymbol{\theta}_{i}^T \mathbf{x}_{j}} \right) - \log\left( \displaystyle\sum_{k=1}^{C} e^{\boldsymbol{\theta}_{k}^T \mathbf{x}_{j}} \right)\right].

Cet opposé de la log-vraisemblance\operatorname{log-vraisemblance} est aussi connu sous le nom de l’entropie de Shannon (cross-entropy) qui est la fonction de perte dans ce cas. Pour trouver le θ\boldsymbol{\theta} qui minimise cette fonction de perte, on suit la même procédure que dans le cas de la régression logistique, c’est-à-dire trouver la dérivée de la fonction de perte et appliquer l’algorithme de la descente de gradient.

En Calculant la dérivée de la fonction de perte par rapport à θj\boldsymbol{\theta}_{j} on a:

θjL(θ)=i=1nyixi+i=1n1k=1CeθkTxieθjTxixi\frac{\partial}{\partial \boldsymbol{\theta}_{j}}L(\boldsymbol{\theta})=-\sum_{i=1}^{n}y_{i}\mathbf{x}_i + \sum_{i=1}^{n} \dfrac{1}{{\sum_{k=1}^{C}e^{\boldsymbol{\theta}_{k}^T \mathbf{x}_i}}}e^{\boldsymbol{\theta}_{j}^T\mathbf{x}_i}\mathbf{x}_i

Maintenant on utilise l’algorithme de la descente de gradient durant le processus d’entraînement pour obtenir le θ\boldsymbol{\theta} optimal. À chaque itération, on met à jour chacun des paramètres θj\boldsymbol{\theta}_j par la formule suivante:

θj=θjγθjL(θ).\boldsymbol{\theta}_{j} = \boldsymbol{\theta}_{j} - \gamma\frac{\partial}{\partial \boldsymbol{\theta}_{j}}L(\boldsymbol{\theta}).

A la sortie de cette algorithme nous obtenons le paramètre optimal θ\boldsymbol{\theta}^{*}. Ainsi, le vecteur y^\mathbf{\hat{y}} prédit est donné par:

y^=argmax softmax(θxtest).\mathbf{\hat{y}}= \operatorname{argmax }~\operatorname{softmax}(\boldsymbol{\theta}^{\star} \mathbf{x}_{test}).

Naïve Bayes

Dans cette sous section nous allons introduire un autre algorithme souvent utilisé dans le cadre des problèmes de classification. Cet algorithme est connu sous le nom de Naïve Bayes, naïve parce qu’il fait une simple hypothèse sur les données, celle qui suppose qu’elles sont indépendantes les une des autres, même si ceci n’est souvent pas vrai en pratique.

Les systèmes modernes populaires comme la classification des émail reçus comme spam ou non-spam sont souvent implémentés avec naïves Bayes et quelques fois leur performance est difficile à surpasser par des algorithmes sophistiqués.

Naïve Bayes fait partie des algorithmes de type génératif, qui sont différents des algorithmes vus jusque-là qui sont de type discriminatif.

L’une des grandes différences entre les algorithmes de type génératif et ceux dits discriminatifs réside dans le fait que les premiers font une hypothèse sur les données P(xy)\mathbb{P}(\mathbf{x}|y) tandis que les derniers font une hypothèse sur les étiquettes (classes) P(yx)\mathbb{P}(y|\mathbf{x}).

Pour ceux qui sont familiers avec les notions mathématiques, peut être que vous vous êtes posé la question si cet algorithme a un lien avec la règle de Bayes (Naïve Bayes) ? OUI! vous avez raison car cette formule nous donne un lien entre les algorithmes de type discriminatif et ceux de type génératif.

Rappelons la formule de Bayes

P(xy)=P(yx)P(x)P(y).\mathbb{P}(\mathbf{x}|y) = \frac{\mathbb{P}(y|\mathbf{x}) \mathbb{P}(\mathbf{x})}{\mathbb{P}(y)}.

Considérons le cas de la classification des émail (spam ou no-spam). Nous pouvons ré-écrire la formule précédente comme :

P(documentclasse)=P(classedocument)P(document)P(classe).\begin{aligned} \mathbb{P}(\mbox{document} |\mbox{classe}) &= \frac{\mathbb{P}(\mbox{classe}|\mbox{document}) \mathbb{P}(\mbox{document})}{\mathbb{P}(\mbox{classe})}. \end{aligned}

Avec document qui représente l’ensemble des émails, et classe leur catégorie.

Pour mieux illustrer la notion introduite dans le paragraphe précédent, réfléchissons sur un exemple pratique. Disons que vous êtes responsable d’un champ de feuille de manioc et vous voulez avoir un système qui vous alarme dès qu’une chèvre entre dans le champ. Nous supposerons (non réaliste) que dans cette contrée nous ne pouvons avoir que deux espèces d’animaux, chèvre et chien, donc nous avons deux catégories c1c_1="chèvre" et c2c_2 = "chien".

Comme vous l’avez sûrement appris dans ce cours, les algorithmes que nous utilisons en apprentissage automatique ne prennent en entrée que les données de type numérique. Alors nos données deviennent :

  1. x\mathbf{x} qui représente certaines caractéristiques des deux animaux, par exemple : ‘couleur’, ‘cris’, ‘vitesse’, ..., toutes ces caractéristiques ont une représentation numérique (cris : bêler=0, aboyer=1, ...).

  2. yy qui prend la valeur "0" pour une chèvre et "1" pour un chien.

Dans ce contexte, un algorithme de type discriminatif va chercher à apprendre une application (mapping) de l’espace des x\mathbf{x} dans l’espace des étiquettes {0,1}\{0, 1\}; en d’autres termes, ce type d’algorithmes va chercher à trouver une ligne (ou hyperplan) qui va séparer les chiens des chèvres étant données les caractéristiques (x\mathbf{x}) observées, tandis que celui de type génératif va se focaliser à la modélisation des caractéristiques qui distinguent un chien d’une chèvre.

Ainsi, parlons de comment nous pouvons construire un modèle de classification en utilisant Naïve Bayes.

Entraînement du Naïve Bayes (Exemple Pratique)

Considérons le cas de l’analyse de sentiments, sur base des commentaires de gens après avoir suivi un film. Pour raison de simplicité nous considérerons un exemple de quelques phrases et leurs classes correspondantes.

Mode Classe  Documents  Train  tout simplement ennuyeux  tout aˋ fait preˊvisible et manque d’eˊnergie  pas de surprises et treˋs peu de rires + treˋs inteˊressant + le film le plus amusant de l’anneˊ Test ? preˊvisible sans amusement \begin{array}{lll} \hline \textbf{Mode} & \textbf{ Classe } & \textbf{ Documents } \\ \hline \text{ Train } & - & \text { tout simplement ennuyeux } \\ & - & \text { tout à fait prévisible et manque d'énergie } \\ & - & \text { pas de surprises et très peu de rires } \\ & + & \text { très intéressant } \\ & + & \text { le film le plus amusant de l'année } \\ \hline \text { Test } & ? & \text { prévisible sans amusement } \end{array}

Nous commencerons par calculer le à priori pour les deux classes comme élaboré dans l’algorithme train_naive.

P(+)=logN+Ndoc=log25=0.916290731874155\mathbb{P}(+) = \log \frac{N_{+}}{N_{doc}}= \log \frac{2}{5}= -0.916290731874155
P()=logNNdoc=log35=0.5108256237659907\mathbb{P}(-) = \log \frac{N_{-}}{N_{doc}} = \log \frac{3}{5} = -0.5108256237659907

Comme vous l’avez remarqué, les formules que nous utilisons pour notre algorithme sont dans l’échelle logarithmique, ceci, pour raison d’éviter ce qui est connu en anglais comme underflow (quand les valeurs sont très proches de zéro au point d’être vue par l’ordinateur comme zéro), overflow (quand les valeurs sont très grandes) mais aussi pour augmenter la vitesse de calcul.

La prochaine étape consiste à définir notre vocabulaire VV. Le VV est un ensemble qui contient les mots uniques de nos données.

V = {‘tout’, ‘simplement’, ‘ennuyeux’, ‘à’, ‘fait’, ‘prévisible’, ‘et’, ‘manque’, ‘d’, ‘énergie’, ‘pas’, ‘de’, ‘surprises’, ‘très’, ‘peu’, ‘rires’, ‘intéressant’, ‘le’, ‘film’, ‘plus’, ‘amusant’, ‘l’, ‘année’}.

Nous avons au total 23 mots uniques. Nous allons par la suite, calculer les valeurs de classedocclassedoc pour les deux classes:

Calculons ensuite le logarithme de la probabilité (d’apparition) de chaque mot dans notre vocabulaire étant donné une classe particulière. En pratique, pour le calcul de logProb_wc\log \operatorname{Prob\_wc}, il arrive que nous rencontrons de nouveaux mots qui n’étaient pas présents dans l’étape d’entraînement, ceci conduit au fait que logProb_wc=log(0)\log \operatorname{Prob\_wc} = \log(0) qui n’est pas défini. Alors pour contourner ce problème, plusieurs alternatives existent dans la littérature; dans le contexte de notre exemple, nous allons utiliser la technique appelée "add-one (Laplace) smothing" qui va transformer la formule de logProb_wc\log \operatorname{Prob}\_wc fournie dans l’algorithme train_naive:

logProb_wc=logcompter(w,c)+1wV(compter(w,c)+1)=logcompter(w,c)+1wV(compter(w,c))+V\begin{aligned} \log \operatorname{Prob}\_wc &= \log \frac{\operatorname{compter}(w, c)+1}{\sum_{w^{\prime} \in V} \left(\text {compter}\left(w^{\prime}, c\right)+1\right)}\\ &=\log \frac{\operatorname{compter}(w, c)+1}{\sum_{w^{\prime} \in V} \left(\operatorname {compter}\left(w^{\prime}, c\right)\right)+|V|} \end{aligned}

En réalité comme vous l’avez peut être remarqué, l’algorithme de Naïve Bayes est simplement un comptage systématique des mots.

Notre tâche ici est de classifier la phrase "prévisible sans amusement" comme soit positive (+) ou négative (-).

Sentiment positive (+)Sentiment négative (-)
logProb_wc(preˊvisible/+)=3.4965\displaystyle \log \operatorname{Prob\_wc}(\text{prévisible}/+) = -3.4965logProb_wc(preˊvisible/)= 3.0445\displaystyle \log \operatorname{Prob\_wc} (\text{prévisible}/-) =\ -3.0445

Alors pour la phrase S =S\ = "prévisible sans amusement" en utilisant les formules dans l’algorithme test_naive on obtient :

P(+)+P(S+)=0.91623.4965=4.4127\mathbb{P}(+)+\mathbb{P}(S|+) = -0.9162 - 3.4965 = - 4.4127
P()+P(S)=0.51083.0445=3.5553.\mathbb{P}(-)+\mathbb{P}(S|-) = -0.5108 - 3.0445 = - 3.5553.

Notre algorithme prédit la phrase S comme étant "négative" car comme décrit dans l’algorithme test_naive le argmaxcsomme[c]\underset{c}{\arg \max} \quad \operatorname{somme[c]} est celui de la classe négative.

Machines à Vecteur de Support (Support Vector Machine: SVM en anglais)

La méthode Machines à Vecteurs de Support ou séparateurs à vaste marge est une technique très populaire en apprentissage automatique qui peut être utilisée soit pour des problèmes de régression ou de classification. Dans cette section, nous parlerons de Machines à Vecteur de Support pour la classification.

SVM est une téchnique de l’apprentissage supervisé qui consiste à séparer les données en utilisant un hyperplan (la dimension de l’hyperplan est égale à la dimension des données moins 1). L’objectif principal du SVM est de chercher les paramètres de l’hyperplan qui nous permettent d’avoir une marge maximale Shalev-Shwartz & Ben-David (2014). En contraignant la méthode SVM à avoir comme résultat un hyperplan avec une large marge, ceci peut diminuer la complexité de nos données même si la dimension des entrées est très grande. La marge est définie comme la distance entre l’hyperplan et les points qui lui sont proches (comme dans la figure ci-dessous)

représentation de la marge de SVM

Figure 13:représentation de la marge de SVM

Généralement, de son algorithme découle un problème de programmation linéaire. Il existe deux variétés de Machines à Vecteurs de Support: Machines à Vecteurs de Support à marge dure et Machines à Vecteurs de Support à marge souple Shalev-Shwartz & Ben-David (2014). La Machines à Vecteurs de Support à marge souple est du même ordre (en terme d’optimisation) que celle à marge dure mais pour cette dernière, nous nous rendons à l’évidence qu’il peut y avoir d’erreurs, c’est à dire des exemples qui apparaissent entre les vecteurs de supports. Dans cette partie, nous vous présenterons uniquement la méthode de Machines à Vecteur de Support à marge dure.

Dans le cas du SVM, comme tout problème d’apprentissage supervisé les données sont representées comme suit: D={(xi,yi)}i=1n\mathcal{D} = \{\left(\mathbf{x}_i, y_{i}\right)\}^{n} _{i=1} avec yi{1,1}y_{i}\in \{-1,1\}, xiRd\mathbf{x}_i \in \mathbb{R}^{d} Alpaydin (2020)Goodfellow et al. (2016).

La Figure 14 nous présente uniquement le cas où nous sommes en présence de deux classes -1 et 1, mais la méthode peut facilement être généralisée dans le cas de plusieurs classes.

Comme illustré dans la Figure 14, la forme générale de l’hyperplan est WTx+b=0\mathbf{W}^{T}\mathbf{x}+b=0.

Dans ce cas, la marge représente les distances entre les droites d1d_{1} et d2d_{2} à l’hyperplan. Les points qui sont respectivement sur d1d_{1} et d2d_{2} sont appelés vecteurs de supports, ce sont des points les plus proche de l’hyperplan.

Note: Les données représentées dans la Figure 14 sont linéairement séparables.

Dans le cas où cette condition n’est pas satisfaite, nous utiliserons des méthodes un peu plus avancées à l’instar de la méthode à noyaux (Kernel methods en anglais) qui vous sera présentée dans le chapitre Les méthodes du noyau (Kernel methods).

Dans ce qui suit, nous présentons la formulation primale de Machines à Vecteur de Support.

Considérons une observation xi\mathbf{x}_i sur un vecteur de support. Alors, la marge est donnée par:

2WTxi+bW.2 \frac{|\mathbf{W}^{T}\mathbf{x}_i+b|}{||\mathbf{W}||}.

Comme WTxi+b=1|\mathbf{W}^{T}\mathbf{x}_i+b| =1, alors (57) devient :

2W.\frac{2}{||\mathbf{W}||}.

Le problème d’optimisation qui découle de SVM est de maximiser la marge de telle sorte que yi(WTxi+b)1,i=1ny_{i}\left( \mathbf{W}^{T}\mathbf{x}_i+b\right)\ge 1, \quad i=1\cdots n. En d’autres termes, il s’agit de résoudre Shalev-Shwartz & Ben-David (2014):

max(w,b)2Wtel que: yi(wTxi+b)1,i=1n.\begin{align} &\max_{(\mathbf{w,b)}} \frac{2}{||\mathbf{W}||}\\ & \text{tel que: } y_{i}\left( \mathbf{w}^{T}\mathbf{x}_i+b\right)\ge 1, \quad i=1\cdots n. \end{align}

Ceci est équivalent à trouver WRd+1\mathbf{W}\in \mathbb{R}^{d+1} et bRb\in\mathbb{R} qui minimisent:

12W2,\frac{1}{2}||\mathbf{W}||^{2},

avec les contraintes:

yi(WTxi+b)1,i=1n.\begin{aligned} y_{i}\left( \mathbf{W}^{T}\mathbf{x}_i+b\right)\ge 1, \quad i=1\cdots n. \end{aligned}

Pour résoudre le problème d’optimisation précédent (60), nous allons utiliser la méthode de Lagrange où le Lagrangien LL est donné par:

L(W,b,α)=12W2i=1nαi(yi(Wxi+b)1).L(\mathbf{W}, b, \boldsymbol{\alpha})=\frac{1}{2}\|\mathbf{W}\|^{2}-\sum_{i=1}^{n} \alpha_{i}\left(y_{i}\left(\mathbf{W}^{\top} \mathbf{x}_i+b\right)-1\right).

L(W,b,α)L(\mathbf{W}, b, \boldsymbol{\alpha}) est quadratique et convexe en W\mathbf{W}. Son minimum est donné par:

WL=Wi=1nαiyixi=0W=i=1nαiyixi.\nabla_{\mathbf{W}} L=\mathbf{W}-\sum_{i=1}^{n} \alpha_{i} y_{i} \mathbf{x}_i=0 \quad \Longrightarrow \quad \mathbf{W}=\sum_{i=1}^{n} \alpha_{i} y_{i} \mathbf{x}_i.

L(W,b,α)L(\mathbf{W},b,\boldsymbol{\alpha}) est affine en bb. Il est clair que, lorsque l’on a:

bL=i=1nαiyi=0.\nabla_{b} L=\sum_{i=1}^{n} \alpha_{i} y_{i}=0.

le minimum de L(W,b,α)L(\mathbf{W},b,\boldsymbol{\alpha}) existe et est fini, dans le cas contraire, cette fonction n’admettra pas de minimum car il explosera à l’infini.

Le problème d’optimisation correspondant au SVM peut être aussi résolu en utilisant la formulation duale.

Le Lagrangien de la formulation duale est donné par:

g(α)=infWRd,bRL(W,b,α)={12i=1nj=1nyiyjαiαjxiTxj+i=1nαi, si i=1nαiyi=0 autrement \begin{align} \begin{array}{l} \displaystyle g(\boldsymbol{\alpha})=\inf _{\mathbf{W} \in \mathbb{R}^{d}, b \in \mathbb{R}} L(\mathbf{W}, b, \boldsymbol{\alpha}) \\ \displaystyle \quad \quad =\left\{\begin{array}{ll} \displaystyle -\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} y_{i} y_{j} \alpha_{i} \alpha_{j} \mathbf{x}^{T}_{i} \cdot \mathbf{x}_{j}+\sum_{i=1}^{n} \alpha_{i} , & \displaystyle\text { si } \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \\ -\infty & \text { autrement } \end{array}\right. \end{array} \end{align}

Donc le problème réciproque consiste à maximiser g(α)g(\boldsymbol{\alpha}) sous la contrainte α0\boldsymbol{\alpha} \geq 0α\boldsymbol{\alpha} représente le multiplicateur de Lagrange. La maximisation de (65) peut être aussi réformulée de la manière suivante:

minα12i=1nj=1nyiyjαiαjxiTxji=1nαi.subject toi=1nαiyi=0.\begin{align*} \min_{\boldsymbol{\alpha}} \quad& \displaystyle \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n} y_{i}y_{j} \alpha_{i}\alpha_{j}\mathbf{x}^{T}_{i}\mathbf{x}_{j} - \sum_{i=1}^{n}\alpha_{i}.\\ \nonumber &\\ \nonumber \displaystyle\text{subject to}&\displaystyle \sum_{i=1}^{n}\alpha_{i}y_{i} = 0. \end{align*}

Le problème (66) peut aussi être écrit sous la forme matricielle:

minα12αT[y1y1x1Tx1y1y2x1Tx2y1ynx1Txny2y1x2Tx1y2y2x2Tx2y2ynx2Txnyny1xnTx1yny2xnTx2ynynxnTxn]α+(1T)αsoumis aˋ yTα=0avecα0,\begin{align*} \min_{\boldsymbol{\alpha}} \quad& \frac{1}{2} \boldsymbol{\alpha}^{T} \begin{bmatrix} y_{1}y_{1}\mathbf{x}^{T}_{1}\mathbf{x}_1& y_{1}y_{2}\mathbf{x}^{T}_{1}\mathbf{x}_2&\cdots&y_{1}y_{n}\mathbf{x}^{T}_{1}\mathbf{x}_n\\ y_{2}y_{1}\mathbf{x}^{T}_{2}\mathbf{x}_1& y_{2}y_{2}\mathbf{x}^{T}_{2}\mathbf{x}_2&\cdots&y_{2}y_{n}\mathbf{x}^{T}_{2}\mathbf{x}_n\\ \cdots&\cdots&\cdots&\cdots\\ y_{n}y_{1}\mathbf{x}^{T}_{n}\mathbf{x}_1& y_{n}y_{2}\mathbf{x}^{T}_{n}\mathbf{x}_2&\cdots&y_{n}y_{n}\mathbf{x}^{T}_{n}\mathbf{x}_n \end{bmatrix}\boldsymbol{\alpha} + (-\mathbf{1}^{T})\boldsymbol{\alpha}\\ \nonumber &\\ \nonumber \text{soumis \`a }& \mathbf{y}^{T}\boldsymbol{\alpha} = 0 \quad \text{avec} \quad {\boldsymbol{\alpha}} \ge 0, \end{align*}

ce qui est équivalent à:

minα12αTQα1Tα   soumis aˋ   yTα=0etα0,\displaystyle \min_{\boldsymbol{\alpha}}\frac{1}{2} \boldsymbol{\alpha}^{T}Q \boldsymbol{\alpha} - \mathbf{1}^{T}\boldsymbol{\alpha}\ \ \ \text{soumis \`a} \ \ \ \mathbf{y}^{T} \boldsymbol{\alpha} = 0 \quad \text{et} \quad \boldsymbol{\alpha}\ge 0,

avec

Q=[y1y1x1Tx1y1y2x1Tx2y1ynx1Txny2y1x2Tx1y2y2x2Tx2y2ynx2Txnyny1xnTx1yny2xnTx2ynynxnTxn],\displaystyle Q = \begin{bmatrix} y_{1}y_{1}\mathbf{x}^{T}_{1}\mathbf{x}_1& y_{1}y_{2}\mathbf{x}^{T}_{1}\mathbf{x}_2&\cdots&y_{1}y_{n}\mathbf{x}^{T}_{1}\mathbf{x}_n\\ y_{2}y_{1}\mathbf{x}^{T}_{2}\mathbf{x}_1& y_{2}y_{2}\mathbf{x}^{T}_{2}\mathbf{x}_2&\cdots&y_{2}y_{n}\mathbf{x}^{T}_{2}\mathbf{x}_n\\ \cdots&\cdots&\cdots&\cdots\\ y_{n}y_{1}\mathbf{x}^{T}_{n}\mathbf{x}_1& y_{n}y_{2}\mathbf{x}^{T}_{n}\mathbf{x}_2&\cdots&y_{n}y_{n}\mathbf{x}^{T}_{n}\mathbf{x}_n \end{bmatrix},

qui représente le terme quadratique et 1Tα-\mathbf{1}^{T} \boldsymbol{\alpha} le terme de linéarité.

Note: Les contraintes correspondant à la formulation duale sont linéaires par rapport à α.\boldsymbol{\alpha}.

Pour résoudre le problème duale, nous allons utiliser la programmation quadratique ayant comme coefficients les termes QQ et 1T-\mathbf{1}^{T }, quadratique et linéaire, respectivement.

La matrice QQ, est une matrice d’ordre n×nn\times n. Quand le nombre d’exemples est très élevé, il devient très coûteux de travailler avec elle.

Des valeurs de α\boldsymbol{\alpha} obtenues en utilisant la programmation quadratique, nous pouvons déduire WW en se référant à l’équation (63). αi>0\alpha_{i}>0, implique xi,i=1n\mathbf{x}_i, i=1\cdots n est un vecteur à support (VS). Cela revient à écrire WW comme:

W=xiVSαiyixi.\begin{aligned} \mathbf{W} = \sum_{\mathbf{x}_i\in \text{VS}} \alpha_{i}y_{i}\mathbf{x}_i. \end{aligned}

Par contre, pour obtenir bb, nous utilisons le faite que pour tout vecteur à support xi\mathbf{x}_i: yi(WTxi+b)=1y_{i}\left(\mathbf{W}^{T}\mathbf{x}_i+b\right)=1.

Les deux formulations (la formulation primale et la formulation duale) correspondante au modèle machines à vecteurs de support sont très importantes , il y a des circonstances qu’une formulation est préférable à l’autre. Par exemple, la formulation primale est utilisée lorsque la taille de l’échantillon nn, est négligeable par rapport à sa dimension dd (d>>nd>> n).

Pour la résolution des formulations correspondant à la Machine à Vecteur de Support, puisqu’elles correspondent à une programmation linéaire, on pourrait utiliser les packages d’optimisation de Sklearn de Python.

Conclusion

Dans ce chapitre, nous avons parlé de l’apprentissage supervisé pour les problèmes de régression et de classification. Nous pouvons retenir qu’en ce qui concerne l’apprentissage supervisé, ses algorithmes pourront être classés en deux grandes catégories: les algorithmes de type génératif et ceux de type discriminatoire. Les algorithmes génératifs comprennent par exemple, Naïves Bayes et ceux discriminatoires, la régression logistique. Il n’existe pas une formule ou une méthode standard pour le choix d’un algorithme, généralement on procéde par expérimentation. Cependant, il existe des méthodes avantageuses par rapport à d’autres; par exemple pour des problèmes faisant recours aux données streaming, on préfère utiliser l’algorithme de KNN.

Parfois les données à notre disposition n’ont pas d’étiquettes; dans ce cas nous devons nous référer à d’autres techniques pour pouvoir effectuer soit la régression, soit la classification. Plus de détails seront donnés dans le chapitre Apprentissage Non-Supervisé.

Footnotes
References
  1. Arnaud, G. (2013). Régression linéaire.
  2. Bruno, B. (2005). Descente de gradient.
  3. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. MIT press.
  4. Shalev-Shwartz, S., & Ben-David, S. (2014). Understanding machine learning: From theory to algorithms. Cambridge university press.
  5. Chen, L.-P. (2019). Mehryar Mohri, Afshin Rostamizadeh, and Ameet Talwalkar: Foundations of machine learning. Springer.
  6. Alpaydin, E. (2020). Introduction to Machine Learning, (Adaptive Computation and Machine Learning series). MIT Press, Cambridge, MA.

💬 Commentaires et Discussions