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

В простой линейной регрессии с двумя переменными y и x связь между ними представлена ​​уравнением:

y = mx + b

где m — наклон, а b — точка пересечения с осью y. В гребневой регрессии мы вводим член регуляризации в целевую функцию обычного метода наименьших квадратов (OLS), который помогает контролировать величину коэффициентов.

Регуляризованная целевая функция для гребневой регрессии:

J(m, b) = Σ(yi — mx — b)² + λm²

где Σ обозначает сумму по всем точкам данных, λ — параметр регуляризации, а m² — квадрат величины члена наклона.

Чтобы вывести уравнение гребневой регрессии, мы начнем с дифференцирования целевой функции по b:

∂J(m, b) / ∂b = -2Σ(yi — mx — b)

Приравняв эту производную к нулю и найдя b, мы получим:

0 = -2Σ(yi — mx — b) 0 = Σyi — mΣxi — nb

Разделив на n (количество точек данных) и переставив уравнение, мы находим:

b = y_bar — mx_bar

где y_bar — среднее значение зависимой переменной y, а x_bar — среднее значение независимой переменной x.

Затем мы подставляем полученное значение b в целевую функцию:

J(m) = Σ(yi — mx — (y_bar — mx_bar))² + λm²

Разлагая квадрат члена, мы имеем:

J(m) = Σ(yi — mx — y_bar + mx_bar)² + λm² J(m) = Σ(yi — y_bar — mx + mx_bar)² + λm² J(m) = Σ((yi — y_bar)² — 2(yi — y_bar)(mx — mx_bar) + (mx — mx_bar)²) + λm²

Упрощая, мы можем переписать уравнение как:

J(m) = Σ(yi — y_bar)² — 2mΣ(xi — x_bar)(yi — y_bar) + m²Σ(xi — x_bar)² + λm²

Чтобы найти оптимальное значение m, продифференцируем J(m) по m:

∂J(m) / ∂m = -2Σ(xi — x_bar)(yi — y_bar) + 2mΣ(xi — x_bar)² + 2λm

Приравняв эту производную к нулю и решив относительно m, мы получим:

0 = -2Σ(xi — x_bar)(yi — y_bar) + 2mΣ(xi — x_bar)² + 2λm 2mΣ(xi — x_bar)² + 2λm = 2Σ(xi — x_bar)(yi — y_bar) m(Σ(xi — x_bar)² + λ) = Σ(xi — x_bar)(yi — y_bar)

Наконец, решая m, мы имеем:

m = (Σ(xi — x_bar)(yi — y_bar)) / (Σ(xi — x_bar)² + λ)

Это окончательное уравнение для коэффициента наклона в гребневой регрессии. Он учитывает параметр регуляризации λ, что помогает контролировать величину коэффициента.

Если мы увеличим значение параметра регуляризации λ в гребневой регрессии, это будет иметь два основных эффекта:

  1. Воздействие на уклон (м): по мере увеличения λ влияние на коэффициент уклона становится более значительным. Числитель уравнения Σ(xi — x_bar)(yi — y_bar) остается прежним, но знаменатель Σ(xi — x_bar)² + λ увеличивается. В результате величина уклона (м) уменьшается. Увеличение λ штрафует большие значения m, что приводит к уменьшению оценок коэффициентов. Это помогает уменьшить тенденцию к переоснащению, предотвращая слишком большие значения коэффициентов.
  2. Влияние на переобучение. Переобучение происходит, когда модель становится слишком сложной и слишком точно соответствует обучающим данным, что приводит к плохому обобщению новых, невидимых данных. Увеличение λ в гребневой регрессии может помочь уменьшить переоснащение. Штрафуя величину коэффициентов, гребневая регрессия сжимает их до нуля. Этот эффект сжатия снижает сложность модели, делая ее менее чувствительной к изменениям обучающих данных. Следовательно, гребневая регрессия может помочь улучшить способность модели хорошо обобщать новые данные, тем самым уменьшая переоснащение.

Таким образом, увеличение параметра регуляризации λ в регрессии гребня уменьшает величину члена наклона (m) и помогает уменьшить переобучение за счет уменьшения коэффициентов до нуля.

приступили к реализации класса MeraRidge для гребневой регрессии

class MeraRidge:
    def __init__(self, alpha=0.1):
        self.alpha = alpha
        self.m = None
        self.b = None

    def fit(self, X_train, y_train):
        num = 0
        den = 0

        for i in range(X_train.shape[0]):
            num += (y_train[i] - y_train.mean()) * (X_train[i] - X_train.mean())
            den += (X_train[i] - X_train.mean()) ** 2

        self.m = num / (den + self.alpha)
        self.b = y_train.mean() - (self.m * X_train.mean())

        print("Coefficients (m, b):", self.m, self.b)

    def predict(self, X_test):
        if self.m is None or self.b is None:
            raise Exception("Model has not been trained. Please call fit() first.")

        y_pred = self.m * X_test + self.b
        return y_pred

100-days-of-machine-learning/ridge-regression-key-understandings.ipynb на main · campusx-official/100-days-of-machine-learning · GitHub

«Влияние увеличения лямбда на коэффициенты: изучение регуляризации от 0 до бесконечности»

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

По мере увеличения лямбда:

  • Влияние члена регуляризации становится сильнее.
  • Коэффициенты штрафуются сильнее за то, что они большие.
  • Величина коэффициентов стремится к нулю.

Когда лямбда близка к бесконечности:

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

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

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

более высокие значения коэффициентов, таких как x1, имеют w1=100,x2 hs w2 50,x3 имеют w3 10,x1, на них влияет быстрое уменьшение, они быстрее уменьшаются до нуля, объясните это простым и быстрым способом.

В гребневой регрессии, когда у нас есть более высокие значения коэффициентов (весов) для определенных функций, таких как w1 = 100 для x1, w2 = 50 для x2 и w3 = 10 для x3, эти коэффициенты подвергаются большему воздействию и имеют тенденцию быстрее уменьшаться до нуля, когда мы увеличиваем значение лямбда.

Представьте, что у нас есть набор данных с функциями x1, x2 и x3. Коэффициенты w1, w2 и w3 представляют веса, присвоенные каждому признаку. Более высокий вес означает, что соответствующий признак оказывает более сильное влияние на прогнозируемый результат.

Когда мы увеличиваем лямбда в гребневой регрессии, мы увеличиваем силу регуляризации, которая наказывает большие коэффициенты. В этом случае высокие веса w1 = 100 и w2 = 50 делают x1 и x2 более влиятельными при определении результата по сравнению с x3 при w3 = 10.

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

Поскольку w1 = 100 намного больше по сравнению с w2 = 50 и w3 = 10, он будет более сильно наказываться членом регуляризации. Следовательно, коэффициент w1 будет уменьшаться быстрее по сравнению с w2 и w3. Это быстрое уменьшение направлено на то, чтобы уменьшить влияние x1 в модели и предотвратить его чрезмерное преобладание в прогнозах.

Точно так же w2 = 50 будет уменьшаться, но медленнее, чем w1, а w3 = 10 будет уменьшаться еще медленнее. Коэффициенты w2 и w3 будут уменьшаться, но их начальные меньшие величины делают их менее подверженными влиянию члена регуляризации.

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

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

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

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

Loss = OLS Loss + λ * (сумма абсолютных значений коэффициентов)

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

  1. Коэффициенты сжатия: как и регрессия гребня, регрессия лассо сжимает коэффициенты до нуля. Однако, в отличие от гребенчатой ​​регрессии, лассо-регрессия может уменьшать некоторые коэффициенты точно до нуля.
  2. Разреженность и выбор признаков: когда значение лямбда достаточно велико, регрессия лассо может установить коэффициенты менее важных признаков равными нулю. Это приводит к разреженным моделям, в которых для прогнозирования выбирается только подмножество признаков.
  3. Автоматический выбор функций: регрессия Лассо обеспечивает встроенный механизм автоматического выбора функций. Изучив полученные ненулевые коэффициенты, вы можете определить функции, которые оказывают наиболее значительное влияние на целевую переменную.
  4. Обработка мультиколлинеарности: регрессия Лассо может обрабатывать мультиколлинеарность, которая возникает при высокой корреляции между переменными-предикторами. При наличии мультиколлинеарности лассо имеет тенденцию выбирать один признак из группы сильно коррелированных признаков и обнулять остальные.
  5. Настройка лямбда: выбор параметра лямбда имеет решающее значение в регрессии лассо. Маленькая лямбда приводит к результатам, аналогичным обычной линейной регрессии, в то время как большая лямбда способствует разреженности и более агрессивному выбору признаков. Для определения оптимального значения лямбда можно использовать методы перекрестной проверки.

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

Эластичная сетка

Эластичная сеть — это метод линейной регрессии, который сочетает в себе штрафы за регуляризацию L1 и L2. Он предназначен для устранения ограничений регрессии гребня и регрессии лассо, особенно при наличии мультиколлинеарности. Давайте углубимся в детали Elastic Net и в то, как это помогает в случаях мультиколлинеарности.

Elastic Net объединяет условия регуляризации L1 (лассо) и L2 (гребень) в функции потерь. Функция эластичных чистых потерь может быть определена следующим образом:

Потери = МНК Потери + λ1 * (сумма абсолютных значений коэффициентов) + λ2 * (сумма квадратов коэффициентов)

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

Вот как Elastic Net помогает в случаях мультиколлинеарности:

  1. Работа с мультиколлинеарностью: Мультиколлинеарность возникает, когда существует высокая корреляция между переменными-предикторами. В таких случаях гребенчатая регрессия сама по себе может привести к смещенным или нестабильным оценкам коэффициентов. Лассо-регрессия, с другой стороны, может произвольно выбирать один признак вместо другого. Elastic Net сочетает в себе преимущества обоих методов для более эффективного решения проблемы мультиколлинеарности.
  2. Выбор релевантных функций: Elastic Net может выбирать релевантные функции и отбрасывать ненужные или избыточные. Штраф L1 в Elastic Net поощряет разреженность, в результате чего некоторые коэффициенты устанавливаются точно равными нулю. Это помогает идентифицировать и исключать менее важные функции, уменьшая сложность модели и улучшая интерпретируемость.
  3. Баланс штрафов L1 и L2: параметры λ1 и λ2 контролируют силу штрафов L1 и L2 соответственно. Правильно настроив эти параметры, Elastic Net может балансировать между выбором признаков (разреженностью) и сокращением коэффициентов. Эта гибкость позволяет точно контролировать процесс регуляризации.
  4. Компромисс между смещением и дисперсией: Elastic Net позволяет найти компромисс между смещением и дисперсией. Увеличение значения λ1 способствует разреженности, что приводит к меньшему подмножеству признаков с большим смещением, но потенциально меньшей дисперсией. Увеличение значения λ2 способствует уменьшению коэффициентов до нуля, уменьшая дисперсию, но, возможно, внося больше систематической ошибки. Выбор λ1 и λ2 зависит от конкретного набора данных и желаемого компромисса.
  5. Автоматический выбор признаков. Подобно регрессии лассо, Elastic Net предоставляет встроенный механизм автоматического выбора признаков. Модель может идентифицировать наиболее важные функции, исследуя ненулевые коэффициенты. Это помогает упростить модель, улучшить интерпретируемость и снизить риск переобучения.

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

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