Логистическая регрессия – это широко используемый алгоритм классификации, использующий линейную модель для прогнозирования вероятности бинарного результата. Это простой и эффективный способ моделирования двоичных данных, но иногда он может страдать от переобучения и плохого обобщения новых данных. Регуляризация — это метод, который может помочь смягчить эти проблемы и повысить производительность моделей логистической регрессии.

Переобучение в логистической регрессии

Переоснащение происходит, когда модель слишком сложна и слишком точно соответствует обучающим данным, что приводит к плохому обобщению новых данных. Это может быть проблемой для моделей логистической регрессии, поскольку они могут стать чрезмерно сложными, если имеется много признаков или связь между признаками и целью нелинейна. Переобучение может привести к снижению производительности на тестовом наборе и низкой предсказательной способности новых данных.

Причины

модель со слишком большим количеством параметров (степеней свободы) относительно размера обучающих данных

  • Например, предположим, что у вас есть обучающий набор со 100 примерами и 10 функциями. Если вы подбираете модель логистической регрессии со 100 параметрами (по одному для каждого примера плюс один для каждой функции), вы можете переобучить данные обучения. Это связано с тем, что в модели больше параметров, чем примеров, что может привести к тому, что модель будет слишком точно соответствовать обучающим данным и не будет обобщаться на новые данные.

Симптомы

высокая точность обучения, но низкая точность теста (или обобщения)

  • Если у вас есть модель логистической регрессии с переобучением, вы можете увидеть высокую точность на обучающем наборе, но низкую точность на тестовом наборе или на новых, невидимых данных. Это связано с тем, что модель изучила шаблоны в обучающих данных, которые не обобщаются на новые данные, что приводит к низкой производительности на тестовом наборе.

Что такое регуляризация в логистической регрессии

Регуляризация — это метод, используемый для предотвращения переобучения в моделях машинного обучения. Это достигается путем добавления штрафного члена к целевой функции (также называемой функцией потерь или функцией ошибок), которую модель пытается минимизировать.

Целевая функция измеряет ошибку или разницу между прогнозируемым выходом модели и истинным выходом. В логистической регрессии целевой функцией обычно является потеря перекрестной энтропии, которая измеряет разницу между прогнозируемой вероятностью положительного класса и истинной меткой (1 или 0).

Добавляя штрафной член к целевой функции, регуляризация помогает уменьшить сложность модели и предотвратить ее слишком точное соответствие обучающим данным. Штрафной член — это гиперпараметр, контролирующий силу регуляризации. Более высокое значение штрафного члена приводит к более сильной регуляризации и более простой модели, в то время как более низкое значение делает модель более сложной.

Типы регуляризации

Регуляризация L1 (лассо)

  • Добавляет штрафной член к целевой функции, равный абсолютному значению коэффициентов.
  • Это приводит к разреженной модели, в которой многие коэффициенты точно равны нулю.
  • Регуляризация L1 полезна для выбора функций, поскольку она может автоматически идентифицировать и удалять ненужные или избыточные функции из модели.

Регуляризация L2 (коньковая)

  • Добавляет штрафной член к целевой функции, равный квадрату коэффициентов.
  • Это приводит к модели, в которой все коэффициенты близки к нулю, но не обязательно равны нулю.
  • Регуляризация L2 менее подвержена переоснащению, чем регуляризация L1, и часто используется по умолчанию.

Регуляризация эластичной сети

  • Сочетает регуляризацию L1 и L2, добавляя штрафной член к целевой функции, которая представляет собой комбинацию абсолютного значения и квадрата коэффициентов.
  • Это приводит к модели, в которой некоторые коэффициенты равны нулю, а некоторые близки к нулю.
  • Эластичная сеть может быть полезна, когда в данных есть коррелированные функции, и Лассо склонен выбирать только одну из них.

Преимущества

Снижение сложности модели за счет уменьшения коэффициентов

  • Добавляя штрафной член к целевой функции, регуляризация заставляет коэффициенты (веса) модели быть небольшими. Это снижает сложность модели и делает ее менее подверженной переоснащению.
  • Например, если у вас есть модель с большим количеством признаков и большим количеством параметров (коэффициентов), регуляризация может помочь уменьшить количество ненулевых коэффициентов и упростить модель.

Улучшение обобщения за счет уменьшения дисперсии модели

  • Регуляризация также может помочь уменьшить дисперсию модели, то есть количество ошибок или шума в прогнозах модели.
  • Модель с высокой дисперсией чувствительна к небольшим изменениям в обучающих данных и с большей вероятностью переобучится. Уменьшая дисперсию модели, регуляризация может улучшить обобщение модели на новые, невидимые данные.

Как выбрать силу регуляризации (гиперпараметр)

Используйте перекрестную проверку, чтобы выбрать гиперпараметр, обеспечивающий наилучшую производительность в наборе проверки

  • Перекрестная проверка — это метод оценки производительности модели на невидимых данных. Он включает в себя разделение набора данных на обучающий набор и проверочный набор, обучение модели на обучающем наборе и оценку модели на проверочном наборе.
  • Вы можете использовать перекрестную проверку, чтобы попробовать разные значения гиперпараметра регуляризации и выбрать то, которое обеспечивает наилучшую производительность в наборе проверки.

Попробуйте использовать диапазон значений (например, от 10^-6 до 10⁶) и используйте логарифмическую шкалу

  • Гиперпараметр регуляризации обычно имеет широкий диапазон возможных значений, от очень малых (близких к нулю) до очень больших.
  • Для эффективного поиска в этом диапазоне можно использовать логарифмическую шкалу. Например, вы можете попробовать значения от 10^-6 до 10⁶ с логарифмическим интервалом между ними (например, 10^-5, 10^-4, 10^-3 и т. д.).

Используйте поиск по сетке, чтобы попробовать диапазон значений для нескольких гиперпараметров одновременно

  • Если у вас есть несколько гиперпараметров (например, сила регуляризации и тип регуляризации), вы можете использовать поиск по сетке, чтобы попробовать все возможные комбинации значений гиперпараметров.
  • Например, вы можете определить сетку значений для силы регуляризации (например, 10^-6, 10^-5, 10^-4 и т. д.) и еще одну сетку для типа регуляризации (L1, L2, Elastic Net). . Затем поиск по сетке будет обучать и оценивать модель для каждой комбинации значений гиперпараметров и возвращать наилучшую комбинацию.

Как реализовать логистическую регрессию с регуляризацией в Python

Используйте класс LogisticRegression с гиперпараметрами "штраф" и "C"

  • Класс LogisticRegression в scikit-learn обеспечивает реализацию логистической регрессии с регуляризацией L1, L2 и Elastic Net.
  • Чтобы использовать регуляризацию, вам нужно установить гиперпараметр «штраф» на «l1», «l2» или «elasticnet», а гиперпараметр «C» — на силу регуляризации.

Установите для параметра "C" меньшее значение для более сильной регуляризации (например, C=0,01)

  • Гиперпараметр «C» контролирует силу регуляризации.
  • Меньшее значение для «C» (например, C = 0,01) приводит к более сильной регуляризации и более простой модели, в то время как большее значение (например, C = 1,0) приводит к более слабой регуляризации и более сложной модели.

Вот пример того, как реализовать логистическую регрессию с регуляризацией в scikit-learn с использованием класса LogisticRegression:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# Load the data
X = ...
y = ...

# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Set the regularization type (L1, L2, Elastic Net)
penalty = 'l1'

# Set the regularization strength (C)
C = 0.01

# Create a logistic regression model
model = LogisticRegression(penalty=penalty, C=C)

# Train the model on the training set
model.fit(X_train, y_train)

# Evaluate the model on the test set
accuracy = model.score(X_test, y_test)

print(f'Test accuracy: {accuracy:.2f}')

Краткое изложение логистической регрессии и регуляризации

  • Логистическая регрессия — это алгоритм обучения с учителем для классификации, который предсказывает бинарный результат (например, да/нет, годен/не годен) на основе одной или нескольких независимых переменных. Он использует линейную комбинацию признаков (предикторов) с коэффициентами (весами) для прогнозирования.
  • Переобучение в логистической регрессии происходит, когда модель имеет слишком много параметров (степеней свободы) по отношению к размеру обучающих данных, что приводит к высокой точности обучения, но низкой точности теста (или обобщения).
  • Регуляризация — это метод, используемый для предотвращения переобучения путем добавления штрафного члена к целевой функции (функции потерь), которую модель пытается минимизировать. Этот штрафной член уменьшает сложность модели и улучшает ее обобщение за счет уменьшения дисперсии модели.
  • Существует несколько типов регуляризации, которые можно использовать в логистической регрессии, включая L1 (лассо), L2 (гребень) и эластичную сеть. Эти типы различаются формой штрафного члена и типами коэффициентов, которые они упорядочивают.
  • Чтобы выбрать силу регуляризации (гиперпараметр), вы можете использовать перекрестную проверку, чтобы выбрать гиперпараметр, который дает наилучшую производительность в наборе проверки, попробовать диапазон значений (например, от 10^-6 до 10⁶) и использовать логарифмическую шкалу или используйте поиск по сетке, чтобы попробовать диапазон значений для нескольких гиперпараметров одновременно.