Régression logistique

Motivation

Analyse

On veut ici classer des données comme appartenant à une classe ou à une autre : cela implique que `y` (la valeur connue ou à prédire) doit avoir des valeurs discrètes (i.e. autant de valeurs que de classes possibles) et non pas une valeur continue (comme en régression linéaire).

Cela implique que la fonction hypothèse `h` doit elle aussi prédire un résultat sous forme de valeurs discrètes dans l'intervalle correspondant à celles de `y`. Par exemple pour un cas binaire soit `y(x)` appartient à la classe "positive" (`y = 1`), soit à la classe "négative" (`y = 0` ou `y = -1` selon les choix techniques).

Classes multiples

Lorsque l'on doit classer entre `K > 2` classes, c'est-à-dire que `y = { 0, 1, 2, ..., K }`, on décompose le problème en `K` problèmes à 2 classes, où l'on cherche à savoir pour chacune si une valeur appartient à la classe testée ou à l'une des autres (one-vs-all).

Conception

Utiliser une fonction linéaire pour classer peut marcher "par chance" mais comporte trop de risque de faux positifs/négatifs.

On préfère donc encapsuler notre hypothèse dans une fonction d'activation `g(z)` qui transforme tout résultat en valeur associée à une classe :

Soit le vecteur `x` représentant les caractéristiques (features) des éléments à classer, notre fonction :

`z=θ^Tx`

et on définit donc `h_θ(x)` comme la probabilité `P` que `y = 1` (et donc probabilité `1 - P` que `y` vaille l'autre classe) :

`h_θ(x)=g(z)`

ou, si l'on remplace `g` par sa définition sigmoïde :

`h_θ(x)=1/(1+e^(−z))`

Coût

Cependant la fonction sigmoïde ne garantit pas d'être convexe. On va donc l'encapsuler dans une autre fonction convexe, le `log` :

`y` `"cost"(h_θ(x),y)` Graphique `z`
1 `−log(h_θ(x))`
0 `−log(1−h_θ(x))`

ce qui peut s'écrire en une seule ligne si l'on utilise la valeur de `y` pour annuler l'une ou l'autre des parties :

`"cost"(h_θ(x),y)=−y*log(h_θ(x))−(1−y)log(1−h_θ(x))`

ou `"cost"(h_θ(x),y)=−[y*log(h_θ(x))+(1−y)log(1−h_θ(x))]` ce qui est en fait très proche de la version linéaire `(h_Θ(x) - y)^2`

ou si on l'insère dans la formule complète du coût en sortant le signe et en y ajoutant le terme de régularisation :

`J(Θ) = -1/m sum_(i=1)^m [y^((i)) log(h_θ(x^((i))))+(1−y^((i)))log(1−h_θ(x^((i))))] + λ/(2m) sum_(j=1)^n θ_j^2`

Précision et rappel

Classer les réponses comme 0 ou 1 en fonction de `h_θ(x)>=0,5` ou `h_θ(x)<0,5` n'est pas toujours le plus opportun ; parfois on voudrait utiliser une autre valeur que 0,5 si les classes sont déséquilibrées/dissymétriques (skewed).

Cependant si ce facteur est trop déséquilibré (disons 0,9), il convient de vérifier la fiabilité des résultats au travers d'une matrice de confusion et des estimations de précision et de rappel débouchant sur le score F1.

Notes