Ридж-регрессия, лассо-регрессия и регрессия ElasticNet алгоритмов машинного обучения

машинное обучение алгоритм
Ридж-регрессия, лассо-регрессия и регрессия ElasticNet алгоритмов машинного обучения

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

В линейной регрессии, если параметр\thetaСлишком большие и слишком много функций легко вызовут переоснащение, как показано ниже:

Регуляризация

Возникновение гребневой регрессии и регрессии Лассо связано с решением переобучения линейной регрессии и ее решением с помощью метода нормального уравнения.\thetaпоявилось в процессе(X^TX)Для двух типов необратимых проблем обе регрессии достигают своих целей, вводя член регуляризации в функцию потерь.

В повседневных задачах машинного обучения, если в наборе данных больше признаков, чем точек выборки,(X^TX)^{-1}возникает ошибка. Гребневая регрессия сначала использовалась для работы с большим количеством признаков, чем с выборками, а теперь также используется для добавления смещения к оценкам, что приводит к более точным оценкам. Здесь, вводя\lambdaограничил все\theta^2Сумма, вводя штрафной член, может уменьшить неважные параметры, метод, также известный как сокращение в статистике. Подобно гребневой регрессии, другой сокращенный LASSO также добавляет регулярный член для ограничения коэффициентов регрессии.

Во избежание переобучения (\thetaслишком велик), в целевой функцииJ(\theta)Штрафной коэффициент сложности, обычный термин, добавляется для предотвращения переобучения. Обычный термин может использовать норму L1 (лассо), норму L2 (конек) или комбинировать норму L1, норму L2 (упругий Сеть).

Лассо: использование регуляризации L1-нормы

 \[J(\theta)=\frac{1}{2}\sum_{i}^{m}(y^{(i)}-\theta ^Tx^{(i)})^2+\lambda \sum_{j}^{n}|\theta_j|\]

Ridge: используйте регуляризацию L2-нормы

 \[J(\theta)=\frac{1}{2}\sum_{i}^{m}(y^{(i)}-\theta ^Tx^{(i)})^2+\lambda \sum_{j}^{n}\theta_j^2\]

ElasticNet: сочетание нормы l1 и нормы l2 для регуляризации

 \[J(\theta)=\frac{1}{2}\sum_{i}^{m}(y^{(i)}-\theta ^Tx^{(i)})^2+\lambda (\rho\sum_{j}^{n}|\theta_j|+(1-\rho)\sum_{j}^{n}\theta_j^2)\]

Простое понимание регуляризации:

  1. Цель регуляризации: предотвратить переоснащение
  2. Суть регуляризации: ограничение (ограничение) оптимизируемых параметров

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

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

На приведенном выше рисунке левая сторона — регрессия Лассо, а правая — регрессия Риджа. Точка касания красного эллипса и синей области является оптимальным решением целевой функции.Мы видим, что если это круг, его легко разрезать до любой точки на окружности, но трудно разрезать до координатной оси, поэтому разреженности нет, но если это ромб или многоугольник, его легко разрезать по осям, поэтому легко получить разреженные результаты. Это также объясняет, почему нормальная форма L1 является разреженной. Это объясняет, почему лассо может выполнять выбор признаков. Хотя гребневая регрессия не может выполнять скрининг признаков, она может\thetaМодуль ограничен, так что его значение будет относительно небольшим, что значительно уменьшает проблему переобучения.

здесь\beta _1,\beta _2- это параметры модели, целевые параметры, которые необходимо оптимизировать, а синяя часть - это фактически пространство решений. Как упоминалось выше, в это время пространство решений "сжимается", и вы можете искать пространство решений только в этом сужение пространства, целевая функция – наименьшая\beta _1,\beta _2. Еще раз посмотрите на красный кружок, и еще раз напомните всем, что эта ось координат не имеет никакого отношения к признаку (данным), это полностью система координат параметров, на каждом кружке можно взять бесконечное количество\beta _1,\beta _2,Эти\beta _1,\beta _2Общим признаком является то, что вычисляемые ими значения целевой функции равны. Центр красного круга является фактическим оптимальным параметром, но, поскольку мы ограничили пространство решений, оптимальное решение может быть сгенерировано только в «уменьшенном» пространстве решений.

Возьмите две переменные в качестве примера, чтобы объяснить геометрический смысл гребневой регрессии:

1. Когда нет ограничений. Параметры модели\beta _1,\beta _2был стандартизирован. Остаточная сумма квадратов RSS может быть выражена как\beta _1,\beta _2Квадратичная функция от , которая математически может быть представлена ​​параболоидом.

2. Когда вернется Ридж. Ограничения\beta _1^2 + \beta _2^2 \leq t, соответствующий проекции\beta _1,\beta _2Круг на плоскости, цилиндр на изображении ниже.

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

Ридж-регрессия, лассо-регрессия и регрессия ElasticNet с помощью Scikit-Learn

Ридж Возвращение

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

 \[L(\bar{w})=\left \| X\bar{w} -\bar{y}\right \|_2^2 + \alpha \left \| \bar{w} \right \|_2^2\]

В этом случае X представляет собой матрицу со всеми образцами в качестве векторов-столбцов, а w является вектором весов. коэффициент\alphaУказывает на сильную и слабую регуляризацию регуляризации.

from sklearn.linear_model import Ridge
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
 
boston = load_boston()
X = boston.data
y = boston.target
 
# 把数据分为训练数据集和测试数据集(20%数据作为测试数据集)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)
 
model = Ridge(alpha=0.01, normalize=True)
model.fit(X_train, y_train)
 
train_score = model.score(X_train, y_train)  # 模型对训练样本得准确性
test_score = model.score(X_test, y_test)  # 模型对测试集的准确性
print(train_score)
print(test_score)

Значение alpha — это коэффициент гребня, а scikit-learn предоставляет класс RidgeCV, который может автоматически выполнять поиск по сетке, чтобы найти наилучшее значение:

from sklearn.linear_model import RidgeCV
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
 
boston = load_boston()
X = boston.data
y = boston.target
 
# 把数据分为训练数据集和测试数据集(20%数据作为测试数据集)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)
 
model = RidgeCV(alphas=[1.0, 0.5, 0.1, 0.05, 0.01, 0.005, 0.001, 0.0005, 0.0001], normalize=True)
model.fit(X_train, y_train)
 
print(model.alpha_)

Лассо возвращается

Регрессия Лассо добавляет норму L1 w в качестве штрафного члена, чтобы определить большое количество бесполезных терминов (нулевых значений) в коэффициентах:

 \[L(\bar{w})=\frac{1}{2n}\left \| X\bar{w} -\bar{y}\right \|_2^2 + \alpha \left \| \bar{w} \right \|_1\]

Конкретный код похож на регрессию Риджа и не будет здесь повторяться.

Регрессия ElasticNet

ElasticNet объединяет Lasso и Ridge в единую модель с двумя штрафными коэффициентами: один пропорционален норме L1, а другой пропорционален норме L2. Результирующая модель, использующая этот подход, является такой же разреженной, как и чистая регрессия Лассо, но в то же время обладает той же силой регуляризации, которую обеспечивает гребневая регрессия. Его функция потерь:

 \[L(\bar{w})=\frac{1}{2n}\left \| X\bar{w} -\bar{y}\right \|_2^2 + \alpha \beta \left \| \bar{w} \right \|_1 + \frac{\alpha (1-\beta )}{2}\left \| \bar{w} \right \|_2^2\]

Как видно из приведенной выше формулы, ElasticNet должен обеспечивать\alphaи\betaдва параметра. существует\betaИмя параметра l1_ratio:

from sklearn.datasets import load_boston
from sklearn.linear_model import LassoCV, ElasticNetCV
 
boston = load_boston()
 
# Find the optimal alpha value for Lasso regression
lscv = LassoCV(alphas=(1.0, 0.1, 0.01, 0.001, 0.005, 0.0025, 0.001, 0.00025), normalize=True)
lscv.fit(boston.data, boston.target)
print('Lasso optimal alpha: %.3f' % lscv.alpha_)
 
# Find the optimal alpha and l1_ratio for Elastic Net
encv = ElasticNetCV(alphas=(0.1, 0.01, 0.005, 0.0025, 0.001), l1_ratio=(0.1, 0.25, 0.5, 0.75, 0.8), normalize=True)
encv.fit(boston.data, boston.target)
print('ElasticNet optimal alpha: %.3f and L1 ratio: %.4f' % (encv.alpha_, encv.l1_ratio_))

Ссылка на ссылку:

Вознаграждение автора WeChat Pay标点符 wechat qrcodeAlipay标点符 alipay qrcode