В этой статье будут объяснены 3 типа регуляризации, а также где и как их использовать с помощью Scikit-Learn.
Зачем нужна регуляризация?
Для начала нам нужно понять, зачем нужна регуляризация. Регуляризация в основном используется для того, чтобы модель не переборщила с данными. Полиномиальные модели являются наиболее распространенными, в которых может быть полезна регуляризация, поскольку она может иметь функции более высокой степени, которые могут привести к переобучению модели, что делает регуляризация, так это уменьшает количество степеней полинома, что делает модель не переоснащенной данными.
Преимущество использования регуляризации перед другими методами, такими как уменьшение количества функций в обучающих данных, состоит в том, что при удалении функций мы теряем ценную информацию во время обучения. Вот почему регуляризация лучше, поскольку она снижает влияние параметров гипотезы (θ).
Здесь я объясню 3 метода регуляризации.
Это фиктивные данные, над которыми мы будем работать. Как мы видим, он довольно разрознен, и для этих данных лучше всего подходит полиномиальная модель.
Хребтовая регрессия
Риджевая регрессия (также называемая регуляризацией Тихонова) - это регуляризованная версия линейной регрессии, имеющая член регуляризации, равный:
При добавлении этого члена к функции стоимости алгоритм обучения не только соответствует данным, но и сохраняет веса модели как можно меньшими.
Этот термин следует добавлять только к функции стоимости во время обучения.
гиперпараметр α определяет степень регуляризации модели. Теперь, если α = 0, модель является нормальной моделью линейной регрессии без какой-либо регуляризации. Если α очень велико, тогда все веса будут очень близки к 0, и модель будет просто прямой линией.
Функция стоимости гребневой регрессии:
Здесь MSE означает «среднеквадратичную ошибку».
Если мы определим w как вектор весов признаков. Тогда Ридинговая регрессия использует l₂ норму вектора w.
Закрыто для решения проблемы регрессии хребта:
Где A - это единичная матрица (n + 1) × (n + 1) с 0 в верхнем левом углу, соответствующая члену смещения.
Реализация регрессии гребня с помощью Scikit-Learn:
Теперь давайте посмотрим, как разные модели Ridge обучены на некоторых линейных фиктивных данных. Слева используются простые модели хребта, ведущие к линейным прогнозам. Слева у нас есть данные с расширенными полиномиальными функциями, тогда к данным применяется гребенчатая регрессия.
Из Рисунка-2 мы можем увидеть, что увеличение значений α приводит к более пологим прогнозам, таким образом уменьшая дисперсию моделей и увеличивая смещение.
Лассо-регрессия
Наименьшее абсолютное сжатие и регрессия оператора выбора - это еще одна регуляризованная версия линейной регрессии, точно так же, как и регрессия гребня, она добавляет член регуляризации к функции стоимости, но использует норму l ₁ вектор веса w.
Функция стоимости регрессии лассо:
Функция стоимости регрессии лассо:
Давайте посмотрим на некоторые модели лассо, обученные на фиктивных данных:
Важной характеристикой регрессии лассо является то, что она имеет тенденцию устранять веса наименее важных характеристик, например, мы можем увидеть правый график на Рисунке-3, где α = 1 в модели почти удалены все функции, потому что значение $ \ alpha $ слишком велико, и она больше похожа на линейную модель, чем на полиномиальную. По мере уменьшения значения α мы видим, что модель становится более полиномиальной и лучше соответствует данным, но когда α = 0, модель перекрывает данные, поэтому регрессия Лассо не применяется, поэтому золотая середина кажется α = 1e-07. Другими словами, регрессия лассо автоматически выполняет масштабирование признаков и выводит разреженную модель (то есть с несколькими ненулевыми весами признаков).
Эластичная сетка
Эластичная сеть - это нечто среднее между регрессией гребня и регрессией лассо. Это сочетание как Ridge, так и Lasso Regularization, и вы можете контролировать их сочетание, используя соотношение r. Когда r = 0, эластичная сеть эквивалентна регрессии гребня, а когда r = 1, она равна регрессии лассо.
Функция эластичных чистых затрат
Реализуйте Elastic Net с помощью Scikit-Learn:
l1_ratio соответствует соотношению смеси r.
Итак, когда использовать что?
Практически всегда рекомендуется использовать какую-либо регуляризацию, поэтому большую часть времени следует избегать простой линейной регрессии. Итак, какой из них вы должны использовать?
Ридж-регрессия хороша, если вы хотите сохранить все функции и избежать чрезмерного увеличения веса, это хороший вариант по умолчанию. Но если вы считаете, что полезны лишь некоторые функции, лучше всего выбрать либо Lasso Regression, либо Elastic Net, поскольку они устанавливают веса менее полезных функций на 0.
В общем, Elastic Net предпочтительнее лассо, потому что он может вести себя хаотично, когда количество функций превышает количество обучающих экземпляров, или когда многие функции сильно коррелированы.
Заключение
В этой короткой статье мы узнали о трех различных типах методов регуляризации и о том, как они полезны для предотвращения переобучения модели и где полезен каждый тип регуляризации.
Так что вперед и попробуйте реализовать их в своей следующей модели!