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

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

Ридж-регрессия

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

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

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

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

Ридж-регрессия в R

Мы можем применить Ridge Regression к набору данных mtcars, используя язык программирования R. Пакет glmnet имеет функцию применения регрессии хребта. Сначала вам нужно будет установить пакет glmnet, если вы еще этого не сделали. Ниже я покажу вам этот процесс шаг за шагом:

install.packages("glmnet") 
library(glmnet)

# Independent variables
X <- as.matrix(mtcars[, -1]) # Get the independent variables by removing the first column

# Dependent variable
y <- mtcars[, 1] # First column (mpg) dependent variable

# Determine lambda values
lambda_seq <- 10^seq(10, -2, length=100)

# Building the Ridge Regression model
ridge_model <- glmnet(X, y, alpha=0, lambda=lambda_seq)

# Selecting a lambda value with cross validation
cv_fit <- cv.glmnet(X, y, alpha=0)
best_lambda <- cv_fit$lambda.min

# Create the final model with the selected lambda value:
ridge_model <- glmnet(X, y, alpha=0, lambda=best_lambda)

# Finding the best lambda value and corresponding coefficients
coef(ridge_model, s=best_lambda) 
11 x 1 sparse Matrix of class "dgCMatrix"
                      s1
(Intercept) 21.125363956
cyl         -0.371840170
disp        -0.005260088
hp          -0.011611491
drat         1.054511975
wt          -1.233657799
qsec         0.162231830
vs           0.771141047
am           1.623031037
gear         0.544153807
carb        -0.547436697

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

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

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

Вы можете заметить, что его формула очень похожа на коньковый. Однако есть одно единственное отличие: B_j² заменяется на IB_jI. С точки зрения статистики, лассо использует штраф L1 вместо штрафа L2.

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

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

Как и регрессию гребня, регрессию лассо можно применять с помощью пакета glmnet. Ниже вы можете увидеть, как применяется гребневая регрессия с использованием того же набора данных mtcars:

# Independent variables
X <- as.matrix(mtcars[, -1]) # Get the independent variables by removing the first column

# Dependent variable
y <- mtcars[, 1] # First column (mpg) dependent variable

# Determine lambda values 
lambda_seq <- 10^seq(10, -2, length=100)

# Building the Lasso Regression model
lasso_model <- glmnet(X, y, alpha=1, lambda=lambda_seq)

# Selecting a lambda value with cross validation
cv_fit <- cv.glmnet(X, y, alpha=1)
best_lambda <- cv_fit$lambda.min

# Building final model
final_model <- glmnet(X, y, alpha=1, lambda=best_lambda)

# Getting coefficients 
coef(final_model, s=best_lambda)
11 x 1 sparse Matrix of class "dgCMatrix"
                     s1
(Intercept) 36.44441107
cyl         -0.89269853
disp         .         
hp          -0.01282277
drat         .         
wt          -2.78337592
qsec         .         
vs           .         
am           0.01364372
gear         .         
carb         .       

Как видно из вывода коэффициентов, в отличие от ридфе, лассо выбрал часть переменных и построил модель.

Сравнение

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

1. Тип регуляризации:

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

2. Выбор коэффициента:

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

3. Ответ на множественную коллинеарность:

Лассо: Лассо выбирает среди независимых переменных с высокой степенью коллинеарности, обнуляя некоторые из них. коэффициенты нулевые.

Как всегда:

«На случай, если я тебя не увижу, добрый день, добрый вечер и спокойной ночи!»

Справочник и дополнительная литература

Джеймс, Гарет, Даниэла Виттен, Тревор Хасти и Роберт Тибширани. Введение в статистическое обучение. Том. 112. Нью-Йорк: Спрингер, 2013.