逻辑回归与正则化

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{正则化损失 = 原始损失 + 大系数惩罚}$

  • 正则化更强:训练准确率更低
Python 中的线性分类器

正则化如何影响测试准确率?

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

$\text{正则化损失 = 原始损失 + 大系数惩罚}$

  • 正则化更强:训练准确率更低
  • 正则化更强:(几乎总是)测试准确率更高
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 中的线性分类器

Passons à la pratique !

Python 中的线性分类器

Preparing Video For Download...