Régression logistique et régularisation

Classifieurs linéaires en Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Régression logistique régularisée

Classifieurs linéaires en Python

Régression logistique régularisée

Classifieurs linéaires en Python

Effet de la régularisation sur la précision d'entraînement

lr_weak_reg = LogisticRegression(C=100)
lr_strong_reg = LogisticRegression(C=0.01)

lr_weak_reg.fit(X_train, y_train) lr_strong_reg.fit(X_train, y_train)
lr_weak_reg.score(X_train, y_train) lr_strong_reg.score(X_train, y_train)
1.0
0.92

$\text{regularized loss = original loss + large coefficient penalty}$

  • plus de régularisation : précision d'entraînement plus faible
Classifieurs linéaires en Python

Effet de la régularisation sur la précision de test

lr_weak_reg.score(X_test, y_test)
0.86
lr_strong_reg.score(X_test, y_test)
0.88

$\text{regularized loss = original loss + large coefficient penalty}$

  • plus de régularisation : précision d'entraînement plus faible
  • plus de régularisation : (presque toujours) meilleure précision sur test
Classifieurs linéaires en Python

Régularisation L1 vs L2

  • Lasso = régression linéaire avec régularisation L1
  • Ridge = régression linéaire avec régularisation L2
  • Pour d'autres modèles comme la régression logistique, on dit simplement L1, L2, etc.
lr_L1 = LogisticRegression(solver='liblinear', penalty='l1')
lr_L2 = LogisticRegression() # penalty='l2' by default

lr_L1.fit(X_train, y_train)
lr_L2.fit(X_train, y_train)
plt.plot(lr_L1.coef_.flatten())
plt.plot(lr_L2.coef_.flatten())
Classifieurs linéaires en Python

Régularisation L2 vs L1

Classifieurs linéaires en Python

Passons à la pratique !

Classifieurs linéaires en Python

Preparing Video For Download...