Главная
#Практика и карьера #Data Science #Lasso

Что такое Регуляризация L1 в Data Science и зачем она нужна в 2026 году?

Регуляризация L1 — это один из тех инструментов в машинном обучении, который сначала кажется просто техническим штрафом в формуле, а потом оказывается очень содержательной идеей. Для студента Data Science здесь важно понять не только саму запись в loss function, но и интуицию: L1 не просто “слегка ограничивает веса”, а умеет выталкивать часть коэффициентов ровно в ноль. Именно поэтому она так тесно связана с разреженностью, sparsity и автоматическим отбором признаков.

Содержание
  1. Почему вообще возникает проблема слишком больших и лишних коэффициентов
  2. Главная идея L1: штраф за сумму модулей коэффициентов
  3. Почему именно L1 порождает sparsity
  4. Soft-thresholding как локальная механика L1
  5. Геометрический смысл L1
  6. Почему L1 полезна в реальном ML
  7. Связь L1 с feature selection
  8. Как L1 связана с оптимизацией
  9. Какие ошибки делают чаще всего
  10. Python: как посмотреть sparsity в lasso-регрессии
  11. Что важно вынести из темы
  12. Kaggle notebook по теме:

Если говорить совсем практично, L1 нужна там, где признаков много, часть из них шумная, часть дублирует друг друга, а модель хочется сделать не только точной, но и компактной. В 2026 году это по-прежнему актуально: табличные модели, линейные модели для NLP, кредитный скоринг, интерпретируемые risk-модели, классический ML на широких feature spaces и даже некоторые прокси-задачи в production, где важны простота и устойчивость.

Очень полезно думать о L1 не как о “математическом аксессуаре”, а как о способе заставить модель быть строже к самой себе. Без регуляризации модель легко начинает использовать слишком много признаков, даже если их вклад сомнителен. С L1 она получает стимул оставлять только то, что действительно оправдывает своё существование. Это особенно хорошо чувствуется, если до этого уже было интуитивно понятно, что такое overfitting и почему модель начинает цепляться за шум.

Почему вообще возникает проблема слишком больших и лишних коэффициентов

Когда модель минимизирует только ошибку на обучении, она часто готова использовать почти любую структуру в данных. Если признаков много, если среди них есть шум, если часть признаков коррелирует друг с другом, модель может “размазать” решение по большому числу коэффициентов. Формально loss уменьшается, но модель становится менее устойчивой, хуже переносится на новые данные и труднее интерпретируется.

Регуляризация появляется именно как ответ на эту проблему. Мы говорим модели: мало просто хорошо объяснить train. Нужно сделать это ещё и достаточно экономно. То есть не использовать слишком сложное решение, если более простое почти не хуже.

Главная идея L1: штраф за сумму модулей коэффициентов

L1-регуляризация добавляет к основной функции потерь штраф, пропорциональный сумме абсолютных значений параметров. Это выглядит компактно, но именно эта форма и создаёт знаменитую склонность к sparsity.

(\mathcal{L}(\mathbf{w}) = \mathcal{L}_{data}(\mathbf{w}) + \lambda \sum_{j=1}^{p} |w_j|)

Раздел математики: теория оптимизации и линейная алгебра.

Что означает каждый символ:

(\mathcal{L}(\mathbf{w})) — полная функция потерь модели с регуляризацией.

(\mathcal{L}_{data}(\mathbf{w})) — исходная потеря по данным: например, MSE или log-loss.

(\mathbf{w}) — вектор параметров модели.

(w_j) — j-й коэффициент модели.

(p) — число признаков или параметров.

(\lambda) — сила регуляризации, то есть цена за большие коэффициенты.

Формула показывает, что модель минимизирует не только ошибку на данных, но и сумму модулей коэффициентов. Чем больше (\lambda), тем сильнее модель наказывается за использование большого числа ненулевых весов.

Численный пример: пусть базовая потеря модели равна 12, а коэффициенты равны ((2,-1,0.5)). Тогда сумма модулей равна (|2|+|-1|+|0.5|=3.5). Если (\lambda=0.4), штраф равен (0.4 \cdot 3.5 = 1.4), и полная потеря становится (12 + 1.4 = 13.4).

Эта формула важна в ML тем, что меняет саму цель оптимизации. Модель больше не ищет просто наилучшее приближение к train. Она ищет наилучшее приближение среди решений, которые остаются достаточно компактными.

Хабровская иллюстрация из разбора фундаментальных вопросов по ML и регуляризации

Почему именно L1 порождает sparsity

Здесь начинается самая интересная часть. И L1, и L2 штрафуют большие веса, но делают это по-разному. L2 тянет коэффициенты к нулю плавно, а L1 делает ноль особенно “привлекательной” точкой. Это связано с геометрией функции штрафа: у модуля есть излом в нуле. Именно этот излом и делает зануление естественным результатом оптимизации.

Интуитивно L1 говорит модели так: если признак не даёт достаточно пользы, чтобы оправдать даже небольшой ненулевой вес, проще вообще убрать его из решения. И это очень отличается от L2, где модель чаще предпочитает оставить много маленьких, но не нулевых коэффициентов. Именно поэтому рядом особенно полезен и разбор Ridge и Lasso в регрессии, где разница между двумя типами штрафа видна уже на уровне прикладочного выбора модели.

Soft-thresholding как локальная механика L1

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

(S(z,\lambda)=\mathrm{sign}(z)\max(|z|-\lambda,0))

Раздел математики: математический анализ и теория оптимизации.

Что означает каждый символ:

(S(z,\lambda)) — soft-thresholding оператор.

(z) — “сырой” коэффициент или промежуточная оценка веса до порогового сжатия.

(\lambda) — порог регуляризации.

(\mathrm{sign}(z)) — знак числа (z).

(\max(|z|-\lambda,0)) — правило, которое либо уменьшает модуль коэффициента на (\lambda), либо зануляет его.

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

Численный пример: если (z=0.8) и (\lambda=0.5), то (S(0.8,0.5)=0.3). Если же (z=0.3), то (S(0.3,0.5)=0). Именно так и появляется sparsity.

С точки зрения машинного обучения это означает следующее: L1 не просто делает модель “чуть менее агрессивной”, а действительно меняет структуру решения. Часть признаков перестаёт участвовать в модели совсем.

Геометрический смысл L1

Геометрия здесь особенно красива. Если смотреть на пространство коэффициентов, то L1-регуляризация задаёт ограничение в форме ромба в двумерном случае и соответствующего многогранника в больших размерностях. У этого тела есть острые углы на осях. А именно в этих углах и лежат решения, где один или несколько коэффициентов равны нулю.

Именно поэтому L1 так естественно порождает sparsity. Оптимизация часто приходит в точки касания именно на осях координат. Для L2 геометрия другая: там ограничение круглое, гладкое, и зануление происходит гораздо реже.

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

Почему L1 полезна в реальном ML

Первая практическая польза — отбор признаков. Если признаков очень много, L1 помогает автоматически убрать часть слабых или шумных. Вторая — интерпретируемость. Модель с меньшим числом активных коэффициентов легче объяснять. Третья — устойчивость к широким sparse-пространствам, например в текстовых задачах или в инженерных feature tables с большим числом категориальных производных признаков.

Но важно не романтизировать L1. Она не “лучше всегда”. Если признаки сильно коррелируют, L1 может нестабильно выбирать между ними, зануляя одни и оставляя другие почти случайно внутри группы похожих признаков. Поэтому на практике часто рядом появляется Elastic Net как компромисс между L1 и L2.

Связь L1 с feature selection

Полезно понимать, что L1 — это не буквальная замена ручному отбору признаков, а встроенный в оптимизацию механизм структурного сжатия модели. Она не просто говорит “эти признаки полезны, а эти нет”, а делает это в контексте общей loss function и конкретного набора данных. Поэтому её решение зависит от масштаба признаков, корреляций и значения (\lambda). И если признаки вообще собраны непрозрачно, полезно отдельно понимать feature lineage, потому что sparsity ничего не говорит о корректности происхождения самих фич.

Именно здесь появляется инженерная зрелость: прежде чем радоваться sparsity, нужно убедиться, что признаки масштабированы разумно, а регуляризация настроена не наугад.

Хабровская иллюстрация из статьи про линейную регрессию и коэффициенты модели

Как L1 связана с оптимизацией

В задачах оптимизации L1 сложнее, чем L2, потому что модуль не дифференцируем в нуле. Но именно эта недифференцируемость и создаёт нужный эффект. Алгоритм должен работать с субградиентами, coordinate descent или проксимальными методами. Это очень важный пример того, как математическая тонкость напрямую рождает прикладное свойство модели.

С точки зрения обучения это означает: L1 не просто штрафует веса, а меняет сам тип оптимизационной поверхности. И именно поэтому поведение модели с L1 качественно отличается от “обычного shrinkage”.

Какие ошибки делают чаще всего

Первая ошибка — применять L1 к непромасштабированным признакам и затем удивляться странному отбору. Вторая — считать, что зануление автоматически означает “признак бесполезен вообще”. Третья — путать sparsity с устойчивой интерпретацией, особенно при сильной корреляции признаков. Четвёртая — выбирать слишком большое (\lambda) и получать чрезмерно бедную модель. Пятая — не проверять качество на валидации, а ориентироваться только на красоту обнулённых коэффициентов. Здесь как раз полезно отдельно держать в голове и кросс-валидацию, потому что без неё очень легко принять эффект удачного split за реальную устойчивость модели.

Есть и более тонкая ошибка: использовать L1 как универсальный ответ на проблему переобучения. Она полезна, но её нужно выбирать под задачу. Иногда лучше сработает L2, иногда Elastic Net, а иногда проблема вообще не в коэффициентах, а в данных, leakage или плохой постановке эксперимента. В этом смысле рядом очень полезно держать и разбор data leakage во временных признаках, потому что красивая регуляризация не спасает модель, если в train уже просочилось будущее.

Python: как посмотреть sparsity в lasso-регрессии

import numpy as np  # Подключаем numpy для работы с массивами.
from sklearn.datasets import make_regression  # Импортируем генератор синтетических данных.
from sklearn.preprocessing import StandardScaler  # Импортируем масштабирование признаков.
from sklearn.linear_model import Lasso  # Импортируем Lasso как реализацию L1-регуляризации.
from sklearn.pipeline import Pipeline  # Импортируем Pipeline для аккуратной сборки этапов.

X, y = make_regression(  # Генерируем синтетическую регрессионную задачу.
    n_samples=500,  # Задаем число объектов.
    n_features=20,  # Задаем число признаков.
    n_informative=5,  # Указываем, что реально полезны только 5 признаков.
    noise=10,  # Добавляем шум в данные.
    random_state=42  # Фиксируем случайность для воспроизводимости.
)

model = Pipeline([  # Собираем пайплайн.
    ("scaler", StandardScaler()),  # Сначала масштабируем признаки, чтобы L1 работала корректнее.
    ("lasso", Lasso(alpha=0.1))  # Затем обучаем Lasso-модель с L1-регуляризацией.
])

model.fit(X, y)  # Обучаем пайплайн на данных.

coef = model.named_steps["lasso"].coef_  # Достаем коэффициенты обученной Lasso-модели.
non_zero = np.sum(coef != 0)  # Считаем число ненулевых коэффициентов.

print("Coefficients:", coef)  # Печатаем сами коэффициенты модели.
print("Non-zero coefficients:", non_zero)  # Печатаем количество признаков, которые пережили регуляризацию.

Этот пример хорош тем, что сразу показывает практический эффект L1. После обучения часть коэффициентов часто становится ровно нулевой. Это и есть живая sparsity, а не абстрактная теория из формулы.

Хабровская схема из статьи про gradient descent и обучение модели

Что важно вынести из темы

Регуляризация L1 в Data Science нужна там, где модели полезно быть не только точной, но и экономной в использовании признаков. Она добавляет штраф за сумму модулей коэффициентов и тем самым создаёт естественную склонность к sparsity. Это делает её особенно ценной в широких feature spaces, интерпретируемых моделях и задачах, где важен встроенный структурный отбор признаков.

Если сформулировать совсем коротко, L1 говорит модели: используй только то, что действительно оправдано. Именно поэтому она остаётся актуальной и в 2026 году — не как старый учебниковый трюк, а как живая инженерная идея о компактности, устойчивости и дисциплине решения.

Kaggle notebook по теме:

https://www.kaggle.com/code/residentmario/soft-thresholding-with-lasso-regression

Что читать дальше

Связанные статьи по этой теме

Инструменты Python в 2026 году: современный стек для профессиональной разработки Что должен знать Junior Data Scientist в 2026 году? Как собрать GitHub-портфолио для Data Science
Вернуться в блог