Régression logistique, Régression logistique, Régression logistique, Régression logistique, Régression logistique
Introduction
La régression logistique est une méthode fondamentale en machine learning et statistiques, principalement utilisée pour résoudre des problèmes de classification binaire. Contrairement à la régression linéaire qui prédit une valeur continue, la régression logistique prédit la probabilité qu’une observation appartienne à une classe spécifique (0 ou 1).
Ce modèle est très utilisé dans des domaines variés comme la médecine, la finance, la reconnaissance d’image, ou encore le marketing.
Qu’est-ce que la régression logistique ?
La régression logistique modélise la probabilité qu’une observation appartienne à la classe positive en appliquant une transformation non linéaire à la combinaison linéaire des variables explicatives.
Formule de base :
On calcule d’abord une combinaison linéaire : z=β0+β1×1+β2×2+⋯+βpxpz = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_pz=β0+β1x1+β2x2+⋯+βpxp
Puis on applique la fonction sigmoïde (ou fonction logistique) pour contraindre la sortie entre 0 et 1 : σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}σ(z)=1+e−z1
Le résultat σ(z)\sigma(z)σ(z) est interprété comme la probabilité que l’observation appartienne à la classe positive.
Décision finale
Pour effectuer une classification, on choisit généralement un seuil (souvent 0.5) :
- Si σ(z)≥0.5\sigma(z) \geq 0.5σ(z)≥0.5, l’observation est classée en classe 1.
- Sinon, elle est classée en classe 0.
Estimation des coefficients
Les paramètres β\betaβ sont estimés via la méthode du maximum de vraisemblance, qui cherche à maximiser la probabilité des données observées sous le modèle.
Avantages de la régression logistique
- Modèle simple et efficace pour la classification binaire.
- Interprétable : coefficients β\betaβ indiquent l’impact de chaque variable.
- Probabiliste : donne une estimation de la probabilité.
- Base pour des modèles plus complexes (ex : réseaux de neurones).
Exemple simple en Python avec scikit-learn
pythonCopierModifierfrom sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
# Jeu de données
X = df[['feature1', 'feature2']]
y = df['target'] # classes 0 ou 1
# Séparation train/test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Modèle
model = LogisticRegression()
model.fit(X_train, y_train)
# Prédictions
y_pred = model.predict(X_test)
# Évaluation
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
Évaluation du modèle
Pour juger la qualité d’un modèle de régression logistique, on utilise souvent :
- Matrice de confusion : VP, FP, VN, FN
- Précision, rappel, F1-score
- ROC AUC : surface sous la courbe ROC
- Log loss : fonction de perte logistique
Limitations
- Ne peut pas gérer directement des classes multiples (multiclass) sans adaptation (ex : one-vs-rest).
- Suppose une relation linéaire entre log-odds et variables.
- Sensible aux variables corrélées (multicolinéarité).
- Moins performant sur des données non linéaires sans transformation.
Extensions
- Régression logistique multinomiale pour classification multi-classes.
- Régularisation (L1, L2) pour éviter le surapprentissage.
- Approches non linéaires via noyaux ou réseaux de neurones.
Applications concrètes
- Diagnostic médical (ex : détection de maladie).
- Prédiction de churn client.
- Scoring de crédit.
- Filtrage anti-spam.
Conclusion
La régression logistique est une technique puissante et accessible pour la classification binaire. Sa simplicité et sa capacité à fournir des probabilités la rendent incontournable dans de nombreux projets de data science et machine learning.
Introduction
La régression logistique est une méthode fondamentale en machine learning et statistiques, principalement utilisée pour résoudre des problèmes de classification binaire. Contrairement à la régression linéaire qui prédit une valeur continue, la régression logistique prédit la probabilité qu’une observation appartienne à une classe spécifique (0 ou 1).
Ce modèle est très utilisé dans des domaines variés comme la médecine, la finance, la reconnaissance d’image, ou encore le marketing.
Qu’est-ce que la régression logistique ?
La régression logistique modélise la probabilité qu’une observation appartienne à la classe positive en appliquant une transformation non linéaire à la combinaison linéaire des variables explicatives.
Formule de base :
On calcule d’abord une combinaison linéaire : z=β0+β1×1+β2×2+⋯+βpxpz = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_pz=β0+β1x1+β2x2+⋯+βpxp
Puis on applique la fonction sigmoïde (ou fonction logistique) pour contraindre la sortie entre 0 et 1 : σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}σ(z)=1+e−z1
Le résultat σ(z)\sigma(z)σ(z) est interprété comme la probabilité que l’observation appartienne à la classe positive.
Décision finale
Pour effectuer une classification, on choisit généralement un seuil (souvent 0.5) :
- Si σ(z)≥0.5\sigma(z) \geq 0.5σ(z)≥0.5, l’observation est classée en classe 1.
- Sinon, elle est classée en classe 0.
Estimation des coefficients
Les paramètres β\betaβ sont estimés via la méthode du maximum de vraisemblance, qui cherche à maximiser la probabilité des données observées sous le modèle.
Avantages de la régression logistique
- Modèle simple et efficace pour la classification binaire.
- Interprétable : coefficients β\betaβ indiquent l’impact de chaque variable.
- Probabiliste : donne une estimation de la probabilité.
- Base pour des modèles plus complexes (ex : réseaux de neurones).
Exemple simple en Python avec scikit-learn
pythonCopierModifierfrom sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
# Jeu de données
X = df[['feature1', 'feature2']]
y = df['target'] # classes 0 ou 1
# Séparation train/test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Modèle
model = LogisticRegression()
model.fit(X_train, y_train)
# Prédictions
y_pred = model.predict(X_test)
# Évaluation
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
Évaluation du modèle
Pour juger la qualité d’un modèle de régression logistique, on utilise souvent :
- Matrice de confusion : VP, FP, VN, FN
- Précision, rappel, F1-score
- ROC AUC : surface sous la courbe ROC
- Log loss : fonction de perte logistique
Limitations
- Ne peut pas gérer directement des classes multiples (multiclass) sans adaptation (ex : one-vs-rest).
- Suppose une relation linéaire entre log-odds et variables.
- Sensible aux variables corrélées (multicolinéarité).
- Moins performant sur des données non linéaires sans transformation.
Extensions
- Régression logistique multinomiale pour classification multi-classes.
- Régularisation (L1, L2) pour éviter le surapprentissage.
- Approches non linéaires via noyaux ou réseaux de neurones.
Applications concrètes
- Diagnostic médical (ex : détection de maladie).
- Prédiction de churn client.
- Scoring de crédit.
- Filtrage anti-spam.
Conclusion
La régression logistique est une technique puissante et accessible pour la classification binaire. Sa simplicité et sa capacité à fournir des probabilités la rendent incontournable dans de nombreux projets de data science et machine learning.