더북(TheBook)

사이킷런의 LogisticRegression 클래스의 매개변수 C는 다음 절에서 볼 서포트 벡터 머신 형식에서 따왔습니다. 매개변수 C는 규제 하이퍼파라미터 λ의 역수입니다. 결과적으로 역 규제 파라미터 C의 값을 감소시키면 규제 강도가 증가합니다. 두 개의 가중치에 대해 L2 규제 효과를 그래프로 나타내 보겠습니다.15

>>> weights, params = [], []
>>> for c in np.arange(-5, 5):
...     lr = LogisticRegression(C=10.**c, random_state=1, multi_class='ovr')
...     lr.fit(X_train_std, y_train)
...     weights.append(lr.coef_[1])
...     params.append(10.**c)
>>> weights = np.array(weights)
>>> plt.plot(params, weights[:, 0],
...          label='petal length')
>>> plt.plot(params, weights[:, 1], linestyle='--',
...          label='petal width')
>>> plt.ylabel('weight coefficient')
>>> plt.xlabel('C')
>>> plt.legend(loc='upper left')
>>> plt.xscale('log')
>>> plt.show()

이 코드를 실행하면 역 규제 매개변수 C의 값을 바꾸면서 열 개의 로지스틱 회귀 모델을 훈련합니다. 시연을 위해 모든 분류기에서 클래스 1의 가중치 값만 사용합니다(여기서는 데이터셋에 있는 두 번째 클래스인 Iris-versicolor). 다중 분류에는 OvR 기법을 사용합니다.16

 

 


15 역주 LogisticRegressionpenalty 매개변수의 기본값이 L 2 규제를 의미하는 ‘l2’이며 ‘l1’으로 바꾸어 L1 규제를 사용할 수도 있습니다. 매개변수 C의 기본값은 1.0입니다.

16 역주 multi_class='multinomial'로 지정하더라도 C 값에 따른 가중치 변화를 볼 수 있지만 다른 클래스의 영향 때문에 그림 3-8보다 복잡하고 불규칙한 그래프가 그려집니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.