Ответ
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 особенно полезен в задачах с большим количеством признаков, где лишь часть из них действительно информативна, и требуется построить компактную, интерпретируемую модель.
Ответ 18+ 🔞
Ну, слушай, история про L1-регуляризацию — это вообще ёперный театр. Представь себе обычную линейную модель: она берёт все признаки, которые ты ей скормил, и пытается из каждого выжать сок, даже если этот признак — полная хуйня. Получается такая пиздопроебибна, где модель тащит за собой кучу мусора и овердохуища параметров, которые только мешают.
А теперь смотри сюда. Lasso, он же L1, подходит к этой проблеме с позиции жёсткого менеджера. Он смотрит на вес каждого признака и говорит: «Мужик, ты мне нужен? Несешь пользу? Нет? Ну тогда нахуй». И просто обнуляет его коэффициент. В итоге модель становится не просто проще, а разреженной — как будто после генеральной уборки, когда выкинули весь хлам. Доверия ебать ноль к бесполезным фичам.
Главный фокус в том, что он штрафует модель не за квадраты весов, как его братан Ridge (L2), а за их абсолютные значения. А эта штука, L1-норма, имеет такую хитрожопую геометрию (ромбовидную, если точнее), что при оптимизации решение очень любит «залипать» на углах, где какие-то веса становятся ровно в ноль. Вот и весь секрет автоматического отбора признаков.
Сравнивать их — одно удовольствие. Ridge (L2) — это такой терпеливый тренер: «Ладно, парень, вес большой, давай-ка уменьшим, но ты всё равно оставайся в строю». А Lasso (L1) — это уже отморозок: «Слабак? Нахуй с поляны». Первый сжимает, второй — отрубает.
Вот, глянь на код, тут всё просто, как три копейки:
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)
# Сейчас будет самое интересное — посмотрим, кого он пореал
print("Коэффициенты модели:", model.coef_)
print("Количество ненулевых признаков:", sum(model.coef_ != 0))
Запустишь — и удивление пиздец: часть коэффициентов будет лежать ровным счётом ноль. Модель сама решила, какие признаки — манда с ушами, и выкинула их на мороз.
Когда это всё впендюрить? Да когда у тебя овирдохуища признаков, а по факту работают единицы. Нужно быстро понять, что реально важно, да ещё и модель получить, которая не бздит на новых данных. Если нужна интерпретируемость и простота — твой выбор Lasso. Если боишься, что он слишком агрессивный и может отрезать что-то ценное, то есть ещё ElasticNet — эта хитрая жопа комбинирует L1 и L2, но это уже другая, не менее весёлая история.