Logistická regrese a regularizace

Linear Classifiers in Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Regularizovaná logistická regrese

Linear Classifiers in Python

Regularizovaná logistická regrese

Linear Classifiers in Python

Jak regularizace ovlivňuje přesnost na trénovacích datech?

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}$

  • více regularizace: nižší přesnost na trénovacích datech
Linear Classifiers in Python

Jak regularizace ovlivňuje přesnost na testovacích datech?

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}$

  • více regularizace: nižší přesnost na trénovacích datech
  • více regularizace: (téměř vždy) vyšší přesnost na testovacích datech
Linear Classifiers in Python

L1 vs. L2 regularizace

  • Lasso = lineární regrese s L1 regularizací
  • Ridge = lineární regrese s L2 regularizací
  • Pro ostatní modely (např. logistickou regresi) se používá označení L1, L2 atd.
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())
Linear Classifiers in Python

L2 vs. L1 regularizace

Linear Classifiers in Python

Pojďme si procvičit!

Linear Classifiers in Python

Preparing Video For Download...