La régression logistique est souvent le premier algorithme demandé en entretien. Mais la maîtriser vraiment — coefficients, régularisation, hypothèses — différencie les profils solides.
1Pourquoi la régression logistique plutôt que linéaire
Question discriminante
Pourquoi ne peut-on pas utiliser une régression linéaire pour prédire une probabilité ?
- Problème régression linéaire — peut prédire des valeurs hors [0,1]. Une probabilité doit être bornée entre 0 et 1
- Solution — transformer la sortie via la fonction sigmoïde qui mappe ℝ → [0,1]
- Interprétation — la régression logistique modélise log(p/(1-p)) = β₀ + β₁X₁ + ... (les log-odds)
- Avantage — interprétable, probabilités calibrées, base pour comprendre les GLMs
2Fonction sigmoïde et odds ratio
Question discriminante
Qu est-ce qu un odds ratio ? Comment l interprétez-vous dans le contexte d un modèle de churn ?
import numpy as np
from sklearn.linear_model import LogisticRegression
import pandas as pd
model = LogisticRegression(C=1.0, solver='lbfgs')
model.fit(X_train, y_train)
# Odds ratios : exp(coeff)
odds_ratios = pd.Series(
np.exp(model.coef_[0]),
index=X_train.columns
).sort_values(ascending=False)
print(odds_ratios)
# age: 0.95 -> +1 an d age = probabilite churn * 0.95
# jours_inactif: 1.12 -> +1 jour inactif = probabilite churn * 1.12
# nb_achats_12m: 0.88 -> +1 achat = probabilite churn * 0.88
- Odds ratio > 1 — la feature augmente la probabilité de l événement
- Odds ratio < 1 — la feature diminue la probabilité
- Odds ratio = 1 — la feature n a pas d effet
- Exemple — OR = 1.12 pour 'jours_inactif' signifie : chaque jour d inactivité supplémentaire multiplie les odds de churn par 1.12 (+12%)
3Interpréter les coefficients
Question discriminante
Comment les coefficients d une régression logistique sont-ils affectés par le scaling des features ?
- Sans scaling — les coefficients ne sont pas comparables. Une feature en euros (0-100000) aura un coefficient très petit vs une feature en [0,1]
- Avec StandardScaler — tous les coefficients sont sur la même échelle. Le coefficient absolu reflète l importance relative de la feature
- Interprétation — avec scaling : 'la feature la plus importante est celle avec le coefficient absolu le plus élevé'
- À ne pas confondre — la magnitude du coefficient ≠ p-value de la feature
4Régularisation L1 (Lasso) et L2 (Ridge)
Question discriminante
Quelle est la différence entre L1 et L2 dans sklearn LogisticRegression ? Quand utilisez-vous l un ou l autre ?
# sklearn : parametre C = 1/lambda (inverse de la regularisation)
# C petit -> forte regularisation, C grand -> faible regularisation
# L2 (Ridge) : penalty='l2' - par defaut
# Réduit les coefficients sans les mettre à zéro
model_l2 = LogisticRegression(penalty='l2', C=0.1, solver='lbfgs')
# L1 (Lasso) : penalty='l1'
# Met les coefficients non importants à zéro = sélection de features
model_l1 = LogisticRegression(penalty='l1', C=0.1, solver='liblinear')
# ElasticNet : combinaison L1 + L2
model_en = LogisticRegression(penalty='elasticnet', l1_ratio=0.5, solver='saga')
- L1 — sélection de features naturelle (coefficients → 0). Utile avec beaucoup de features non pertinentes
- L2 — réduit mais ne supprime pas. Préférer si toutes les features sont potentiellement utiles
- Tuning de C — utiliser GridSearchCV ou cross_val_score
5Hypothèses et limites
Question discriminante
Quelles sont les hypothèses de la régression logistique ? Quand échouent-elles ?
- Linéarité des log-odds — relation linéaire entre les features et le log-odds. Vérifier avec des partial dependence plots
- Indépendance des observations — pas de structure temporelle ou spatiale non capturée
- Pas de multicolinéarité forte — deux features très corrélées rendent les coefficients instables
- Quand elle échoue — relations non linéaires (préférer XGBoost), très grande dimensionnalité, interactions complexes
- Calibration — les probabilités de la régression logistique sont bien calibrées contrairement à celles de Random Forest
6Extension multiclasse
Question discriminante
Comment la régression logistique gère-t-elle plusieurs classes ?
- One-vs-Rest (OvR) — un classifieur binaire par classe. Classe i vs toutes les autres. Simple mais peut avoir des régions non couvertes
- Multinomial (Softmax) — un seul modèle qui optimise la log-vraisemblance multinomiale. Plus cohérent, solver='lbfgs' ou 'sag'
- sklearn — multi_class='auto' choisit multinomial si solver compatible, sinon OvR
7Grille par niveau
| Niveau | Maitrise | Signal GO | NO-GO |
|---|
| Junior | Comprend la sigmoïde, train/predict/proba, métriques | Explique pourquoi on utilise sigmoïde, sait interpréter predict_proba | Pense que la régression logistique est toujours linéaire |
| Confirmé | Odds ratios, L1/L2, C parameter, hypothèses | Interprète les odds ratios, sait tuner C, connaît L1 vs L2 | Ne sait pas ce qu est un odds ratio |
| Senior | Calibration, diagnostics de multicolinéarité, GLMs | Vérifie la calibration, sait quand la régression logistique est meilleure qu XGBoost | Utilise toujours XGBoost sans justifier |