Логістична регресія та регуляризація

Лінійні класифікатори в Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Регуляризована логістична регресія

Лінійні класифікатори в Python

Регуляризована логістична регресія

Лінійні класифікатори в Python

Як регуляризація впливає на тренувальну точність?

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

  • більше регуляризації: нижча точність на тренуванні
Лінійні класифікатори в Python

Як регуляризація впливає на тестову точність?

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

  • більше регуляризації: нижча точність на тренуванні
  • більше регуляризації: (майже завжди) вища точність на тесті
Лінійні класифікатори в Python

L1 проти L2 регуляризації

  • Lasso = лінійна регресія з L1-регуляризацією
  • Ridge = лінійна регресія з L2-регуляризацією
  • Для інших моделей, як-от логістична регресія, кажемо просто L1, L2 тощо.
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())
Лінійні класифікатори в Python

L2 проти L1 регуляризації

Лінійні класифікатори в Python

Давайте потренуємось!

Лінійні класифікатори в Python

Preparing Video For Download...