Что такое L1-регуляризация (Lasso) и как её интерпретировать?

«Что такое L1-регуляризация (Lasso) и как её интерпретировать?» — вопрос из категории Метрики и функции потерь, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

L1-регуляризация (Lasso) — это метод регуляризации, который добавляет к функции потерь модели сумму абсолютных значений весов (L1-норму). Её ключевая особенность — способность обнулять веса менее значимых признаков, создавая разреженные модели.

Интерпретация и эффекты:

  • Разреженность (Sparsity): L1 стремится обнулить некоторые коэффициенты, выполняя автоматический отбор признаков. Это упрощает модель и улучшает интерпретируемость.
  • Контроль переобучения: Как и другие виды регуляризации, L1 штрафует большие веса, помогая бороться с переобучением.
  • Сравнение с L2 (Ridge): L2 (сумма квадратов весов) лишь уменьшает величину весов, но редко обнуляет их полностью. L1 же часто приводит к точному нулю.

Практический пример с sklearn:

from sklearn.linear_model import Lasso
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

# Генерация данных
X, y = make_regression(n_samples=100, n_features=10, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Обучение модели Lasso
model = Lasso(alpha=0.5)  # alpha — гиперпараметр силы регуляризации
model.fit(X_train, y_train)

# Просмотр коэффициентов: некоторые будут равны 0
print("Коэффициенты модели:", model.coef_)
print("Количество ненулевых признаков:", sum(model.coef_ != 0))

Когда использовать? L1 особенно полезен в задачах с большим количеством признаков, где лишь часть из них действительно информативна, и требуется построить компактную, интерпретируемую модель.