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

Одна строка поворачивает прямую

Возьмём реальный вечерний час велопроката — все 730730 наблюдений в 17:00, температура в градусах и число поездок. Прямая наименьших квадратов даёт прирост 14,7414{,}74 поездки на градус. Теперь в одной строке — той, где было холодно, +2,34+2{,}34 °C, и город накатал скромные 159 поездок, — оператор ошибся регистром и вписал 2159. На семистах тридцати строках наклон почти не шелохнулся: 14,2414{,}24, потеря 3,4%3{,}4\%. Одна ячейка тонет в толпе.

Но таблицы редко бывают такими полными. Возьмём случайные 6060 вечерних часов (seed 51) — ровно тот размер, на котором работает медицинский пример из последнего раздела урока. Там та же прямая даёт 13,7013{,}70, а после той же опечатки — 6,976{,}97: 49%49\% зависимости исчезло из-за одной ячейки. По шести seed падение наклона лежит между 30%30\% и 72%72\% — величина эффекта зависит от того, какие 60 часов достались, но не его знак и не его порядок. Дальше в этом разделе мы работаем с этими 60 строками, потому что на них видно глазом то, что на 730 строках прячется в третьем знаке.

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

Посмотрим на источник силы. Для одного наблюдения вклад в градиент равен

w12(yiwxi)2=(yiwxi)xi=eixi.\frac{\partial}{\partial w}\,\tfrac12\bigl(y_i-w^\top x_i\bigr)^2 =-\bigl(y_i-w^\top x_i\bigr)x_i=-e_i\,x_i .

Тяга пропорциональна остатку eie_i и не имеет потолка. Удвоив ошибку в строке, мы удваиваем её голос; увеличив в сто раз — даём ей сто голосов. Наклон поворачивается ровно туда, куда тянет самый громкий крикун.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Точечная диаграмма шестидесяти вечерних часов велопроката по температуре: жёлтая точка поднята на 2000, красная прямая МНК легла заметно положе серой штриховой, зелёная прямая Хьюбера идёт почти вдоль серой штриховой
Рис. 51.1. Одна испорченная строка убрала 49 % наклона МНК

Случайные 60 вечерних часов велопроката (seed 51). Жёлтая точка — та же холодная строка, поднятая на 2000. Красная прямая наименьших квадратов уходит за ней и теряет 49%49\% наклона (13,706,9713{,}70\to6{,}97). Зелёная прямая Хьюбера остаётся почти там же, где серая штриховая — подгонка по нетронутым данным: 13,5113{,}51 против 13,7013{,}70.

Медиана против среднего

Разберём простейший случай: модель без признаков, одна константа cc. Для суммы квадратов

ddci(yic)2=2i(yic)=0c=yˉ.\frac{d}{dc}\sum_i(y_i-c)^2=-2\sum_i(y_i-c)=0 \quad\Longrightarrow\quad c^\star=\bar y .

Для суммы модулей производная считается по кускам и равна разности числа точек справа и слева:

ddciyic=#{yi<c}#{yi>c},\frac{d}{dc}\sum_i|y_i-c|=\#\{y_i<c\}-\#\{y_i>c\},

Эта производная существует всюду, кроме самих точек yiy_i; она кусочно постоянна, скачет на каждой точке выборки и меняет знак ровно в медиане. При чётном nn она обращается в ноль на всём отрезке между двумя средними порядковыми значениями — там и лежит множество минимумов. При нечётном nn в самой медиане производной нет: слева она отрицательна, справа положительна, — и минимум достигается именно там. Здесь важна не формула, а её геометрия: модуль знает только направление промаха, а не его величину.

Классическая иллюстрация — набор 0,0,0,0,M0,0,0,0,M. Среднее равно M/5M/5 и уезжает в бесконечность вместе с MM; медиана равна нулю при любом MM. Долю выборки, которую оценка выдерживает без разрушения, называют точкой отказа: у среднего она нулевая, у медианы — половина.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева график: среднее набора из четырёх нулей и M растёт линейно по M, медиана остаётся нулём; справа столбики предельной доли загрязнения: ноль процентов у среднего и пятьдесят у медианы
Рис. 51.2. Среднее уезжает за выбросом, медиана стоит

Набор 0,0,0,0,M0,0,0,0,M: среднее растёт линейно по MM, медиана не двигается вовсе. Справа — предельная доля испорченных наблюдений, которую оценка переносит без катастрофы. Ноль процентов против пятидесяти.

Хьюбер соединяет две геометрии

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

Проверим склейку в точке e=δe=\delta. Значения совпадают: 12δ2=δ(δ12δ)\tfrac12\delta^2=\delta(\delta-\tfrac12\delta). Производные тоже:

ρδ(e)={e,eδ,δsign(e),e>δ  =  clip(e,δ,δ).\rho_\delta'(e)= \begin{cases} e,&|e|\leq\delta,\\ \delta\operatorname{sign}(e),&|e|>\delta \end{cases} \;=\;\operatorname{clip}(e,-\delta,\delta).

Производная — это и есть сила, с которой наблюдение тянет параметры. У квадрата она не ограничена, у Хьюбера упирается в потолок δ\delta. Далёкая точка не теряет голос совсем, но и не получает мегафон.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Верхняя панель: параболический квадрат, линейный модуль и функция Хьюбера с порогом два; нижняя панель: их производные, у квадрата прямая без границ, у модуля ступенька, у Хьюбера ограниченная сверху и снизу линия
Рис. 51.3. Три штрафа и три силы тяги

Сверху три штрафа за один и тот же промах, снизу их производные. У квадрата сила растёт без границ; у модуля она мгновенно прыгает от 1-1 до +1+1; у Хьюбера плавно растёт до δ\delta и там останавливается. Ограниченная производная и есть техническое определение робастности.

Минимизировать iρδ(yiwxi)\sum_i\rho_\delta(y_i-w^\top x_i) удобно повторным взвешенным МНК. Приравняв градиент нулю, получаем

iψδ(ei)xi=0,ψδ(e)=clip(e,δ,δ),\sum_i \psi_\delta(e_i)\,x_i=0,\qquad \psi_\delta(e)=\operatorname{clip}(e,-\delta,\delta),

а это то же самое, что взвешенные нормальные уравнения с весами ui=ψδ(ei)/ei=min(1,δ/ei)u_i=\psi_\delta(e_i)/e_i=\min(1,\delta/|e_i|):

(XUX)w=XUy,U=diag(ui).\bigl(X^\top U X\bigr)w=X^\top U y,\qquad U=\operatorname{diag}(u_i).

Веса зависят от остатков, остатки от весов, поэтому шаги повторяют до сходимости. Строка с промахом в пять порогов получает вес 0,20{,}2: её не выбрасывают, её приглушают.

Порог измеряют в единицах разброса

Число δ\delta нельзя назначить абстрактно: остаток в 200 поездок велопроката и остаток в 200 рублей — разные события. Порог задают в единицах масштаба остатков, причём масштаб тоже нужен робастный, иначе выброс раздует ту самую величину, по которой мы собирались его ловить.

Стандартное отклонение не годится: оно само построено на квадратах. Берут медиану абсолютных отклонений

MAD=medieimedjej,σ^=1,4826MAD.\mathrm{MAD}=\operatorname{med}_i\bigl|e_i-\operatorname{med}_j e_j\bigr|, \qquad \hat\sigma=1{,}4826\cdot\mathrm{MAD}.

Множитель 1,48261{,}4826 подобран так, чтобы при точно нормальном шуме σ^\hat\sigma оценивала настоящее σ\sigma: для N(0,σ2)N(0,\sigma^2) выполняется medZ=Φ1(0,75)σ0,6745σ\operatorname{med}|Z|=\Phi^{-1}(0{,}75)\,\sigma\approx0{,}6745\sigma, а 1/0,67451,48261/0{,}6745\approx1{,}4826.

На наших 60 вечерних часах MAD=130\mathrm{MAD}=130 поездок, значит σ^193\hat\sigma\approx193. Стандартный выбор δ=1,35σ^261\delta=1{,}35\hat\sigma\approx261 оставляет в линейной зоне около 13%13\% наблюдений — то есть подозрительной считается примерно каждая восьмая строка, остальные обрабатываются точно так же, как в обычном МНК.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева гистограмма остатков велопроката с вертикальными линиями на одной, 1,35 и трёх сигмах; справа кривая доли точек за порогом, падающая с 90 процентов до нуля, с отметкой 13 процентов при 1,35 сигмы
Рис. 51.4. Порог δ в единицах робастного масштаба

Слева — распределение остатков и три порога, отложенные в единицах σ^=1,4826MAD\hat\sigma=1{,}4826\cdot\mathrm{MAD}. Справа — доля наблюдений, попадающих в линейную (то есть приглушённую) зону. При δ=1,35σ^\delta=1{,}35\hat\sigma приглушены 13%13\% строк; при δ>2,5σ^\delta>2{,}5\hat\sigma метод почти неотличим от МНК.

Выброс по ответу и рычаг по признаку

Робастная ошибка защищает от необычного yy. Но бывает необычный xx. Вспомним матрицу проектирования из урока 49: прогноз есть y^=Hy\widehat y=Hy, где

H=X(XX)1X,y^iyi=hii,ihii=p  (при полном ранге X).H=X\bigl(X^\top X\bigr)^{-1}X^\top,\qquad \frac{\partial\widehat y_i}{\partial y_i}=h_{ii},\qquad \sum_i h_{ii}=p\ \ \text{(при полном ранге }X).

Равенство ihii=p\sum_i h_{ii}=p — это след проектора: trH\operatorname{tr}H равен размерности того подпространства, на которое HH проектирует, и она равна pp ровно тогда, когда столбцы XX линейно независимы. Диагональ hiih_{ii} и называют рычагом: она говорит, какую долю собственного ответа точка тянет на себя. При pp параметрах и nn строках средний рычаг равен p/np/n; строка с hiih_{ii} в несколько раз выше среднего опасна независимо от того, какова её ошибка.

Добавим к нашим 60 вечерним часам одну строку с температурой 4545 °C, какой в таблице нет вовсе, и правдоподобным на вид числом поездок — 14001400. Её рычаг h=0,14h=0{,}14 при медианном 0,0250{,}025 — почти в шесть раз больше типичного. Наклон МНК уезжает с 13,7013{,}70 до 16,4116{,}41. А Хьюбер? До 16,2916{,}29. Он не спас — но не потому, что приглушать было нечего.

Посмотрим честно. Остаток этой строки после подгонки равен 483483 поездки при 2σ^=3872\hat\sigma=387: он второй по модулю среди всех 61 и стоит выше порога. Хьюбер её и правда приглушает — вес δ/e=261/491=0,53\delta/|e|=261/491=0{,}53, ровно вдвое. Но вклад строки в наклон пропорционален не только весу, а произведению ui(xixˉ)2u_i\,(x_i-\bar x)^2, и второй множитель у неё в 13,913{,}9 раза больше медианного. Приглушение вдвое против рычага в четырнадцать раз — этого мало. Робастность по остатку ограничивает голос строки, но не её позицию.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева точечная диаграмма шестидесяти одной точки с одной точкой при 45 градусах: и красная прямая МНК, и зелёная прямая Хьюбера повернулись к ней; справа диаграмма рычага против модуля остатка, выделенная точка стоит справа с рычагом 0,14 при медиане 0,025 и остатком 483 выше штриховой линии два сигма на уровне 387
Рис. 51.5. Высокий рычаг ломает обе прямые

Точка с редким значением признака поворачивает обе прямые почти одинаково: 16,416{,}4 у МНК и 16,316{,}3 у Хьюбера. Справа видно, почему приглушение не спасло: рычаг у неё в шесть раз выше типичного, и хотя остаток 483483 заметно выше порога 2σ^=3872\hat\sigma=387 и Хьюбер режет её вес вдвое, множитель (xxˉ)2(x-\bar x)^2 у этой строки в четырнадцать раз больше типичного. Робастность по остатку — не броня против необычного xx.

Когда коэффициенты не определены данными

Вторая болезнь живёт в столбцах. Возьмём реальную таблицу диабета: 442 больных, десять признаков, среди них два показателя крови — общий холестерин s1 и липопротеины низкой плотности s2. Их корреляция равна 0,8970{,}897: почти одна и та же величина, записанная дважды. Корреляция не меняется при z-стандартизации — она инвариантна к сдвигу и положительному растяжению каждого столбца; стандартизация меняет масштаб коэффициентов, а не силу связи.

Метод наименьших квадратов отвечает на такую таблицу вызывающе:

w^s1=37,7,w^s2=+22,7.\widehat w_{s1}=-37{,}7,\qquad \widehat w_{s2}=+22{,}7 .

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

Чтобы понять причину, доведём ситуацию до предела. Пусть одна и та же площадь записана дважды: x1x_1 — в квадратных метрах, x2x_2 — в квадратных футах. Фут равен 0,30480{,}3048 метра, поэтому 1 м2=1/0,30482=10,7641\ \text{м}^2=1/0{,}3048^2=10{,}764 фут², и x2=10,764x1x_2=10{,}764\,x_1. Тогда

y^=w1x1+w2x2=(w1+10,764w2)x1,\widehat y=w_1x_1+w_2x_2=(w_1+10{,}764\,w_2)\,x_1 ,

и любая пара с одной и той же комбинацией w1+10,764w2w_1+10{,}764\,w_2 даёт одинаковый прогноз. Матрица XXX^\top X вырождена, решений бесконечно много. При почти дублированных столбцах решение формально единственно, но ковариация оценок

Cov(w^)=σ2(XX)1при Cov(ε)=σ2I и фиксированной X\operatorname{Cov}(\widehat w)=\sigma^2\bigl(X^\top X\bigr)^{-1} \qquad\text{при }\operatorname{Cov}(\varepsilon)=\sigma^2I \text{ и фиксированной }X

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

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева облако точек s1 против s2 вытянуто вдоль диагонали с корреляцией 0,897; справа контуры ошибки в плоскости весов образуют длинную наклонную долину, точки решений МНК, ridge с альфой 10 и 100 лежат вдоль неё
Рис. 51.6. Корреляция 0,897 разводит коэффициенты на −37,7 и +22,7

Слева: два признака почти повторяют друг друга. Справа: линии уровня ошибки в плоскости (ws1,ws2)(w_{s1},w_{s2}) вытянуты в узкую долину — вдоль неё прогноз почти не меняется, а веса меняются на десятки единиц. Решение МНК сидит в дальнем конце долины; штраф стягивает его к началу координат.

Ridge поднимает диагональ

Добавим к ошибке штраф за длину вектора весов:

w^λ=argminw{1nyXw22+λw22}.\widehat w_\lambda=\arg\min_w\Bigl\{\tfrac1n\|y-Xw\|_2^2+\lambda\|w\|_2^2\Bigr\}.

Обе части гладкие, поэтому просто приравняем градиент нулю:

2nX(yXw)+2λw=0(XX+nλI)w^λ=Xy.-\tfrac2n X^\top(y-Xw)+2\lambda w=0 \quad\Longrightarrow\quad \bigl(X^\top X+n\lambda I\bigr)\widehat w_\lambda=X^\top y .

Матрица XXX^\top X симметрична и неотрицательно определена; прибавление nλIn\lambda I делает её строго положительно определённой, а значит обратимой при любом λ>0\lambda>0. Задача, у которой не было единственного решения, его получает. В библиотеках чаще пишут α=nλ\alpha=n\lambda, и дальше мы держимся этой записи: α\alpha — то, что прибавляется к диагонали.

Что происходит с нашими двумя показателями крови:

α=10:ws1=11,3, ws2=+1,8;α=100:ws1=2,1, ws2=3,7.\alpha=10:\quad w_{s1}=-11{,}3,\ w_{s2}=+1{,}8; \qquad \alpha=100:\quad w_{s1}=-2{,}1,\ w_{s2}=-3{,}7 .

Пара перестала воевать. При α=100\alpha=100 оба коэффициента маленькие и отрицательные — теперь их можно читать как «повышенные липиды слегка связаны с худшим исходом», а не как гигантские силы разного знака.

Собственные значения и число обусловленности

Формула (XX+αI)1(X^\top X+\alpha I)^{-1} становится прозрачной в собственном базисе. Пусть XX=VΛVX^\top X=V\Lambda V^\top с собственными значениями dj2d_j^2 (это квадраты сингулярных чисел из урока 38). Тогда в координатах VV

w^λ,j(V)=dj2dj2+αw^OLS,j(V).\widehat w_{\lambda,j}^{\,(V)} =\frac{d_j^2}{d_j^2+\alpha}\cdot\widehat w_{\mathrm{OLS},j}^{\,(V)} .

Каждое собственное направление сжимается своим множителем. Там, где данных много (dj2αd_j^2\gg\alpha), множитель близок к единице и ridge почти ничего не трогает. Там, где направление плохо освещено данными (dj2αd_j^2\ll\alpha), множитель близок к нулю, и штраф просто гасит шум. Это избирательное лечение, а не общее затупление модели.

Для нашей таблицы собственные значения лежат между 3,783{,}78 и 1778,71778{,}7, то есть число обусловленности

κ(XX)=dmax2dmin2=1778,703,78470.\kappa\bigl(X^\top X\bigr)=\frac{d_{\max}^2}{d_{\min}^2} =\frac{1778{,}70}{3{,}78}\approx470 .

Здесь стоит быть точным в том, что именно усиливается. Число обусловленности самой матрицы признаков равно κ(X)=dmax/dmin=470=21,7\kappa(X)=d_{\max}/d_{\min}=\sqrt{470}=21{,}7, и именно оно управляет тем, как шум в ответах yy переходит в шум в коэффициентах. Квадрат κ(XX)=κ(X)2=470\kappa(X^\top X)=\kappa(X)^2=470 появляется, когда возмущают саму матрицу XX (или когда решают нормальные уравнения численно, в лоб). Спутав эти два числа, читатель завышает чувствительность вдвое по логарифмической шкале.

После добавки α\alpha оно становится κα=(dmax2+α)/(dmin2+α)\kappa_\alpha=(d^2_{\max}+\alpha)/(d^2_{\min}+\alpha) и падает: до 129,8129{,}8 при α=10\alpha=10, до 18,118{,}1 при α=100\alpha=100 и до 1,401{,}40 при α=4420\alpha=4420 (это λ=10\lambda=10 в записи со средним по nn). Геометрия из урока 36 здесь буквальна: κ\kappa — вытянутость эллипса, в который преобразование переводит окружность, и ridge делает этот эллипс круглее.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева спектр десяти собственных значений в логарифмической шкале и те же значения после прибавления 100 и 4420; справа кривая числа обусловленности, падающая с 470 до 1,4 с отметками при альфа 10, 100 и 4420
Рис. 51.7. Ridge поднимает малые собственные значения

Слева: наименьшее собственное значение 3,783{,}78 поднимается добавкой к диагонали, наибольшее почти не замечает её. Справа: число обусловленности падает с 470470 до 1,401{,}40. Чем ближе κ\kappa к единице, тем меньше шум в ответах превращается в шум в коэффициентах.

Ограничение вместо штрафа: форма Иванова

Тот же метод можно записать иначе — не как штраф, а как ограничение:

minw 1nyXw22при условииw2c.\min_w\ \tfrac1n\|y-Xw\|_2^2 \quad\text{при условии}\quad \|w\|_2\leq c .

Две записи связаны множителем Лагранжа из урока 23: каждому cc отвечает своё λ\lambda, и обратно. Но геометрически формулировка с ограничением честнее: мы прямо говорим, в каком множестве ищем ответ, и рисуем это множество — шар для L2L_2, ромб для L1L_1.

Именно так к регуляризации подошёл ленинградский и свердловский математик Валентин Константинович Иванов. В начале 1960-х он изучал уравнения, у которых решение существует, но не устойчиво: сколь угодно малое изменение правой части уводит ответ сколь угодно далеко. Иванов показал, что устойчивость восстанавливается, если заранее сузить множество допустимых решений до компактного — например, потребовать ограниченности нормы. Так появилось понятие условно-корректной задачи и метод, который сегодня называют регуляризацией Иванова.

Рядом работала вся советская школа некорректных задач: Андрей Николаевич Тихонов, чей стабилизирующий функционал мы разбирали в уроке 23, и Михаил Михайлович Лаврентьев, изучавший условную устойчивость обратных задач геофизики. Наш λw2\lambda\|w\|^2 — это тихоновский штраф, а wc\|w\|\leq c — ивановское ограничение; одна и та же идея с двух сторон.

Lasso создаёт нули

Заменим шар ромбом, то есть w22\|w\|_2^2 на w1\|w\|_1:

w^λ=argminw{12nyXw22+λjwj}.\widehat w_\lambda=\arg\min_w \Bigl\{\tfrac1{2n}\|y-Xw\|_2^2+\lambda\sum_j|w_j|\Bigr\}.

Разберём один коэффициент. Пусть столбцы ортогональны и нормированы так, что XX=nIX^\top X=nI (после z-стандартизации xj22=n\|x_j\|_2^2=n автоматически, остаётся потребовать ортогональность). Тогда

12nyXw22=const+j[12wj2wj(Xy)jn]=const+j12(wjw^OLS,j)2,\tfrac1{2n}\|y-Xw\|_2^2 =\mathrm{const}+\sum_j\Bigl[\tfrac12 w_j^2-w_j\,\tfrac{(X^\top y)_j}{n}\Bigr] =\mathrm{const}+\sum_j\tfrac12\bigl(w_j-\widehat w_{\mathrm{OLS},j}\bigr)^2,

потому что при XX=nIX^\top X=nI решение МНК равно (Xy)j/n(X^\top y)_j/n. Задача распадается на pp независимых скалярных, и каждая из них — это

f(w)=12(wa)2+λw,a=w^OLS,j.f(w)=\tfrac12(w-a)^2+\lambda|w|,\qquad a=\widehat w_{\mathrm{OLS},j} .

(Если XX=diag(cj)X^\top X=\operatorname{diag}(c_j) без общего множителя, задача тоже распадается, но порог у каждой координаты свой и равен nλ/cjn\lambda/c_j.)

При w>0w>0 производная равна wa+λ=0w-a+\lambda=0, откуда w=aλw=a-\lambda — но это годится, только если a>λa>\lambda. При w<0w<0 симметрично w=a+λw=a+\lambda при a<λa<-\lambda. В нуле производной нет: слева наклон равен aλ-a-\lambda, справа a+λ-a+\lambda. Ноль оптимален ровно тогда, когда слева спуск идёт вниз, а справа вверх, то есть при aλ|a|\leq\lambda. Собирая:

w=sign(a)max(aλ,0)  =:  Sλ(a).w^\star=\operatorname{sign}(a)\max\bigl(|a|-\lambda,\,0\bigr) \;=:\;S_\lambda(a).

Эта операция — мягкий порог. Ridge в той же нормировке решает 12(wa)2+λw2\tfrac12(w-a)^2+\lambda w^2; приравнивая производную нулю, получаем (wa)+2λw=0(w-a)+2\lambda w=0, то есть

w=a1+2λw^\star=\frac{a}{1+2\lambda}

— множитель, который никогда не даёт ровного нуля. (Двойка здесь не украшение: она приходит из производной λw2\lambda w^2. В записи с 1/n1/n и без множителя 12\tfrac12 у квадрата ошибки тот же вывод даёт a/(1+λ)a/(1+\lambda) — сравнивать формулы можно только внутри одной нормировки.) Разница не в силе сжатия, а в её форме: L1L_1 вычитает постоянную величину, L2L_2 делит.

Ноль делает метод, а не сам штраф

Мы сказали: «lasso зануляет коэффициенты». Строго говоря, это неправда: зануляет не сам штраф, а способ, которым мы ищем минимум. Проверить легко — решим одну и ту же задачу двумя способами.

У модуля w|w| в нуле нет производной: слева наклон 1-1, справа +1+1. Первый способ — не обращать на это внимания: в нуле взять любое число между 1-1 и +1+1 и делать обычный шаг wk+1=wkαkgkw_{k+1}=w_k-\alpha_k g_k. Такой шаг попадает ровно в ноль только чудом — это всё равно что бросать камешек и надеяться, что он остановится точно на черте.

Второй способ — шагать в два приёма. Сначала обычный шаг по гладкой части (без штрафа), а потом штраф применяется отдельно, одной операцией: всё, что по модулю меньше порога, обнуляется, а остальное придвигается к нулю на величину порога:

wk+1=Sαλ(wkαf(wk)),Sκ(v)=sign(v)max(vκ, 0).w_{k+1}=S_{\alpha\lambda}\bigl(w_k-\alpha\nabla f(w_k)\bigr), \qquad S_\kappa(v)=\operatorname{sign}(v)\cdot\max\bigl(|v|-\kappa,\ 0\bigr).

Это тот самый мягкий порог, который мы получили выше из геометрии ромба. Он не приближается к нулю постепенно — он в него защёлкивает. Отсюда и точные нули: не потому, что так устроен штраф, а потому, что так устроен последний шаг.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева число ровно нулевых весов по шагам в логарифмической шкале: у шага с порогом оно ступенями растёт до трёх, у обычного шага остаётся нулём всё время; справа модули десяти коэффициентов, у шага с порогом три квадрата лежат ровно на линии нуля, а точки обычного шага до неё не доходят, наименьшая равна ноль целых тридцать восемь тысячных процента
Рис. 51.8. Одна задача, два метода, разная разреженность

Реальный диабет, λ=1\lambda=1, оба способа стартуют из нуля. Шаг с порогом набирает три точных нуля к сотому шагу; обычный шаг не даёт ни одного никогда. При этом значения цели почти совпадают: 1533,771533{,}77 против 1535,301535{,}30. То есть по качеству решения способы неразличимы, а по смыслу ответа — совершенно разные: у обычного шага наименьший вес равен 0,000380{,}00038, и «выбросить признак» на этом основании нельзя.

Путь lasso: кто представляет группу

В уроке 23 мы уже строили путь lasso на этой же таблице и смотрели, какие признаки выживают дольше всех. Ответ был: bmi, s5 и bp — индекс массы тела, показатель липидного обмена и давление. Здесь нас занимает другой вопрос, который тогда остался за кадром: что происходит внутри группы похожих признаков и насколько устойчив выбор представителя.

Проследим пару s1/s2 вдоль пути. Первым из них в модель входит s1 при α3,2\alpha\approx3{,}2; s2 молчит почти до самого конца и появляется лишь при α0,25\alpha\approx0{,}25 — предпоследним из всех десяти признаков. При α=1\alpha=1 картина такая:

ws1=4,84,ws2=0,ненулевых весов 7.w_{s1}=-4{,}84,\qquad w_{s2}=0,\qquad \text{ненулевых весов }7 .

Lasso выбрал одного делегата от коррелированной пары и отправил второго в ноль. Это удобно для чтения, но обманчиво: нулевой коэффициент s2 не означает, что липопротеины не связаны с исходом. Он означает, что их вклад уже учтён соседним столбцом.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Верхняя панель: траектории десяти коэффициентов лассо по логарифмической оси штрафа, выделены bmi, bp, s5, s1 и s2, отмечены моменты входа s1 при 3,2 и s2 при 0,25; нижняя панель: ступенчатый счётчик числа ненулевых весов, проходящий все значения от нуля при сильном штрафе до десяти при слабом, с одной узкой просадкой до девяти между альфа 0,065 и 0,099
Рис. 51.9. Кто из пары s1/s2 представляет группу

Траектории коэффициентов вдоль пути штрафа. Первыми входят bmi, s5 и bp, и надолго остаются единственными. Из коррелированной пары s1 появляется рано и сразу с большим весом; s2 ждёт почти до нулевого штрафа. Внизу — счётчик ненулевых весов: при сильном штрафе он равен нулю, при ослаблении растёт до десяти, проходя по дороге все промежуточные значения. Монотонным он не обязан быть: на узкой полосе α\alpha от 0,0650{,}065 до 0,0990{,}099 ненулевых девять, а по обе стороны от неё — десять. Там коэффициент s3 пересекает ноль и ненадолго исчезает.

Насколько устойчив такой выбор? Пересоберите выборку — уберите половину строк или добавьте немного шума измерения, — и делегатом может стать s2, а s1 уйти в ноль. Прогноз при этом почти не изменится, а список «важных признаков» изменится полностью. Отсюда практическое правило: разреженность читают по частоте попадания признака в модель на многих подвыборках, а не по одному запуску.

Elastic net удерживает группу

Если жаль терять группу целиком, штрафы складывают:

w^=argminw{12nyXw22+α(γw1+1γ2w22)},γ[0,1].\widehat w=\arg\min_w \Bigl\{\tfrac1{2n}\|y-Xw\|_2^2 +\alpha\Bigl(\gamma\|w\|_1+\tfrac{1-\gamma}{2}\|w\|_2^2\Bigr)\Bigr\}, \qquad \gamma\in[0,1].

Квадратичная часть делает задачу строго выпуклой, поэтому у неё единственное решение даже при точно совпадающих столбцах, а модульная часть сохраняет способность зануления. С этой смесью связывают свойство группировки: Цзоу и Хасти доказали оценку

w^iw^jy22(1ρij)α(1γ),|\widehat w_i-\widehat w_j|\leq \frac{\|y\|_2\sqrt{2(1-\rho_{ij})}}{\alpha(1-\gamma)},

и у неё есть условия: столбцы должны быть стандартизованы, а корреляция ρij\rho_{ij} — положительна. Это верхняя граница, а не обещание близости: она говорит, что при ρ1\rho\to1 коэффициенты обязаны совпасть, но ничего не обещает при ρ=0,9\rho=0{,}9. При ρ1\rho\to-1 сближаются не wiw_i и wjw_j, а wiw_i и wj-w_j.

Чистый предел виден на точно совпадающих столбцах. Продублируем s1 в таблице: elastic net при α=1, γ=0,5\alpha=1,\ \gamma=0{,}5 делит вес поровну (0,17-0{,}17 и 0,17-0{,}17), а lasso раскладывает как придётся — 0,12-0{,}12 и 4,72-4{,}72.

Теперь сравним на настоящей таблице, причём при равной L1L_1-силе: elastic net с α=1, γ=0,5\alpha=1,\ \gamma=0{,}5 несёт перед w1\|w\|_1 множитель 0,50{,}5, значит его честный соперник — lasso с α=0,5\alpha=0{,}5, а не с α=1\alpha=1.

EN: ws1=0,24, ws2=2,37, ненулевых 10;lasso0,5: ws1=7,76, ws2=0, ненулевых 8.\text{EN}:\ w_{s1}=-0{,}24,\ w_{s2}=-2{,}37,\ \text{ненулевых }10; \qquad \text{lasso}_{0{,}5}:\ w_{s1}=-7{,}76,\ w_{s2}=0,\ \text{ненулевых }8 .

Оба показателя крови остались в модели у смеси и с согласованными знаками — и это не артефакт сравнения: lasso той же L1L_1-силы всё равно выбрасывает s2 (вместе с age). Но заметьте, чего здесь нет: коэффициенты пары не сблизились — 0,24-0{,}24 и 2,37-2{,}37 отличаются в десять раз. Группировка при ρ=0,897\rho=0{,}897 означает «оба живы», а не «оба равны». Для справки: lasso с α=1\alpha=1 отбросил бы s2, age и s4, оставив s1 с весом 4,84-4{,}84.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Столбиковая диаграмма десяти коэффициентов: красные столбики лассо с нулями у age и s2, зелёные столбики elastic net без нулей, выделена полоса с признаками s1 и s2
Рис. 51.10. При одинаковой L₁-силе ромб теряет s2, а смесь его удерживает

Красные столбики — lasso с α=0,5\alpha=0{,}5, зелёные — elastic net с α=1\alpha=1 и γ=0,5\gamma=0{,}5: у обоих множитель перед w1\|w\|_1 равен 0,50{,}5, то есть L1L_1-сила одинакова. Lasso обнулил age и s2; смесь оставила все десять признаков. В выделенной полосе видно главное различие: пара s1/s2 жива целиком — хотя и очень неравными весами.

Штраф как априорное распределение

У обоих штрафов есть вероятностное прочтение. Запишем логарифм апостериорной плотности при нормальном шуме и нормальном априорном распределении весов wN(0,τ2I)w\sim N(0,\tau^2I):

logp(wy)=12σ2yXw2212τ2w22+const.\log p(w\mid y)= -\frac{1}{2\sigma^2}\|y-Xw\|_2^2 -\frac{1}{2\tau^2}\|w\|_2^2+\mathrm{const}.

Максимум по ww (оценка MAP) — это минимум ненормированной суммы квадратов yXw22\|y-Xw\|_2^2 плюс штраф с коэффициентом σ2/τ2\sigma^2/\tau^2. Чтобы не путать буквы, вспомним обозначения урока: α\alpha — то, что прибавляется к диагонали XXX^\top X, а λ=α/n\lambda=\alpha/n — множитель при w2\|w\|^2 в функционале со средним 1nyXw2\tfrac1n\|y-Xw\|^2. В этих обозначениях

α=σ2τ2,λ=σ2nτ2.\alpha=\frac{\sigma^2}{\tau^2},\qquad \lambda=\frac{\sigma^2}{n\tau^2}.

Разница не косметическая: при n=442n=442 одно и то же априорное распределение даёт λ\lambda в 442 раза меньше, чем α\alpha.

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

Для lasso роль prior играет распределение Лапласа p(wj)exp(wj/b)p(w_j)\propto\exp(-|w_j|/b): у него острый пик в нуле, поэтому апостериорный максимум охотно садится ровно на ноль.

MAP — только вершина апостериорного распределения, одна точка вместо всей картины неопределённости. Что теряется при таком сжатии и как выглядит полный ответ, разбирает урок 52. Полезно помнить: выбирая λ\lambda по кросс-валидации, мы фактически подбираем prior по данным — приём законный, но уже не вполне байесовский.

Как честно выбирать штраф

Величину α\alpha не выводят из формулы — её выбирают по данным, которых модель не видела. Пятикратная кросс-валидация на таблице диабета даёт

ROLS2=0,489,Rridge,α=1002=0,483,Rlasso,α=12=0,490.R^2_{\mathrm{OLS}}=0{,}489,\qquad R^2_{\mathrm{ridge},\,\alpha=100}=0{,}483,\qquad R^2_{\mathrm{lasso},\,\alpha=1}=0{,}490 .

Честный вывод: при 442 строках и десяти признаках регуляризация почти ничего не даёт. Строк много, столбцов мало, МНК и сам справляется. Красивая история про пользу штрафа здесь не подтверждается, и это тоже результат.

Теперь уменьшим обучающую выборку до 60 больных — режим, в котором работает почти любое медицинское исследование. Оценим по двум сотням бутстреп-повторов разброс прогноза и полную ошибку на отложенных данных:

α=0,1: MSE=4623, Var=523, смещение2+шум=4100;\alpha=0{,}1:\ \mathrm{MSE}=4623,\ \mathrm{Var}=523,\ \text{смещение}^2{+}\text{шум}=4100; α=63: MSE=3829, Var=124, смещение2+шум=3704.\alpha=63:\ \mathrm{MSE}=3829,\ \mathrm{Var}=124,\ \text{смещение}^2{+}\text{шум}=3704 .

Здесь надо остановиться и прочитать числа, а не учебник. Разброс упал в 4,24{,}2 раза — это ожидаемо. Но смещение вместе с шумом тоже упало, с 41004100 до 37043704, примерно на десятую часть. Классическая картинка «платим смещением за устойчивость» на этом участке просто не работает: при n=60n=60 и p=10p=10 нерегуляризованная подгонка настолько неустойчива, что даже её средний по бутстрепу прогноз промахивается сильнее, чем средний прогноз слегка стянутой модели. Штраф здесь бесплатен.

Плата приходит позже. При α=104\alpha=10^4 смещение с шумом вырастает до 58675867, а полная ошибка — до 59715971: тут уже видна честная цена сжатия. Вот та самая U-образная кривая, ради которой всё и затевалось; просто её левая ветвь образована падением обеих составляющих сразу, а не борьбой одной против другой.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Три кривые по логарифмической оси штрафа: смещение в квадрате плюс шум сначала слегка падает с 4100 до 3704, а затем резко растёт до 5867; разброс оценки монотонно падает от 523 примерно до 100; полная ошибка образует U с минимумом около альфа 63
Рис. 51.11. Сначала падают обе составляющие, цена приходит справа

Обучение по 60 больным. Жёлтая кривая — разброс прогноза по бутстреп-повторам, синяя — смещение вместе с неустранимым шумом, красная — их сумма. Синяя кривая до минимума слегка снижается (410037044100\to3704) и только потом резко идёт вверх (5867\to5867). Минимум суммы при α63\alpha\approx63: ошибка 38293829 против 46234623 у почти нерегуляризованной модели.

Три правила честного выбора. Первое: стандартизацию признаков обучают внутри каждого train-fold, иначе среднее и разброс validation-части просачиваются в обучение. Второе: сетку α\alpha берут логарифмическую и достаточно широкую, чтобы минимум оказался внутри, а не на краю. Третье: если сеток и моделей перебрано много, лучший validation-результат сам становится оптимистичным, и окончательную оценку берут на отложенной test-части ровно один раз — этой ловушке посвящён урок 63.

Робастность как свойство всей процедуры

Ничто не мешает лечить обе болезни разом:

minw 1niρδ(yiwxi)+λw22.\min_w\ \frac1n\sum_i\rho_\delta\bigl(y_i-w^\top x_i\bigr)+\lambda\|w\|_2^2 .

Первое слагаемое ограничивает влияние больших остатков, второе стабилизирует плохо определённые направления. Задача остаётся выпуклой, решается тем же взвешенным МНК с добавкой к диагонали.

Но и эта комбинация не броня. Она не спасает от высокого рычага, от ошибок в самих признаках, от зависимости строк (соседние часы велопроката коррелируют между собой), от сдвига популяции между обучением и применением. Устойчивая функция потерь — один слой защиты, а не весь доспех.

Поэтому робастность проверяют экспериментом, а не выбором формулы. Полезный набор проб: удалить 1%1\% самых влиятельных строк по расстоянию Кука и переобучить; обучиться на первом году данных и проверить на втором; изменить кодирование редких категорий; добавить к признакам шум измерения нужного масштаба; повторить весь конвейер на бутстреп-выборках и посмотреть на разброс выводов. Если после любой из этих проб содержательный вывод переворачивается, одна средняя метрика скрывала хрупкость.

Лаборатория сжатия

Путь коэффициентов и робастная прямая

Загружается живая иллюстрация…

В первой сцене — та самая таблица диабета со z-стандартизованными признаками. Оставьте режим ridge, уведите ползунок в самый левый край (log10α=4\log_{10}\alpha=-4) и убедитесь, что пара s1/s2 показывает 37,7-37{,}7 и +22,7+22{,}7 — те самые числа, с которых начался разговор о коллинеарности. Затем ведите ползунок вправо и следите не за общей картинкой, а за двумя фиолетовыми столбиками. В режиме ridge они сходятся плавно; переключите на lasso — и увидите, как счётчик ненулевых весов падает ступеньками, а s2 исчезает раньше s1. Найдите штраф, при котором в модели остаётся ровно три признака (log10α1,25\log_{10}\alpha\approx1{,}25, то есть α18\alpha\approx18), и сравните его R2R^2 на обучении с полным: 0,3920{,}392 против 0,5180{,}518.

Во второй сцене возьмитесь за жёлтую точку и тащите её вверх. Красная прямая квадратичной ошибки поедет за ней сразу; зелёная прямая Хьюбера будет держаться. Теперь увеличивайте порог δ\delta и следите за наклоном Хьюбера в показаниях. Для исходного положения точки (строка поднята на 2000) при δ=1,35σ^\delta=1{,}35\hat\sigma он равен 12,912{,}9, при δ=4σ^\delta=4\hat\sigma — ещё 10,310{,}3, и только начиная с δ=8σ^\delta=8\hat\sigma он в точности совпадает с МНК-овскими 7,07{,}0: порог должен перекрыть остаток выброса, а вообще говоря совпадение с МНК — это предел δ\delta\to\infty. Утащите точку выше, и граница уедет вместе с ней. Затем утащите её далеко вправо по температуре и посмотрите, как обе прямые поворачиваются вместе.

Что делать с плохо определённым

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

Есть и третья ситуация, которую легко спутать с первыми двумя: новая популяция. Если строки перестали приходить из того же распределения, ни ρδ\rho_\delta, ни λw2\lambda\|w\|^2 не помогут, потому что менять надо не оценку, а модель мира. Умение различить «опечатка», «дублированный признак» и «другой мир» стоит дороже любой формулы сжатия — а формулы, к счастью, выводятся за полстраницы.

Задачи