Введение
Модель L1-логистической регрессии - это метод бинарной классификации, который использует L1-регуляризацию для индукции разреженности в модели. Путь регуляризации этой модели показывает коэффициенты модели при увеличении силы регуляризации. В этом лабораторном занятии мы будем использовать набор данных Iris для обучения моделей L1-штрафованной логистической регрессии и построения их путей регуляризации.
Советы по использованию ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Загрузка набора данных Iris
Мы будем загружать набор данных Iris из библиотеки scikit-learn. В наборе данных четыре признака: длина наружной доли околоцветника, ширина наружной доли околоцветника, длина лепестка и ширина лепестка. Мы будем использовать только первые два признака для бинарной классификации.
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
X = X[y!= 2] ## Используем только первые два признака для бинарной классификации
y = y[y!= 2]
X /= X.max() ## Нормализуем X для ускорения сходимости
Вычисление пути регуляризации
Мы будем вычислять путь регуляризации, обучая модели L1-штрафованной логистической регрессии с разными значениями силы регуляризации. Мы будем использовать решатель liblinear, который может эффективно оптимизировать функцию потерь логистической регрессии с L1-штрафом. Мы установим низкое значение для допустимой погрешности, чтобы убедиться, что модель сойдена, прежде чем собирать коэффициенты. Мы также будем использовать warm_start=True, что означает, что коэффициенты моделей будут переиспользованы для инициализации следующего подбора модели, чтобы ускорить вычисление полного пути.
import numpy as np
from sklearn import linear_model
from sklearn.svm import l1_min_c
cs = l1_min_c(X, y, loss="log") * np.logspace(0, 10, 16)
clf = linear_model.LogisticRegression(
penalty="l1",
solver="liblinear",
tol=1e-6,
max_iter=int(1e6),
warm_start=True,
intercept_scaling=10000.0,
)
coefs_ = []
for c in cs:
clf.set_params(C=c)
clf.fit(X, y)
coefs_.append(clf.coef_.ravel().copy())
coefs_ = np.array(coefs_)
Построение графика пути регуляризации
Мы построим график пути регуляризации, используя коэффициенты обученных моделей. Коэффициенты будут построены в зависимости от логарифма силы регуляризации. Слева от рисунка (для сильных регуляризаторов) все коэффициенты равны точно 0. При постепенном ослаблении регуляризации коэффициенты могут последовательно получать ненулевые значения.
import matplotlib.pyplot as plt
plt.plot(np.log10(cs), coefs_, marker="o")
ymin, ymax = plt.ylim()
plt.xlabel("log(C)")
plt.ylabel("Coefficients")
plt.title("Logistic Regression Path")
plt.axis("tight")
plt.show()
Резюме
В этом лабораторном занятии мы узнали, как обучать модели L1-штрафованной логистической регрессии на наборе данных Iris и строить их пути регуляризации. Путь регуляризации показывает, как меняются коэффициенты модели при различных значениях силы регуляризации. Этот метод полезен при выборе признаков, так как позволяет определить, какие признаки оказывают наибольшее влияние на модель.