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β∥22​. Це еліпсоїд у багатовимірному просторі. Коли ми додаємо обмеження на норму коефіцієнтів, оптимум зміщується.

Для 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)β^​j​=sign(β^​jOLS​)⋅max(0,∣β^​jOLS​∣−λ)

Де β^jOLS hat{beta}_j^{text{OLS}} β^​jOLS​ — оцінка звичайної регресії, а λ 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−4 до 102 10^2 102 або ширше.

У нашій практиці ми стикалися з випадком, коли прогнозували відтік клієнтів телеком-компанії за 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 році.

Leave a Reply

Your email address will not be published. Required fields are marked *