더북(TheBook)

특성 선택의 도구로 활용되는 L1 규제는 결과적으로 데이터셋에 관련이 적은 특성이 있더라도 견고한 모델을 만들어 줍니다. 엄밀히 말하면 앞 예제에서 가중치 벡터는 0이 아닌 원소가 더 많기 때문에 꼭 희소하지 않습니다. 규제 강도를 높여 희소성을 더 강하게 할 수 있습니다(0인 원소가 더 많아집니다). 다시 말하면 C 매개변수 값을 낮춥니다.

규제에 관한 이 장 마지막 예제로 규제 강도를 달리하여 특성의 가중치 변화를 그래프로 그려 보겠습니다.

>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> ax = plt.subplot(111)
>>> colors = ['blue', 'green', 'red', 'cyan',
...           'magenta', 'yellow', 'black',
...           'pink', 'lightgreen', 'lightblue',
...           'gray', 'indigo', 'orange']
>>> weights, params = [], []
>>> for c in np.arange(-4., 6.):
...     lr = LogisticRegression(penalty='l1', C=10.**c,
...                             solver='liblinear',
...                             multi_class='ovr', random_state=0)
...     lr.fit(X_train_std, y_train)
...     weights.append(lr.coef_[1])
...     params.append(10**c)
>>> weights = np.array(weights)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.