Какое наименьшее

14

β^λ=argminβRp12nyXβ22+λβ1,
ithxiRpXRn×pyii=1,n

Мы знаем, что для λ1nXTy , оценка Лассо β^λ=0 . (См., Например, область настройки параметров Лассо и Риджа .) В других обозначениях это означает, что λmax=1nXTy . Обратите внимание, что λмaИксзнак равновирβ^λ0λ,Мы видим это визуально на следующем изображении, показывающем путь решения лассо:

путь решения лассо

Обратите внимание, что в крайней правой части графика все коэффициенты равны нулю. Это происходит в точке λмaИкс описанной выше.

Из этого графика мы также заметили, что в крайней левой части все коэффициенты отличны от нуля: каково значение при котором любой компонент изначально равен нулю? То есть, чему равна в зависимости от и ? Я заинтересован в закрытом виде решения. В частности, меня не интересует алгоритмическое решение, такое как, например, предположение, что LARS может найти узел посредством вычислений.& beta ; А ,λβ^λ

λминзнак равноминJs,T,β^Jзнак равно0λ
уИксY

Несмотря на мои интересы, кажется, что может быть недоступен в закрытой форме, поскольку в противном случае вычислительные пакеты lasso, вероятно, воспользуются этим при определении глубины параметра настройки во время перекрестной проверки. В свете этого меня интересует все, что можно теоретически показать о и (еще) особенно интересует закрытая форма. λ m i nλмяNλмяN

user795305
источник
Об этом говорится и доказывается в статье glmnet
Мэтью Друри,
@ MatthewDrury Спасибо, что поделились этим! Тем не менее, эта статья, кажется, не разделяет того, что вы предлагаете сделать. В частности, обратите внимание, что мой - это их . λ minλМаксимумλмин
user795305
Вы уверены, что нам нужен тег [tuning-parameter]?
амеба говорит восстановить
1
вы правы, закрытой формы для решения лассо вообще не существует (см. stats.stackexchange.com/questions/174003/… ). однако, по крайней мере, lars сообщает вам, что происходит и при каких условиях / в какое время вы можете добавить / удалить переменную. Я думаю, что-то вроде этого - лучшее, что вы можете получить.
ЧРрр
1
@chRrr Я не уверен, что это справедливо сказать: мы знаем, что для . То есть в крайнем случае, когда решение равно 0, мы имеем замкнутую форму. Я спрашиваю, верно ли подобное в крайнем случае, когда оценка Лассо является плотной (то есть без нулей). На самом деле, меня даже не интересуют точные записи - просто они равны нулю или нет. А1β^λ=0 & beta ; Аλ1nXtyβ^λ
user795305

Ответы:

15

Оценка Лассо, описанная в этом вопросе, является множителем Лагранжа, эквивалентным следующей задаче оптимизации:

свести к минимуму е(β) при условии грамм(β)T

е(β)знак равно12N||Y-Иксβ||22грамм(β)знак равно||β||1

Эта оптимизация имеет геометрическое представление о нахождении точки контакта между многомерной сферой и многогранником (натянутым на векторы X). Поверхность многогранника представляет собой . Квадрат радиуса сферы представляет функцию и минимизируется при контакте поверхностей.грамм(β)е(β)

Изображения ниже дают графическое объяснение. Изображения использовали следующую простую задачу с векторами длины 3 (для простоты, чтобы иметь возможность сделать рисунок):

[y1y2y3]=[1.41.840.32]=β1[0.80.60]+β2[00.60.8]+β3[0.60.640.48]+[ϵ1ϵ2ϵ3]
ϵ 2 1 + ε 2 2 + ε 2 3 и мы минимизируем с ограничениемϵ12+ϵ22+ϵ32abs(β1)+abs(β2)+abs(β3)t

Изображения показывают:

  • Красная поверхность изображает ограничение, многогранник, натянутый на X.
  • А зеленая поверхность изображает минимизированную поверхность, сферу.
  • Синяя линия показывает путь лассо, решения, которые мы находим при изменении или .tλ
  • Зеленый вектор показывает решение OLS (которое было выбрано как или .y^β1=β2=β3=1 у =х1+х2+х3Y^знак равноИкс1+Икс2+Икс3
  • Три черных вектора: , и .Икс1знак равно(0.8,0.6,0)Икс2знак равно(0,0.6,0.8)x3=(0.6,0.64,0.48)

Мы показываем три изображения:

  1. На первом изображении только точка многогранника касается сферы . Это изображение очень хорошо демонстрирует, почему решение lasso не просто кратно решению OLS. Направление решения OLS добавляет больше к сумме . В этом случае только один отличен от нуля.|β|1βi
  2. На втором изображении гребень многогранника касается сферы (в более высоких измерениях мы получаем более масштабные аналоги). В этом случае несколько отличны от нуля.βi
  3. На третьем изображении грань многогранника касается сферы . В этом случае все отличны от нуляβi .

Диапазон или для которого мы имеем первый и третий случаи, может быть легко вычислен благодаря их простому геометрическому представлению.tλ

Случай 1: только один ненулевойβi

Ненулевым является тот, для которого связанный вектор имеет наибольшее абсолютное значение ковариации с (это точка параллелотопа, ближайшая к решению OLS). Мы можем вычислить множитель Лагранжа ниже которого у нас есть по крайней мере ненулевое значение , взяв производную с (знак в зависимости от того, увеличиваем ли мы в отрицательном или положительном направлении):βixiу λ м х & beta ; & plusmn ; & beta ; я & beta ; яy^λmaxβ±βiβi

(12n||yXβ||22λ||β||1)±βi=0

что приводит к

λmax=(12n(||yXβ||22±βi)(||β||1)±βi)=±(12n||yXβ||22βi=±1nxiy

что равно упомянутых в комментариях.||XTy||

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

Случай 3: все отличны от нуля.βi

В этом случае грань многогранника касается сферы. Тогда направление изменения пути лассо перпендикулярно поверхности конкретной грани.

Многогранник имеет много аспектов, с положительным и отрицательным вкладом . В случае последнего шага лассо, когда решение лассо близко к решению ols, вклады должны быть определены знаком решения OLS. Нормаль фасета можно определить, взяв градиент функции , значение суммы беты в точке , которое равно:xixi||β(r)||1r

n=r(||β(r)||1)=r(sign(β^)(XTX)1XTr)=sign(β^)(XTX)1XT

и эквивалентное изменение бета для этого направления:

βlast=(XTX)1Xn=(XTX)1XT[sign(β^)(XTX)1XT]

который после некоторых алгебраических трюков со смещением транспонирует ( ) и распределение скобок становитсяATBT=[BA]T

βlast=(XTX)1sign(β^)

мы нормализуем это направление:

βlast,normalized=βlastβlastsign(β^)

Найти ниже которого все коэффициенты ненулевые. Нам нужно только рассчитать обратно из решения OLS обратно в точку, где один из коэффициентов равен нулю,λmin

d=min(β^βlast,normalized)with the condition that β^βlast,normalized>0

и в этот момент мы оцениваем производную (как и раньше, когда вычисляем ). Мы используем это для квадратичной функции, мы имеем :λmaxq(x)=2q(1)x

λmin=dn||Xβlast,normalized||22

Картинки

точка многогранника касается сферы, одиночный не равен нулю:βi

первый шаг пути лассо

гребень (или разный во многих измерениях) многогранника касается сферы, многие отличны от нуля:βi

середина пути лассо

грань многогранника касается сферы, все отличны от нуля:βi

последний шаг пути лассо

Пример кода:

library(lars)    
data(diabetes)
y <- diabetes$y - mean(diabetes$y)
x <- diabetes$x

# models
lmc <- coef(lm(y~0+x))
modl <- lars(diabetes$x, diabetes$y, type="lasso")

# matrix equation
d_x <- matrix(rep(x[,1],9),length(x[,1])) %*% diag(sign(lmc[-c(1)]/lmc[1]))
x_c = x[,-1]-d_x
y_c = -x[,1]

# solving equation
cof <- coefficients(lm(y_c~0+x_c))
cof <- c(1-sum(cof*sign(lmc[-c(1)]/lmc[1])),cof)

# alternatively the last direction of change in coefficients is found by:
solve(t(x) %*% x) %*% sign(lmc)

# solution by lars package
cof_m <-(coefficients(modl)[13,]-coefficients(modl)[12,])

# last step
dist <- x %*% (cof/sum(cof*sign(lmc[])))
#dist_m <- x %*% (cof_m/sum(cof_m*sign(lmc[]))) #for comparison

# calculate back to zero
shrinking_set <- which(-lmc[]/cof>0)  #only the positive values
step_last <- min((-lmc/cof)[shrinking_set])

d_err_d_beta <- step_last*sum(dist^2)

# compare
modl[4] #all computed lambda
d_err_d_beta  # lambda last change
max(t(x) %*% y) # lambda first change
enter code here

примечание: эти последние три строки являются наиболее важными

> modl[4]            # all computed lambda by algorithm
$lambda
 [1] 949.435260 889.315991 452.900969 316.074053 130.130851  88.782430  68.965221  19.981255   5.477473   5.089179
[11]   2.182250   1.310435

> d_err_d_beta       # lambda last change by calculating only last step
    xhdl 
1.310435 
> max(t(x) %*% y)    # lambda first change by max(x^T y)
[1] 949.4353

Автор StackExchangeStrike

Секст Эмпирик
источник
Спасибо за внесение изменений! До сих пор в моем чтении, я застрял только после подраздела "случай 1". Результат для полученного там, неверен, поскольку он не включает абсолютное значение или максимум. Кроме того, мы знаем, что есть ошибка, так как в деривации есть ошибка знака, место, где ошибочно предполагается дифференцируемость, «произвольный выбор» для дифференцирования по отношению к производной и неверно оцененная производная. Честно говоря, нет ни одного знака " ", который действителен. λМаксимумязнак равно
user795305
Я исправил это со знаком плюс минус. Изменение беты может быть положительным или отрицательным. Относительно максимума и "произвольного выбора" ... ", для которого связанный вектор имеет наибольшую ковариацию с "ИксяY^
Sextus
Спасибо за обновление! Тем не менее, есть еще проблемы. Например, оценен неправильно. βя| |Y-Иксβ| |22
user795305
Если то это соотношение входит в уравнение, поскольку если s = 0 , то только изменение касательной к изменяет длину вектораβ=0βi||yXβ||22
=||yXβ||2βi2||yXβ||2
=||ysxi||2s2||yXβ||2
=2cor(xi,y)||xi||2||y||2
=2xiy
sxiyysxi
Секст Эмпирик
Ах, хорошо, так что в вашем аргументе есть предел! (Вы используете и и коэффициент не равен нулю.) Кроме того, второе равенство в строке с вводит в заблуждение, поскольку знак может измениться из-за дифференциации абсолютного значения. β=0λmax
user795305