로지스틱 회귀와 규제화

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...