Sobes.tech
Middle — Senior

Kodėl L1 reguliavimas nustato kai kurias svorius į nulį, o L2 — ne?

sobes.tech AI

Atsakymas iš AI

L1 reguliavimas (Lasso) prideda prie nuostolių funkcijos visų svorių absoliučių reikšmių sumą (||w||₁), kas sukelia kampinius taškus optimizacijos paviršiuje. Tai skatina, kad galutinis sprendimas turėtų tiksliai nulinę reikšmę kai kuriems svoriams, t.y., juos nulinant, užtikrinant modelio retumą.

L2 reguliavimas (Ridge) prideda svorių kvadratų sumą (||w||₂²), sudarant sklandų parabolinį paviršių be kampų. Dėl to svoriai mažėja, bet retai tampa tiksliai nuliu, nes optimizacija siekia mažų, bet nenulių reikšmių.

Pavyzdys:

import numpy as np
from sklearn.linear_model import Lasso, Ridge

X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([1, 2, 3])

lasso = Lasso(alpha=0.1)
lasso.fit(X, y)
print('L1 svoriai:', lasso.coef_)

ridge = Ridge(alpha=0.1)
ridge.fit(X, y)
print('L2 svoriai:', ridge.coef_)

Čia, L1 gali nustatyti kai kuriuos svorius tiksliai į nulį, o L2 juos tik sumažina.