Un premier regard sur la classification linéaire et la régression logistique

Publié: 26-08-2019
Le code de ce post est écrit avec Python version 3.7.3 à l'aide du logiciel Spyder.

régression linéaire vs régression logistique

Avant de couvrir la régression logistique, revenons en arrière et examinons un peu la régression linéaire.

La régression linéaire est utilisée pour prédire les sorties sur un spectre continu. Par exemple, prévoir les revenus en fonction de la température de l'air extérieur. Supposons que vous ayez un stand de glace et que la température soit de 20 degrés, nous nous attendons à un revenu quotidien de 300 euros. La température augmentant, disons, de 35 degrés, nous avons pu augmenter le revenu, par exemple, de 700 euros par jour. Nous sommes en mesure d’atteindre un modèle linéaire ou en utilisant une régression linéaire qui est: $$ y=ax + b $$ L'élément clé ici est que les sorties étaient en fait un spectre continu qui signifie que le revenu peut aller par exemple, disons de cent euros jusqu'à mille euros.

La régression logistique est en réalité complètement différente. La régression logistique est utilisée pour prédire les sorties binaires. En termes simples, nous avons deux classes que nous appelons la classe 0 ou la classe 1. Par exemple, vous passez un examen et vous avez deux résultats probables: réussir ou échouer. Ou, comme un client qui entre dans une bijouterie, il va acheter ou non. Lorsque nous appliquons une régression logistique, l’idée générale est d’effectuer simplement une classification.

Si vous êtes confronté à un problème et que vous voulez choisir ce qu'il faut utiliser, une régression linéaire ou une régression logistique, réfléchissez toujours au résultat de ce problème. Si la sortie appartient à un spectre continu tel que le revenu ou le salaire, il s’agit d’un problème de régression et vous pouvez utiliser la régression linéaire. Si vous effectuez une classification, telle que la sortie soit 0 ou 1, réussir ou échouer, vous pouvez utiliser la régression logistique.

Classification linéaire

La régression logistique est l'algorithme de classification linéaire de référence pour les problèmes à deux classes (oui ou non / 0 ou 1). C'est très facile à mettre en œuvre. L’autre beauté de la régression logistique est qu’elle est facile à comprendre et qu’on peut obtenir de très bons résultats sur une grande variété de problèmes.

Un exemple de classification linéaire est présenté ci-dessous. Imaginez que vous avez un graphique avec des "x" à droite et des "o" à gauche. Votre objectif est de tracer une ligne qui sépare les "x" des "o". En traçant cette ligne, vous pourrez classer un nouveau point. Si ce nouveau point inconnu se trouve à droite de la ligne, il sera classé dans la catégorie "x". S'il se trouve à gauche de la ligne, il sera classé dans la catégorie "o".


Régression logistique

La régression logistique est une technique utilisée dans le domaine des statistiques sous le nom de fonction logistique. Cette fonction, également appelée fonction sigmoïde, a été développée par les statisticiens pour décrire les propriétés de la croissance démographique en écologie.

Imaginez que vous souhaitiez prédire si un étudiant réussit ou non à l'examen en fonction du nombre d'heures d'étude. Vous aurez un graphique tel que celui ci-dessous.

L'utilisation de la régression linéaire pour un tel problème n'est pas une bonne solution. Vous pouvez voir que notre sortie vaut 0 ou 1 et n'est pas continue.

La sortie de la courbe en forme de S est zéro ou un. Cette courbe peut prendre n'importe quel nombre réel et la mapper sur une valeur comprise entre 0 et 1. Il s'agit de la fonction sigmoïde. $$ f ( x ) = \frac{1}{1+e^{-x}} $$

e est la base du logarithme naturel et x est la valeur numérique réelle que vous souhaitez transformer.

Voici un exemple en Python sur la façon d'appliquer la fonction sigmoïde sur un ensemble de valeurs réelles entre -8 et 8.

            
                import numpy as np
                import matplotlib.pylab as plt

                x=np.arange(-8,8,0.1)
                f=1 / (1 + np.exp(-x))

                plt.plot(x,f)
                plt.xlabel('x')
                plt.ylabel('f(x)')
                plt.show()
            
        

Pour revenir à notre problème, nous voulons prédire si un élève réussit ou échoue. Vous avez vu qu'un modèle linéaire ne convient pas. Nous voulons donc transformer ce modèle en un modèle de régression logistique.

Le modèle linéaire a une équation linéaire: $$y=b_0 + b_1 \times x$$

Nous appliquerons la fonction sigmoïde: $$P(x) = sigmoid(y)$$ $$P(x) = \frac{1}{1+e^{-y}} $$ $$P(x) = \frac{1}{1+e^{-(b_0 + b_1 \times x)}} $$

P(X) est une probabilité et va de zéro à un. Cela nous donne la probabilité attendue pour une entrée spécifique. Supposons que X soit une heure d'étude, P(X) donnera la probabilité de réussite attendue. Nous pouvons l'écrire comme suit: $$P(X) = P ( Y = 1 | X) $$ Tels que X est l'entrée et Y = 1 est la classe par défaut ("passer" dans notre exemple).

Ce que nous avons fait, nous avons pris l’équation linéaire et sommes passés d’une sortie continue à une probabilité allant de zéro à une qui convient parfaitement à notre problème de classification.

Nous prédisons ici des probabilités, mais la régression logistique est un algorithme de classification et nous voulons prédire 0 ou 1?


Nous allons mettre un seuil. si notre probabilité est inférieure à un seuil spécifique, vous allez échouer. Si la probabilité est supérieure à un certain seuil, vous réussirez. Donc, en utilisant un seuil, nous pouvons convertir la sortie de probabilité en zéro ou un. Par exemple, si P (X) = 0.6, nous disons que la sortie de classification est 1. Si P (X) = 0.3, nous disons que la sortie de classification est 0.

Résumer:

  • la régression logistique est utilisée pour prédire les sorties binaires
  • le modèle linéaire échouera pour de tels problèmes, nous voulons changer ce modèle pour lui donner l'aspect d'une courbe en forme de S
  • nous allons calculer notre modèle linéaire et le substituer dans la fonction sigmoïde
  • le résultat donné par l'équation logistique est une probabilité entre 0 et 1
  • enfin nous allons utiliser un seuil pour convertir la probabilité en une sortie binaire