Regresja logistyczna i regularyzacja

Liniowe klasyfikatory w Pythonie

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Regularyzowana regresja logistyczna

Liniowe klasyfikatory w Pythonie

Regularyzowana regresja logistyczna

Liniowe klasyfikatory w Pythonie

Jak regularyzacja wpływa na dokładność treningową?

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

  • większa regularyzacja: niższa dokładność na zbiorze treningowym
Liniowe klasyfikatory w Pythonie

Jak regularyzacja wpływa na dokładność testową?

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

  • większa regularyzacja: niższa dokładność na zbiorze treningowym
  • większa regularyzacja: (prawie zawsze) wyższa dokładność na zbiorze testowym
Liniowe klasyfikatory w Pythonie

Regularyzacja L1 a L2

  • Lasso = regresja liniowa z regularyzacją L1
  • Ridge = regresja liniowa z regularyzacją L2
  • W przypadku innych modeli (np. regresji logistycznej) używamy nazw L1, L2 itp.
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())
Liniowe klasyfikatory w Pythonie

Regularyzacja L2 a L1

Liniowe klasyfikatory w Pythonie

Czas na ćwiczenia!

Liniowe klasyfikatory w Pythonie

Preparing Video For Download...