Переобучение остается одной из центральных проблем в машинном обучении. Модель запоминает шум в обучающей выборке вместо выявления истинных закономерностей, что приводит к деградации качества на новых данных.
Регуляризация решает эту проблему через добавление штрафа на сложность модели в целевую функцию. Два основных подхода — L1 (Lasso) и L2 (Ridge) — различаются не только математически, но и по практическим эффектам: первый обнуляет незначимые веса и выполняет автоматический отбор признаков, второй равномерно сжимает все коэффициенты без обнуления.
Понимание различий между L1 и L2 регуляризацией крайне важно для построения надежных моделей. Выбор типа регуляризации влияет на интерпретируемость результатов, вычислительную эффективность и способность модели работать с высокоразмерными данными. В контексте алгоритмического трейдинга правильная регуляризация определяет стабильность весов факторов и устойчивость стратегии к рыночным изменениям.
Механизм регуляризации
Регуляризация модифицирует целевую функцию добавлением штрафного слагаемого, которое ограничивает величину параметров модели. Базовая задача минимизации среднеквадратичной ошибки трансформируется в задачу с дополнительным членом, контролирующим сложность:
L(w) = MSE(w) + λ · Penalty(w)
где:
- L(w) — итоговая функция потерь;
- MSE(w) — среднеквадратичная ошибка модели с весами w;
- λ — гиперпараметр, контролирующий силу регуляризации;
- Penalty(w) — штрафная функция на веса.
Параметр λ балансирует между точностью на обучающих данных и простотой модели. При λ = 0 регуляризация отсутствует, при больших λ модель упрощается за счет роста ошибки на обучающей выборке.
Математическое представление
L1-регуляризация (Lasso) использует сумму абсолютных значений весов в качестве штрафа:
L₁(w) = MSE(w) + λ · Σ|wᵢ|
где:
- wᵢ — вес i-го признака;
- Σ|wᵢ| — L1-норма вектора весов;
- λ — коэффициент регуляризации.
L1-норма приводит к разреженным решениям: часть весов становится точно равной нулю. Это свойство превращает Lasso в инструмент автоматического отбора признаков.
L2-регуляризация (Ridge) штрафует квадраты весов:
L₂(w) = MSE(w) + λ · Σwᵢ²
где:
- wᵢ² — квадрат веса i-го признака;
- Σwᵢ² — L2-норма (квадрат евклидовой нормы) вектора весов;
- λ — коэффициент регуляризации.
L2-норма сжимает все веса равномерно, но никогда не обнуляет их полностью. Веса стремятся к нулю асимптотически, но остаются ненулевыми даже для нерелевантных признаков.
Градиенты штрафных функций принципиально различаются. Для L1 градиент равен sign(wᵢ), для L2 — 2wᵢ. Константный градиент L1 создает равномерное давление на все веса независимо от их величины, линейный градиент L2 сильнее воздействует на большие веса и слабее на малые.
L1 vs L2: ключевые различия
Выбор между L1 и L2 регуляризацией определяется структурой данных и целями моделирования. Различия проявляются на уровне геометрии задачи оптимизации, характера получаемых решений и вычислительных свойств алгоритмов.
Геометрическая интерпретация
Задачу регуляризации можно представить как оптимизацию с ограничениями. Минимизация функции потерь происходит в области, заданной условием на норму весов:
- для L1 это условие Σ|wᵢ| ≤ t;
- для L2 — Σwᵢ² ≤ t²,
где t определяется через λ.
В двумерном пространстве весов L1-ограничение образует ромб с вершинами на осях координат. Контуры функции потерь (эллипсы для квадратичной функции) касаются этого ромба с высокой вероятностью в вершине, где один из весов равен нулю. L2-ограничение формирует круг, контакт с которым происходит в произвольной точке окружности без предпочтения осям координат.

Рис. 1: Геометрическая интерпретация регуляризаций: слева зеленый ромб L1 с эллиптическими контурами функции потерь, касающимися вершин и создающими разреженные решения; справа синий круг L2, касающийся эллипсов в произвольной точке, что дает ненулевые веса
Эта геометрия объясняет разреженность L1-решений. Чем выше размерность пространства признаков, тем больше вершин у L1-многогранника и тем выше вероятность получить решение с нулевыми компонентами. В пространстве 100 признаков L1-регуляризация естественным образом находит подмножество из 10-20 значимых переменных.
Влияние на веса модели
L1-регуляризация создает бимодальное распределение весов: часть коэффициентов обнуляется, остальные принимают ненулевые значения. Переход происходит дискретно — при увеличении λ веса последовательно становятся нулевыми, начиная с наименее значимых признаков. Этот процесс называется путем регуляризации (regularization path) и позволяет ранжировать признаки по важности.
L2-регуляризация равномерно уменьшает все веса пропорционально их начальной величине. Распределение остается унимодальным со сдвигом к нулю. Большие веса сжимаются сильнее малых в абсолютном выражении, но относительное сжатие одинаково. Результат — плавное уменьшение всех коэффициентов без качественного изменения структуры модели.
Для коррелированных признаков поведение методов различается принципиально:
- L1 выбирает один признак из группы коррелированных переменных случайным образом, остальные обнуляет;
- L2 распределяет вес между коррелированными признаками примерно поровну.
В задачах с мультиколлинеарностью L2 обеспечивает более стабильные оценки, L1 создает разреженное решение ценой повышенной вариативности отбора.
Вычислительная сложность также различается:
- L2-регуляризация допускает аналитическое решение через модификацию нормального уравнения: w = (X^T X + λI)^(-1) X^T y;
- L1 требует итеративных методов оптимизации — покоординантный спуск (coordinate descent) или проксимальный градиентный спуск (proximal gradient descent).
На практике разница в скорости несущественна для современных библиотек, но L2 гарантирует единственность решения, в то время как L1 может иметь множество оптимумов при коллинеарности.
Отбор признаков через L1
L1-регуляризация выполняет автоматический отбор признаков (feature selection) в процессе обучения модели. Этот механизм особенно ценен при работе с высокоразмерными данными, где количество признаков сопоставимо или превышает число наблюдений.
Механизм зануления весов
Обнуление весов в L1 происходит из-за негладкости штрафной функции в нуле. Производная |w| не определена при w = 0, что создает субградиент — множество значений от -1 до +1. Алгоритм оптимизации может достичь минимума функции потерь при точно нулевом весе, если градиент MSE по этому параметру попадает в интервал [-λ, λ].
Геометрически это соответствует ситуации, когда градиент функции ошибок компенсируется субградиентом L1-нормы. Для признака с малым влиянием на целевую переменную такая компенсация достигается при нулевом весе. Ridge-регуляризация такой компенсации не допускает из-за гладкости квадратичной функции — градиент 2λw стремится к нулю вместе с весом, но никогда не достигает конечного значения при w = 0.
Порядок обнуления весов при увеличении λ детерминирован величиной градиента функции потерь. Признаки с малым градиентом (слабая корреляция с целевой переменной) обнуляются первыми. Построение полного пути регуляризации для диапазона λ показывает последовательность включения признаков и позволяет выбрать оптимальное подмножество через кросс-валидацию.
Интерпретируемость моделей
Разреженные модели упрощают интерпретацию результатов. Вместо анализа сотен слабых факторов специалист работает с 10-15 ключевыми переменными. В контексте количественного анализа это означает понимание драйверов доходности без информационного шума.
Интерпретируемость сегодня как никогда ценна в финансовой индустрии. Модели, используемые для принятия инвестиционных решений, должны обосновывать свои рекомендации. Модель с 200 признаками, где каждый вносит микроскопический вклад, объяснить невозможно. Lasso-регрессия с 12 значимыми факторами позволяет построить нарратив: доходность определяется momentum, value, качеством отчетности и ликвидностью.
Разреженность также улучшает обобщающую способность при ограниченных данных. Правило большого пальца: количество наблюдений должно превышать число признаков минимум в 10 раз. При 500 наблюдениях модель с 50 признаками рискованна, с 15 — приемлема. L1-регуляризация автоматически подгоняет количество активных параметров под объем выборки через выбор λ.
Снижение размерности через L1 ускоряет переобучение модели при поступлении новых данных. В production-системах алгоритмического трейдинга модели переобучаются ежедневно или еженедельно. Разреженная модель требует пересчета меньшего числа параметров и быстрее адаптируется к изменениям рыночного режима.
Выбор типа регуляризации
Решение об использовании L1 или L2 базируется на свойствах данных, целях моделирования и ограничениях продакшен-среды. Универсального правила не существует, но накопленный опыт квантитативного анализа формирует практические эвристики.
Когда использовать L1
L1-регуляризация оптимальна при подозрении на избыточность признаков. Типичный сценарий — датасет с десятками технических индикаторов, фундаментальных мультипликаторов и макроэкономических переменных, где большинство дублирует информацию или не содержит предсказательной силы. Lasso автоматически отсекает шум и выделяет информативное подмножество.
Высокая размерность относительно объема выборки — прямое показание для L1. При соотношении признаков к наблюдениям выше 0.1 (например, 50 признаков на 500 наблюдений) разреженность решения становится необходимостью. Без отбора признаков модель неизбежно переобучится, запомнив случайные корреляции в обучающей выборке.
Требование интерпретируемости усиливает аргументацию в пользу L1. Если модель используется для генерации торговых идей или объяснения инвестиционных решений клиентам, список из 10 ключевых факторов предпочтительнее 100 слабых сигналов. Регуляторы финансовых рынков также ожидают обоснования алгоритмических стратегий через понятные факторы риска.
Вычислительные ограничения в реальном времени могут склонить выбор к L1. Разреженная модель требует вычисления меньшего числа признаков при инференсе. Для высокочастотных стратегий экономия 50 микросекунд на расчете 30 вместо 100 индикаторов может быть значимой.
Неопределенность в релевантности признаков также фактор выбора в пользу L1. На начальном этапе исследования неясно, какие из сотен потенциальных факторов действительно работают. Lasso проводит первичный скрининг, оставляя кандидатов для углубленного анализа. Последующее моделирование строится на отобранном подмножестве.
Когда использовать L2
L2-регуляризация предпочтительна при наличии множества слабых, но релевантных сигналов. Если априори известно, что доходность определяется комбинацией десятков факторов без явных доминант, Ridge сохранит вклад каждого компонента. Обнуление части весов через L1 приведет к потере информации.
Мультиколлинеарность признаков — классическое применение L2. Группа высококоррелированных переменных (например, close, high, low цены) несет одну информацию, но их совместное использование дестабилизирует оценки без регуляризации. L1 случайным образом выберет один признак из группы, L2 распределит вес между всеми, повысив устойчивость модели к вариациям в данных.
Стабильность коэффициентов во времени — важный фактор для продакшен-систем. L2 создает плавно меняющиеся веса при переобучении модели на скользящем окне, L1 может радикально менять набор активных признаков. Для стратегий с ежедневным ребалансом портфеля стабильность весов снижает транзакционные издержки и уменьшает дрейф распределения рисков (risk attribution drift).
Если предполагаются малые выборки с большим количеством информативных признаков тоже стоит рассмотреть L2. При 200 наблюдениях и 50 коррелированных технических индикаторов L1 оставит 5-7 признаков, потенциально упустив значимую информацию. L2 использует все 50 индикаторов со сжатыми весами, извлекая максимум из ограниченных данных.
Отсутствие требований к интерпретируемости нивелирует главное преимущество L1. Если модель работает как black-box компонент торговой системы без необходимости объяснения решений, плотное решение L2 может обеспечить лучшее качество предсказаний.
Настройка гиперпараметра Лямбда
Выбор оптимального значения λ обычно осуществляется через кросс-валидацию. Диапазон кандидатов покрывает несколько порядков величины — от 10^(-4) до 10^2 для нормализованных признаков. Логарифмическая шкала обеспечивает равномерное исследование пространства параметров.
K-fold кросс-валидация разбивает данные на K фолдов (обычно 5–10), последовательно обучая модель на K−1 фолдах и проверяя ее на оставшемся. Для каждого значения λ вычисляется средняя ошибка по всем фолдам. Оптимальное λ минимизирует валидационную ошибку, обеспечивая баланс между смещением (bias) и дисперсией (variance) модели.
import numpy as np
import yfinance as yf
from sklearn.linear_model import LassoCV, RidgeCV
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import TimeSeriesSplit
import matplotlib.pyplot as plt
# Загрузка данных
ticker = yf.Ticker("2330.TW") # TSMC
data = ticker.history(period="5y", interval="1d")
# Построение признаков: лаги доходности и технические индикаторы
returns = data['Close'].pct_change()
features = []
for lag in range(1, 21):
features.append(returns.shift(lag))
# Скользящие средние разных периодов
for window in [5, 10, 20, 50]:
ma = data['Close'].rolling(window=window).mean()
features.append((data['Close'] - ma) / ma)
# Волатильность
for window in [5, 10, 20]:
vol = returns.rolling(window=window).std()
features.append(vol)
# Объем торгов
volume_ma = data['Volume'].rolling(window=20).mean()
features.append((data['Volume'] - volume_ma) / volume_ma)
# Объединение в датафрейм
import pandas as pd
X = pd.concat(features, axis=1).dropna()
y = returns.shift(-1).loc[X.index].dropna()
X = X.loc[y.index]
# Нормализация
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Time series split для финансовых данных
tscv = TimeSeriesSplit(n_splits=5)
# Подбор параметров для Lasso
alphas_lasso = np.logspace(-4, 1, 50)
lasso_cv = LassoCV(alphas=alphas_lasso, cv=tscv, max_iter=10000)
lasso_cv.fit(X_scaled, y)
# Подбор параметров для Ridge
alphas_ridge = np.logspace(-2, 3, 50)
ridge_cv = RidgeCV(alphas=alphas_ridge, cv=tscv)
ridge_cv.fit(X_scaled, y)
# Визуализация зависимости ошибки от lambda
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# Lasso
mse_lasso = np.mean(lasso_cv.mse_path_, axis=1)
axes[0].plot(alphas_lasso, mse_lasso, 'o-', color='#2C3E50', linewidth=2)
axes[0].axvline(lasso_cv.alpha_, color='#E74C3C', linestyle='--',
linewidth=2, label=f'Optimal λ = {lasso_cv.alpha_:.4f}')
axes[0].set_xscale('log')
axes[0].set_xlabel('Lambda (L1)', fontsize=11)
axes[0].set_ylabel('Mean Squared Error', fontsize=11)
axes[0].set_title('Lasso Regularization Path', fontsize=12, fontweight='bold')
axes[0].legend()
axes[0].grid(True, alpha=0.3)
# Ridge
# Для Ridge нужно вычислить ошибки вручную
mse_ridge = []
for alpha in alphas_ridge:
from sklearn.linear_model import Ridge
ridge_temp = Ridge(alpha=alpha)
scores = []
for train_idx, val_idx in tscv.split(X_scaled):
ridge_temp.fit(X_scaled[train_idx], y.iloc[train_idx])
pred = ridge_temp.predict(X_scaled[val_idx])
mse = np.mean((y.iloc[val_idx] - pred) ** 2)
scores.append(mse)
mse_ridge.append(np.mean(scores))
axes[1].plot(alphas_ridge, mse_ridge, 'o-', color='#2C3E50', linewidth=2)
axes[1].axvline(ridge_cv.alpha_, color='#E74C3C', linestyle='--',
linewidth=2, label=f'Optimal λ = {ridge_cv.alpha_:.2f}')
axes[1].set_xscale('log')
axes[1].set_xlabel('Lambda (L2)', fontsize=11)
axes[1].set_ylabel('Mean Squared Error', fontsize=11)
axes[1].set_title('Ridge Regularization Path', fontsize=12, fontweight='bold')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
# Сравнение количества ненулевых коэффициентов
n_nonzero_lasso = np.sum(lasso_cv.coef_ != 0)
n_nonzero_ridge = np.sum(np.abs(ridge_cv.coef_) > 1e-5)
print(f"\nLasso: {n_nonzero_lasso} активных признаков из {X.shape[1]}")
print(f"Ridge: все {n_nonzero_ridge} признаков активны")
print(f"\nОптимальные параметры:")
print(f"Lasso λ = {lasso_cv.alpha_:.6f}")
print(f"Ridge λ = {ridge_cv.alpha_:.2f}")

Рис. 2: Зависимость ошибки валидации от силы регуляризации для Lasso и Ridge. Левый график показывает характерную резкую кривую для L1: при малых λ модель переобучается, при больших — недообучается. Правый график демонстрирует более плавную зависимость для L2 без резких переходов. Вертикальные линии отмечают оптимальные значения λ, минимизирующие валидационную ошибку
Lasso: 0 активных признаков из 28
Ridge: все 28 признаков активны
Оптимальные параметры:
Lasso λ = 0.002121
Ridge λ = 1000.00
В примере выше Lasso занулил все признаки. На практике такое часто происходит из-за нескольких причин, связанных с масштабом данных и особенностями финансовых временных рядов:
Основные причины:
- Целевая переменная (y) очень мала по масштабу. Мы использовали returns.shift(-1), т.е. дневную доходность. Обычно она порядка 0.001–0.02;
- Стандартизированные признаки (X_scaled) имеют среднее 0 и стандартное отклонение 1. Lasso с alpha ~ 0.002 для такого масштаба может быть слишком большим, и оптимизация зануляет все коэффициенты;
- L1 регуляризация чувствительна к масштабу признаков и целевой переменной. Lasso минимизирует ||y — Xw||^2 + alpha * ||w||_1. Если значения y очень маленькие, alpha даже ~0.002 может превышать «сигнал» в данных. Ridge с L2 менее чувствителен, поэтому Ridge выбирает разумное большое alpha;
- Численные эффекты и размерность. Используем много лагов (20) + индикаторов (около 28 признаков). Для маленького y и маленького объема выборки (5 лет дневных данных — примерно 1250 точек) Lasso часто выбирает зануление всех коэффициентов при высоком alpha относительно масштаба ошибки.
Результат показывает драматическое различие в разреженности: Lasso активирует 0 признаков, Ridge сохраняет все с ненулевыми весами. Оптимальные значения λ различаются на порядки из-за разной природы штрафных функций.
Визуализация пути регуляризации демонстрирует компромисс между сложностью модели и качеством fit. При λ → 0 ошибка валидации растет из-за переобучения, при λ → ∞ — из-за недообучения. Оптимум находится в точке минимума U-образной кривой. Для Lasso эта кривая имеет более выраженную структуру с участками плато, соответствующими обнулению очередного признака.
Выбор количества фолдов K влияет на баланс смещения / дисперсии процедуры валидации. Малые K (3-5) снижают вычислительные затраты, но увеличивают вариативность оценки ошибки. Большие K (10-20) дают более стабильную оценку ценой роста времени обучения. Для временных рядов K = 5-7 обеспечивает разумный баланс.
Применение в алгоритмическом трейдинге
Регуляризация играет ключевую роль в построении количественных торговых стратегий. Финансовые данные характеризуются высоким уровнем шума, нестационарностью и ограниченной историей наблюдений, что создает благоприятную среду для переобучения.
Построение предиктивных моделей
Факторные модели доходности составляют основу количественного инвестирования. Типичная постановка: предсказать избыточную доходность актива на основе его характеристик — мультипликаторов оценки, momentum индикаторов, качества отчетности, ликвидности. Количество потенциальных факторов исчисляется десятками или сотнями.
L1-регуляризация идентифицирует подмножество значимых предикторов из расширенного набора кандидатов. Процесс начинается с конструирования широкой палитры факторов: фундаментальные мультипликаторы (P/E, P/B, EV/EBITDA, debt-to-equity), технические индикаторы различных таймфреймов, статистические характеристики ценовых рядов, альтернативные данные. Lasso-регрессия на истории автоматически отбирает 10-20 факторов с наибольшей предсказательной силой.
Отобранные факторы формируют базис для ранжирования активов. Веса факторов определяют скоринговую функцию, которая присваивает каждому активу числовое значение — ожидаемую избыточную доходность. Портфель строится через long позиции в активах с высоким скором и short в активах с низким скором. Разреженность модели упрощает хеджирование факторных экспозиций и мониторинг риска.
Регуляризация также применяется в моделях краткосрочного прогнозирования цен для внутридневной торговли. Микроструктурные признаки (спред bid-ask, глубина стакана, дисбаланс ордеров, объем на разных ценовых уровнях) и лаги доходностей различных таймфреймов создают высокоразмерное пространство. L1 выделяет критичные индикаторы, L2 стабилизирует оценки при мультиколлинеарности микроструктурных переменных.
Стабильность весов во времени
Нестационарность финансовых рынков требует периодического переобучения моделей. Факторные премии меняются в зависимости от рыночного режима:
- Фактор моментума движения цены (Momentum) эффективен на трендовых рынках;
- Фактор возврата к среднему (Mean Reversion) проявляется в боковых рынках;
- Фактор стоимости (Value) активируется после рыночных коррекций.
Модель должна адаптироваться к текущим условиям через обновление весов.
L2-регуляризация обеспечивает плавное изменение коэффициентов при переобучении на скользящем окне. Если окно сдвигается на один день, веса факторов меняются незначительно — на несколько процентов. Это свойство критично для стратегий с ежедневной или еженедельной ребалансировкой портфеля. Радикальное изменение весов приводит к высоким транзакционным издержкам и потенциальному влиянию на котировки (market impact) при ликвидации крупных позиций.
L1-регуляризация создает дискретные изменения набора активных признаков. При сдвиге окна обучения фактор может резко включиться (вес изменяется с 0 до значимой величины) или выключиться. Для долгосрочных стратегий с редкой ребалансировкой это приемлемо. Для высокочастотных стратегий нестабильность набора признаков проблематична.
Компромиссное решение — двухэтапный подход:
- Первый этап использует L1 для идентификации значимых факторов на длинной истории (3-5 лет);
- Второй этап применяет L2 для оценки весов отобранных факторов на коротком скользящем окне (6-12 месяцев).
Набор факторов обновляется раз в квартал, веса — еженедельно. Такая схема сочетает преимущества отбора признаков и стабильности оценок.
Мониторинг дрейфа факторов (factor drift) также требует регуляризации. Если вес фактора в необобщенной модели колеблется на ±50% между соседними периодами переобучения, это сигнализирует о нестабильности. L2-регуляризация демпфирует такие колебания, делая систему более устойчивой к выбросам и режимным сдвигам.
Валидация на новых данных с регуляризацией показывает реалистичные ожидания от стратегии. Переобученная модель без регуляризации демонстрирует отличные метрики на истории, но проваливается в продакшене. Регуляризованная модель жертвует частью исторической доходности ради устойчивости на новых данных. Разница значений коэффициента Шарпа на исторических данных (in-sample) и на новых данных (out-of-sample) должна составлять 20–30%, а не 100–200%.
Заключение
L1 и L2 регуляризация представляют собой фундаментальные инструменты борьбы с переобучением, различающиеся механизмом действия и областями оптимального применения.
- Lasso обнуляет незначимые веса, создавая разреженные интерпретируемые модели с автоматическим отбором признаков — незаменимое свойство при работе с высокоразмерными данными и необходимостью объяснения решений;
- Ridge равномерно сжимает все коэффициенты, обеспечивая стабильность оценок при мультиколлинеарности и сохранение информации от множества слабых сигналов.
Выбор типа регуляризации определяется структурой задачи. В количественном анализе комбинация методов — L1 для отбора факторов на длинной истории и L2 для адаптации весов на скользящем окне — обеспечивает баланс между точностью предсказаний и устойчивостью к рыночным изменениям. Корректная настройка λ через кросс-валидацию превращает регуляризацию из теоретического концепта в практический инструмент построения надежных ML-моделей.