Итак, давайте начнем задавать вопрос

что такое регурализация и зачем она вообще нужна?

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

Есть несколько причин, почему регуляризация важна:

  1. Предотвращение переобучения: регуляризация предотвращает переоснащение моделей, контролируя их сложность и уменьшая их склонность к запоминанию шума в обучающих данных.
  2. Улучшение обобщения: за счет уменьшения переобучения модели модель может эффективно прогнозировать новые невидимые данные.
  3. Выбор функций: регуляризация может выступать в качестве инструмента выбора функций, поскольку она побуждает некоторые функции иметь небольшой коэффициент, эффективно удаляя их из процесса прогнозирования модели. Это может улучшить прогноз и уменьшить количество функций, необходимых для точных прогнозов.
  4. Обработка мультиколлинеарности: регуляризация может обрабатывать мультиколлинеарность, то есть наличие высокой корреляции между предикторами в наборе данных. Мультиколлинеарность может привести к нестабильным оценкам параметров и снижению производительности модели, но регуляризация может уменьшить влияние коррелированных предикторов и повысить стабильность оценок.

Что это за методы регуляризации?

На рынке существует множество методов регуляризации, которые могут улучшить производительность модели, но сегодня мы обсудим наиболее важные и широко используемые методы: Лассо и Ридж-регрессия.

Лассо-регрессия

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

Функция стоимости для регрессии Лассо определяется как

Где,

  • w - вектор коэффициентов
  • m - количество обучающих примеров
  • h(x_i) — прогнозируемое значение для i-го обучающего примера.
  • y_i — фактическое значение для i-го обучающего примера.
  • лямбда - параметр регуляризации
  • |w_j| является абсолютным значением j-го коэффициента

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

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

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

Регрессия хребта

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

где,

  • RSS(w) — остаточная сумма квадратов (т. е. разница между прогнозируемым и фактическим значениями целевой переменной
  • ||w||_2 — сумма квадратов коэффициентов

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

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

что такое лямбда? и почему это важно?

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

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

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

Какие методы расчета лямбда существуют?

Значение лямбда необходимо тщательно выбирать, чтобы сбалансировать компромисс между смещением и дисперсией в модели. Существует несколько методов, которые можно использовать для выбора оптимального значения лямбда для регрессии Лассо и Риджа. Вот несколько распространенных техник:

  1. Перекрестная проверка. Перекрестная проверка является широко используемым методом для выбора оптимального значения лямбда. В этом подходе данные случайным образом разбиваются на k-кратность, где k обычно устанавливается от 5 до 10. Модель обучается на K-1-кратности и оставшейся кратности проверки. Этот процесс повторяется до k раз, при этом каждая складка используется ровно один раз в качестве проверочного набора. Средняя ошибка проверки по всем k-кратностям используется в качестве оценок ошибки обобщения модели.
  2. Поиск по сетке: поиск по сетке — это простой метод выбора оптимального значения лямбда. В этом подходе указывается диапазон значений лямбда, а модель обучается и проверяется для каждого значения лямбда в этом диапазоне. Оптимальное значение лямбда — это то, которое дает наименьшую ошибку проверки.
  3. Аналитическое решение: в регрессии Риджа существует аналитическое решение для оптимального значения лямбда. Оптимальное значение лямбда определяется по формуле:

4. Адаптивное лассо. Адаптивное лассо — это вариант регрессии Лассо, который адаптирует штрафной термин к важности признаков. В этом подходе штрафной срок масштабируется обратным квадратным корнем из оцененных отклонений коэффициентов. Затем оптимальное значение лямбда выбирается с использованием одного из вышеперечисленных методов, таких как перекрестная проверка или поиск по сетке.

Это некоторые распространенные методы выбора оптимального значения лямбда в регрессии Лассо и Риджа. Выбор метода зависит от конкретной проблемы и размера данных.

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

# setting up different lambda values
lambdas = np.logspace(-5,5,1000)

# create emptty list to store the cross validation score
ridge_score = []
lasso_score = []

# perfome ridge and lasso regression on each lambda
for lambda_val in lambdas:
    ridge = Ridge(alpha=lambda_val)
    lasso = Lasso(alpha=lambda_val)

    # storing scores
    ridge_score.append(np.mean(cross_val_score(ridge , X, y, cv=10)))
    lasso_score.append(np.mean( cross_val_score (lasso , X, y, cv=10)))


# Plot the cross-validation scores for Ridge and Lasso regression
plt.plot(lambdas, ridge_score, label='Ridge')
plt.plot(lambdas, lasso_score, label='Lasso')
plt.xlabel('Lambda')
plt.ylabel('Cross-validation score')
plt.legend()
plt.show()
# Find the optimal lambda value for Ridge and Lasso regression
optimal_ridge_lambda = lambdas[np.argmax(ridge_score)]
optimal_lasso_lambda = lambdas[np.argmax(lasso_score)]
print('Optimal lambda value for Ridge regression:', optimal_ridge_lambda) # 44.3247
print('Optimal lambda value for Lasso regression:', optimal_lasso_lambda) # 0.3195

Получите ли вы одинаковые оптимальные значения лямбда, если попытаетесь использовать разные методы? Если нет, то почему это происходит?

Нередки различия между лучшим значением гиперпараметра, полученным в результате поиска по сетке, и лучшим значением гиперпараметра, полученным в результате перекрестной проверки. Вот несколько возможных причин разницы:

  1. Случайность: на производительность модели может повлиять случайность данных, инициализация модели и случайные разбиения во время перекрестной проверки. Наилучшее значение гиперпараметра, полученное в результате поиска по сетке, может не совпадать со значением, полученным в результате перекрестной проверки, из-за вовлеченной случайности.
  2. Пространство поиска: диапазон значений гиперпараметров, проверенных в поиске по сетке, мог не включать оптимальное значение или диапазон мог быть слишком широким, что приводило к переоснащению. С другой стороны, диапазон значений гиперпараметров, проверенных во время перекрестной проверки, мог включать оптимальное значение, что приводило к другому наилучшему значению гиперпараметра.
  3. Метрика оценки: поиск по сетке и перекрестная проверка могут использовать разные метрики оценки для выбора наилучшего значения гиперпараметра. В случае регрессии Риджа метрикой оценки обычно является среднеквадратическая ошибка (MSE), но также могут использоваться другие метрики, такие как R-квадрат. Если используются разные метрики оценки, это может привести к другому лучшему значению гиперпараметра.

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

Может ли Lambda иметь отрицательное значение?

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

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

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

Когда лучше использовать Lasso, чем Ridge, и наоборот? Какие аспекты их отличают?

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

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

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

Таким образом, регрессия Лассо полезна для выбора признаков и уменьшения размерности проблемы, тогда как регрессия Риджа полезна для уменьшения переобучения и регуляризации модели.

Выбор между регрессией Лассо и Риджа часто является вопросом проб и ошибок или знаний в предметной области, в зависимости от конкретной проблемы и характеристик набора данных. Чтобы сбалансировать сильные стороны обоих подходов, в некоторых случаях можно использовать комбинацию обоих методов (Elastic Net), если набор данных имеет сильно коррелированные функции.

А.Н. : Этот и предыдущие посты - это вообще мой мыслительный процесс при решении данной проблемы. Если вы видите какие-то неправильные вещи, или вы можете добавить что-то к этому сообщению, или вы хотите задать вопросы, вы можете сделать это в комментарии или связаться со мной здесь.