Régression logistique et régularisation

Classificateurs linéaires en Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Régression logistique régularisée

Classificateurs linéaires en Python

Régression logistique régularisée

Classificateurs linéaires en Python

Effet de la régularisation sur l'exactitude 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 : exactitude d'entraînement plus faible
Classificateurs linéaires en Python

Effet de la régularisation sur l'exactitude 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 : exactitude d'entraînement plus faible
  • plus de régularisation : (presque toujours) exactitude de test plus élevée
Classificateurs linéaires en Python

Régularisation L1 vs L2

  • Lasso = régression linéaire avec régularisation L1
  • Crête (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())
Classificateurs linéaires en Python

Régularisation L2 vs L1

Classificateurs linéaires en Python

Passons à la pratique !

Classificateurs linéaires en Python

Preparing Video For Download...