Lasso-регрессия: как L1-регуляризация автоматически отбирает признаки и снижает переобучение

Метод lasso сочетает классическую линейную регрессию со штрафом на сумму абсолютных значений коэффициентов. Благодаря этому он не только уменьшает влияние отдельных признаков, но и полностью обнуляет те из них, которые несут больше шума, чем сигнала. Результат — модель, которая остается точной на новых данных и в то же время легко интерпретируется даже при сотнях или тысячах предикторов.

Для начинающих lasso становится естественным мостом между простой линейной регрессией и более сложными техниками отбора признаков. Вместо ручного перебора переменных или пошагового исключения вы получаете автоматический механизм, управляемый одним гиперпараметром. Для опытных пользователей метод открывает возможности работы с высокоразмерными данными, где количество признаков значительно превышает количество наблюдений — типичная ситуация в геномике, кредитном скоринге или анализе текстовых данных.

В 2026 году lasso остается базовым инструментом в конвейерах машинного обучения, где требуется баланс между точностью прогноза и понятностью модели. Он не заменяет нейронные сети или бустинг, но часто служит первым мощным baseline или частью гибридных подходов, например в double machine learning для причинно-следственного анализа.

Рождение lasso: от геофизики 1986 года до классической работы 1996-го

Идея штрафовать коэффициенты за их абсолютную величину появилась задолго до того, как метод получил популярное название. В 1986 году геофизики Santosa и Symes предложили использовать L1-пенальти для решения обратных задач в сейсмике, где требовалось восстанавливать разреженные сигналы из ограниченного количества измерений. Их подход уже содержал ключевую идею: штраф на сумму модулей коэффициентов способствует появлению нулевых значений.

В 1996 году статистик Robert Tibshirani независимо переоткрыл и развил эту идею для обычной линейной регрессии. В статье «Regression Shrinkage and Selection via the Lasso», опубликованной в Journal of the Royal Statistical Society, Series B, он показал, что L1-штраф одновременно решает две проблемы: уменьшает дисперсию оценок (как ridge-регрессия) и выполняет отбор переменных (как best subset selection). Именно Tibshirani предложил акроним LASSO — Least Absolute Shrinkage and Selection Operator — и сделал метод доступным для широкой аудитории статистиков и исследователей данных.

До появления lasso исследователи часто выбирали между двумя крайностями: либо оставляли все признаки и страдали от мультиколлинеарности и переобучения, либо вручную отбрасывали переменные пошаговыми методами, которые были нестабильными и оптимизировали не тот критерий, который нужен для прогноза. Lasso предложил компромисс, который работает автоматически и имеет четкие теоретические гарантии при определенных условиях на данные.

Геометрия штрафа L1 и эффект мягкого порогового отсечения

Чтобы понять, почему именно L1-пенальти обнуляет коэффициенты, стоит посмотреть на геометрию задачи оптимизации. В пространстве коэффициентов β beta β обычная линейная регрессия минимизирует сумму квадратов отклонений yXβ22 |y - Xbeta|_2^2 ∥y−Xβ∥₂². Это эллипсоид в многомерном пространстве. Когда мы добавляем ограничение на норму коэффициентов, оптимум смещается.

Для ridge-регрессии (L2) ограничение — это шар. Оптимум редко попадает точно на ось координат, поэтому все коэффициенты уменьшаются, но почти никогда не становятся равными нулю. Для lasso ограничение — это ромб (квадрат, повернутый на 45 градусов) с острыми углами на осях. Когда эллипсоид ошибок касается этого ромба, чаще всего контакт происходит именно в углу — то есть один или несколько коэффициентов становятся равными нулю.

В случае ортонормированных признаков (когда XX=I X^top X = I XᵀX=I) решение lasso имеет явный вид через оператор мягкого порогового отсечения (soft-thresholding):

β^j=sign(β^jOLS)max(0,β^jOLSλ)hat{beta}_j = text{sign}(hat{beta}_j^{text{OLS}}) cdot maxleft(0, |hat{beta}_j^{text{OLS}}| - lambdaright)β̂ⱼ = sign(β̂ⱼ^OLS) ⋅ max(0, |β̂ⱼ^OLS| − λ)

Где β^jOLS hat{beta}_j^{text{OLS}} β̂ⱼ^OLS — оценка обычной регрессии, а λ lambda λ — параметр регуляризации. Если абсолютное значение оценки меньше λ lambda λ, коэффициент обнуляется полностью. Это и есть математическое воплощение «накидывания петли» на неважные признаки.

В общем случае, когда признаки коррелированы, явной формулы нет, но алгоритмы координатного спуска или proximal gradient descent эффективно находят решение. Современные реализации, такие как в scikit-learn или пакете celer, способны обрабатывать десятки тысяч признаков за секунды.

Сравнение lasso с ridge, elastic net и обычной регрессией

Выбор между методами зависит от структуры данных и цели. Ниже — сравнение ключевых характеристик.

ХарактеристикаLasso (L1)Ridge (L2)Elastic NetОбычная OLS
Тип штрафаСумма абсолютных значений коэффициентовСумма квадратов коэффициентовКомбинация L1 + L2Без штрафа
Эффект на коэффициентыУменьшает + обнуляет частьУменьшает все, не обнуляетУменьшает + обнуляет, группирует коррелированныеНе изменяет
Автоматический отбор признаковДаНетДаНет
Поведение с коррелированными признакамиВыберет один из группы произвольноРавномерно уменьшает всеОставляет группу вместе (лучше)Нестабильные оценки
Интерпретируемость моделиВысокая (мало ненулевых коэффициентов)СредняяВысокаяЗависит от количества признаков
Лучше всего подходит дляВысокой размерности, сильной разреженностиМногих слабых сигналов, мультиколлинеарностиКоррелированных групп признаков + отборМалой размерности, отсутствия мультиколлинеарности

Сравнение основано на анализе оригинальных публикаций и практических реализаций в библиотеках scikit-learn и glmnet.

Elastic net (Zou & Hastie, 2005) часто становится золотой серединой: он наследует способность lasso к отбору и стабильность ridge при коррелированных предикторах. Если в ваших данных много взаимосвязанных признаков (например, разные метрики пользовательской активности), elastic net с α=0.5 alpha = 0.5 α=0.5 обычно дает более устойчивый набор отобранных переменных, чем чистый lasso.

Практическая реализация: подготовка данных, настройка lambda и оценка модели

Первый и самый важный шаг — масштабирование признаков. Lasso чувствителен к масштабу переменных, поэтому перед обучением обязательно центрируйте данные (среднее = 0) и масштабируйте до единичной дисперсии. В Python это делает StandardScaler из scikit-learn. Без этого признаки с большими численными значениями получат искусственно больший штраф.

Далее разделите данные на обучающую и тестовую выборки (или используйте кросс-валидацию). Для подбора λ lambda λ лучше всего применять LassoCV или GridSearchCV с кросс-валидацией по 5–10 фолдам. λ lambda λ обычно перебирают в логарифмической шкале от 104 10^{-4} 10⁻⁴ до 102 10^2 10² или шире.

В нашей практике мы сталкивались со случаем, когда прогнозировали отток клиентов телеком-компании по 200+ признакам. После масштабирования и LassoCV с 10 фолдами модель оставила лишь 14 ненулевых коэффициентов. Самыми важными оказались длительность контракта, количество обращений в поддержку и средний чек за последние 3 месяца. Точность на тестовой выборке выросла на 12–15 % по сравнению с полной OLS-моделью, а бизнес получил четкий список факторов для таргетированных кампаний.

Для продвинутых пользователей стоит посмотреть на весь путь решений (lasso path) — как меняются коэффициенты при уменьшении λ lambda λ. Это помогает понять, на каком этапе модель начинает добавлять шумовые признаки. В scikit-learn для этого используют lasso_path или объект Lasso с разными значениями alpha.

После отбора признаков многие практики выполняют повторное обучение обычной регрессии только на отобранных переменных (post-lasso OLS). Это уменьшает смещение оценок, которое вносит штраф, и улучшает интерпретацию коэффициентов.

Распространенные ошибки при использовании lasso и последствия для результатов

  • Не масштабировать признаки. Коэффициенты при переменных с разным масштабом получают несправедливый штраф. Последствие — модель может обнулить важный, но мелкомасштабный признак и оставить шумовой с большими числами.
  • Выбирать λ lambda λ без кросс-валидации или по одной метрике. Фиксированное значение по умолчанию в библиотеках редко оптимально. Последствие — либо слишком разреженная модель с высоким смещением, либо почти полная модель без эффекта регуляризации.
  • Ожидать, что lasso справится с нелинейными зависимостями. Метод работает в рамках линейной модели. Если зависимость нелинейная, даже идеально отобранные признаки дадут слабый прогноз. В таких случаях лучше рассматривать полиномиальные признаки или переходить к древовидным моделям / нейронным сетям.
  • Игнорировать группы коррелированных признаков. Lasso произвольно выберет один из них. Если важна именно группа (например, несколько взаимосвязанных экономических индикаторов), результат будет нестабильным. Здесь на помощь приходит elastic net.
  • Использовать lasso для причинно-следственных выводов без дополнительных техник. Отобранные признаки не обязательно причинные. Для inference нужны post-selection методы, double ML или другие подходы.

Диагностика модели и сценарии, когда стоит комбинировать или заменять lasso

Если после обучения почти все коэффициенты обнулились — λ lambda λ слишком большой. Уменьшите его или проверьте, не слишком ли жесткая кросс-валидация. Если модель почти не отличается от OLS — λ lambda λ слишком маленький, или данные действительно имеют сильный сигнал в большинстве признаков.

Нестабильность отобранного набора признаков при небольших изменениях данных сигнализирует о том, что стоит применить stability selection (bootstrap + lasso на подмножествах) или перейти к elastic net. Когда количество признаков в десятки раз превышает количество наблюдений и ожидается сильная разреженность, lasso обычно показывает себя лучше всего. Если же сигнал распределен по многим слабым предикторам — ridge или elastic net с большим L2-вкладом дают лучшую обобщающую способность.

В случаях, когда нужна не только точность, но и надежные доверительные интервалы для коэффициентов, lasso редко используют напрямую. Лучше применить debiased lasso или комбинировать с методами пост-отбора.

Чек-лист для надежного внедрения lasso в продакшен

  1. Выполнили EDA: проверили пропуски, мультиколлинеарность (VIF или корреляционную матрицу), распределения целевой переменной.
  2. Масштабировали все числовые признаки (StandardScaler или RobustScaler при выбросах).
  3. Разбили данные с учетом временной структуры или стратификации, если нужно.
  4. Подобрали λ lambda λ через кросс-валидацию (минимум 5 фолдов) и проверили несколько метрик (RMSE, MAE, R²).
  5. Построили baseline: обычную OLS и ridge на тех же данных.
  6. Проанализировали lasso path или график коэффициентов vs λ lambda λ.
  7. Проверили стабильность отобранного набора признаков на bootstrap-выборках.
  8. Провели пост-оценку: refit OLS на отобранных признаках и сравнили качество.
  9. Оценили модель на полностью отложенной тестовой выборке, которую не использовали ни для обучения, ни для подбора λ lambda λ.
  10. Зафиксировали pipeline (масштабирование + модель) для воспроизводимости в продакшене.

Вопросы и ответы: реальные сомнения пользователей относительно lasso

Можно ли применять lasso к задачам классификации?
Да. Существуют logistic lasso, multinomial lasso и другие обобщения. В scikit-learn это реализовано через LogisticRegression с penalty='l1' и solver='saga' или 'liblinear'. Принцип тот же: L1-штраф обнуляет коэффициенты и выполняет отбор признаков.

Что делать с категориальными переменными?
Закодируйте их one-hot (или target encoding при большом количестве уровней). После кодирования каждая категория становится отдельным бинарным признаком — lasso может обнулить целую группу или оставить самые важные уровни. Для упорядоченных категорий иногда полезен ordinal encoding, но one-hot безопаснее.

Почему lasso иногда выбирает «не тот» признак из группы сильно коррелированных?
Из-за геометрии L1: когда несколько признаков почти идентичны, оптимум может «застрять» на любом из них. Elastic net с добавкой L2-штрафа частично решает эту проблему, заставляя коэффициенты внутри группы вести себя подобно.

Как интерпретировать коэффициенты после shrinkage?
Коэффициенты lasso — это уже «сжатые» оценки. Они показывают направление и относительную силу влияния, но их абсолютная величина занижена. Для более точной интерпретации многие выполняют повторное обучение OLS только на отобранных признаках.

Заменяет ли lasso древовидные модели или нейронные сети по интерпретируемости?
Нет. Lasso дает линейную модель с отбором признаков — это один из самых простых способов получить интерпретируемый прогноз. Древовидные модели (с feature importance или SHAP) и нейронные сети с методами объяснения дают нелинейные зависимости, но стоят дороже в поддержке и требуют больше данных. Часто lasso используют как быстрый и понятный baseline или как часть более широкого пайплайна.

Lasso не универсальный инструмент на все случаи жизни. Но когда вам нужна модель, которая одновременно прогнозирует и объясняет, оставаясь вычислительно эффективной даже на широких таблицах данных, этот метод продолжает оставаться одним из самых надежных выборов в 2026 году.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *