Qual é o menor

14

Defina a estimativa do laço onde a i ^ {th} linha x_i \ in \ mathbb {R} ^ p da matriz de design X \ in \ mathbb {R} ^ {n \ times p} é um vetor de covariáveis ​​para explicar a resposta estocástica y_i (para i = 1, \ pontos n ).

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

Sabemos que para λ1nXTy , a estimativa do laço β^λ=0 . (Veja, por exemplo, o escopo do parâmetro de ajuste Lasso e Ridge .) Em outra notação, isso está expressando que λmax=1nXTy . Observe que λmax=supβ^λ0λ.Podemos ver isso visualmente com a seguinte imagem exibindo o caminho da solução do laço:

caminho da solução do laço

Observe que no distante lado direito da trama, todos os coeficientes são zero. Isso acontece no ponto λmax descrito acima.

A partir deste enredo, nós também notar que na distante lado esquerdo, todos do coeficiente são diferentes de zero: o que é o valor de em que qualquer componente de é inicialmente zero? Ou seja, o que igual a, como uma função de e ? Estou interessado em uma solução de formulário fechado. Em particular, não estou interessado em uma solução algorítmica, como, por exemplo, sugerir que o LARS poderia encontrar o nó através da computação.p X X min = min jλβ^λXy

λmin=minjs.t.β^j=0λ
Xy

Apesar dos meus interesses, parece que pode não estar disponível em formato fechado, pois, caso contrário, os pacotes computacionais do laço provavelmente tirariam vantagem disso ao determinar a profundidade do parâmetro de ajuste durante a validação cruzada. À luz disso, estou interessado em qualquer coisa que possa ser teoricamente mostrada sobre e (ainda) particularmente interessada em um formulário fechado. λ m i nλminλmin

user795305
fonte
Isto é afirmado e comprovado no artigo glmnet
Matthew Drury
@MatthewDrury Obrigado por compartilhar isso! No entanto, este documento não parece compartilhar o que você sugere que eles façam. Em particular, observe que meu é o . λ minλmaxλmin
user795305
Tem certeza de que precisamos da tag [tuning-parameter]?
Ameba diz Reinstate Monica
1
você tem razão, geralmente não existe um formulário fechado para a solução do laço (consulte stats.stackexchange.com/questions/174003/… ). no entanto, o lars indica pelo menos o que está acontecendo e sob quais condições exatas / quando você pode adicionar / excluir uma variável. Eu acho que algo assim é o melhor que você pode obter.
ChRrr 7/07
1
@chRrr Não sei se é completamente justo dizer: sabemos que para . Ou seja, no caso extremo da solução ser 0, temos uma forma fechada. Estou perguntando se semelhante é verdade no caso extremo da estimativa do laço ser densa (ou seja, sem zeros). Na verdade, eu nem estou interessado nas entradas exatas de --- apenas se elas são zero ou não. X1β^λ=0 p Xλ1nXtyβ^λ
user795305

Respostas:

15

A estimativa do laço descrita na pergunta é o equivalente multiplicador de lagrange do seguinte problema de otimização:

minimize f(β) subject to g(β)t

f(β)=12n||yXβ||22g(β)=||β||1

Essa otimização tem uma representação geométrica de encontrar o ponto de contato entre uma esfera multidimensional e um politopo (estendido pelos vetores de X). A superfície do politopo representa . O quadrado do raio da esfera representa a função e é minimizado quando as superfícies entram em contato.g(β)f(β)

As imagens abaixo fornecem uma explicação gráfica. As imagens utilizaram o seguinte problema simples com vetores de comprimento 3 (para simplificar, a fim de poder fazer um desenho):

[y1y2y3]=[1.41.840.32]=β1[0.80.60]+β2[00.60.8]+β3[0.60.640.48]+[ϵ1ϵ2ϵ3]
e minimizamos com a restriçãoϵ12+ϵ22+ϵ32abs(β1)+abs(β2)+abs(β3)t

As imagens mostram:

  • A superfície vermelha representa a restrição, um politopo estendido por X.
  • E a superfície verde representa a superfície minimalizada, uma esfera.
  • A linha azul mostra o caminho do laço, as soluções que encontramos quando mudamos ou .tλ
  • O vetor verde mostra a solução OLS (que foi escolhida como ou .y^β1=β2=β3=1 y =x1+x2+x3y^=x1+x2+x3
  • Os três vetores pretos são , e .x1=(0.8,0.6,0)x2=(0,0.6,0.8)x3=(0.6,0.64,0.48)

Mostramos três imagens:

  1. Na primeira imagem, apenas um ponto do politopo está tocando a esfera . Esta imagem demonstra muito bem por que a solução laço não é apenas um múltiplo da solução OLS. A direção da solução OLS é mais forte na soma . Nesse caso, apenas um único é diferente de zero.|β|1βi
  2. Na segunda imagem, uma crista do politopo está tocando a esfera (em dimensões mais altas, obtemos análogos dimensionais mais altos). Nesse caso, vários são diferentes de zero.βi
  3. Na terceira imagem, uma faceta do politopo está tocando a esfera . Nesse caso, todos os são diferentes de zeroβi .

O intervalo de ou para o qual temos o primeiro e o terceiro casos pode ser facilmente calculado devido à sua representação geométrica simples.tλ

Caso 1: apenas um único diferente de zeroβi

O diferente de zero é aquele para o qual o vetor associado tem o valor absoluto mais alto da covariância com (este é o ponto do paralelotopo mais próximo da solução OLS). Podemos calcular o multiplicador de Lagrange abaixo do qual temos pelo menos um diferente de zero usando a derivada comβixiy λ m um x β ± β i β iy^λmaxβ±βi (o sinal depende se aumentamos o na direção negativa ou positiva):βi

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

o que leva a

λmumax=(12n(||y-Xβ||22±βEu)(||β||1)±βEu)=±(12n||y-Xβ||22βEu=±1nxEuy

que é igual a||XTy|| mencionado nos comentários.

onde devemos notar que isso só é verdade para o caso especial em que a ponta do politopo está tocando a esfera ( portanto, essa não é uma solução geral , embora a generalização seja direta).

Caso 3: Todos os são diferentes de zero.βEu

Nesse caso, uma faceta do politopo está tocando a esfera. Então a direção da mudança do caminho do laço é normal para a superfície da faceta específica.

O politopo tem muitas facetas, com contribuições positivas e negativas do . No caso da última etapa do laço, quando a solução do laço estiver próxima da solução ols, as contribuições do deverão ser definidas pelo sinal da solução OLS. O normal da faceta pode ser definido tomando o gradiente da função , o valor da soma de beta no pontoxEuxEu||β(r)||1r , que é:

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

e a mudança equivalente de beta para essa direção é:

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

que depois de alguns truques algébricos com a mudança das transposições (ATBT=[BA]T ) e a distribuição de colchetes se torna

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

normalizamos esta direção:

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

Para encontrar oλmin abaixo do qual todos os coeficientes são diferentes de zero. Só precisamos calcular novamente a partir da solução OLS até o ponto em que um dos coeficientes é zero,

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

, e neste momento avaliamos a derivada (como antes, quando calculamos ). Usamos que, para uma função quadrática, temos :λmaxq(x)=2q(1)x

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

Imagens

um ponto do politopo está tocando a esfera, um único é diferente de zero:βi

primeiro passo do caminho do laço

uma crista (ou difere em várias dimensões) do pólipo está tocando a esfera, muitos são diferentes de zero:βi

meio do caminho do laço

uma faceta do politopo está tocando a esfera, todos são diferentes de zero:βi

etapa final do caminho do laço

Exemplo de código:

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

nota: essas últimas três linhas são as mais importantes

> 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

Escrito por StackExchangeStrike

Sextus Empiricus
fonte
Obrigado por incluir as edições! Até agora, na minha leitura, estou presa após a subseção "caso 1". O resultado para derivado é incorreto, pois não inclui um valor absoluto ou máximo. Sabemos ainda que há um erro, uma vez que, na derivação, há um erro de sinal, um lugar onde a diferenciabilidade é incorretamente assumida, uma "escolha arbitrária" de para diferenciar em relação a e uma derivada avaliada incorretamente. Para ser franco, não há um sinal " " válido. λmaxi=
user795305
Eu o corrigi com um sinal de menos. A alteração da versão beta pode ser positiva ou negativa. Em relação à máxima e "escolha arbitrária" ... "para a qual o vetor associado tem a maior covariância com "xEuy^
Sextus Empiricus
Obrigado pela atualização! No entanto, ainda existem problemas. Por exemplo, é avaliado incorretamente. βEu__y-Xβ__22
user795305
Se então essa correlação entra na equação porque, se s = 0, em seguida, apenas a alteração de tangente para está a mudar o comprimento do vectorβ=0βi||yXβ||22
=||yXβ||2βi2||yXβ||2
=||ysxi||2s2||yXβ||2
=2cor(xi,y)||xi||2||y||2
=2xiy
sxiyysxi
Sexto Empírico
Ah, ok, então há um limite envolvido no seu argumento! (Você está usando e que um coeficiente é diferente de zero.) Além disso, a segunda igualdade na linha com é enganosa, pois o sinal pode mudar devido à diferenciação do valor absoluto. β=0 0λmax
User795305