ロジスティック回帰と正則化

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 vs. 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 vs. L1 正則化

Python で学ぶ線形分類器

練習しましょう!

Python で学ぶ線形分類器

Preparing Video For Download...