Регуляризация — это техника в машинном обучении, направленная на предотвращение переобучения модели, улучшение её обобщающей способности и повышение устойчивости к шуму в данных. Переобучение происходит, когда модель слишком хорошо подстраивается под обучающие данные, включая их шум и аномалии, и плохо обобщает на новых данных. Регуляризация помогает контролировать сложность модели и способствует её лучшему обобщению на тестовых данных.
В L1-регуляризации добавляется сумма абсолютных значений коэффициентов модели к функции потерь. Это приводит к разреженным моделям, где некоторые коэффициенты становятся равными нулю, что способствует отбору признаков.
В L2-регуляризации добавляется сумма квадратов коэффициентов модели к функции потерь. Это приводит к тому, что коэффициенты становятся маленькими, но редко равными нулю.
Elastic Net сочетает в себе L1 и L2-регуляризацию, объединяя их преимущества.
Dropout — это техника регуляризации, применяемая в нейронных сетях, при которой случайные нейроны "выключаются" во время обучения с заданной вероятностью. Это предотвращает зависимость нейронов друг от друга и делает модель более устойчивой к переобучению.
L1-регуляризация:
from sklearn.linear_model import Lasso
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# Загрузка данных
data = load_boston()
X, y = data.data, data.target
# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Создание и обучение модели Lasso
model = Lasso(alpha=0.1)
model.fit(X_train, y_train)
# Оценка модели
score = model.score(X_test, y_test)
print(f"Точность модели Lasso: {score}")
L2-регуляризация:
from sklearn.linear_model import Ridge
# Создание и обучение модели Ridge
model = Ridge(alpha=0.1)
model.fit(X_train, y_train)
# Оценка модели
score = model.score(X_test, y_test)
print(f"Точность модели Ridge: {score}")
Ставь 👍 и забирай 📚 Базу знаний