Quero usar a regressão Lasso ou cume para um modelo com mais de 50.000 variáveis. Quero fazê-lo usando o pacote de software em R. Como posso estimar o parâmetro de encolhimento ( )?
Edições:
Aqui está o ponto que eu cheguei:
set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000, replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)
mydf <- data.frame(Y, X)
require(MASS)
lm.ridge(Y ~ ., mydf)
plot(lm.ridge(Y ~ ., mydf,
lambda = seq(0,0.1,0.001)))
Minha pergunta é: Como sei qual é melhor para o meu modelo?
Respostas:
A funçãoλ ℓ1 ℓ1 ℓ2 α
cv.glmnet
do pacote R glmnet faz a validação cruzada automática em uma grade de valores usada para problemas de regressão normalizados . Em particular, para o laço. O pacote glmnet também suporta a penalidade líquida elástica mais geral , que é uma combinação das e . A partir da versão 1.7.3. do pacote que parâmetro igual a 0 fornece regressão de crista (pelo menos, essa funcionalidade não foi documentada até recentemente).ℓ 1 ℓ 1 ℓ 2 αA validação cruzada é uma estimativa do erro de generalização esperado para cada e podem ser escolhidos como o minimizador dessa estimativa. A função retorna dois valores de . O minimizador, e o sempre maior , que é uma opção heurística de produzindo um modelo menos complexo, para o qual o desempenho em termos de erro de generalização esperado estimado está dentro de um erro padrão do mínimo. Diferentes opções de funções de perda para medir o erro de generalização são possíveis no pacote glmnet. O argumento especifica a função de perda.λ λ λλ λ λ λ
cv.glmnet
lambda.min
lambda.1se
type.measure
Como alternativa, o pacote R mgcv contém amplas possibilidades de estimativa com penalização quadrática, incluindo seleção automática dos parâmetros de penalidade. Os métodos implementados incluem validação cruzada generalizada e REML, conforme mencionado em um comentário. Mais detalhes podem ser encontrados no livro dos autores do pacote: Wood, SN (2006) Modelos Aditivos Generalizados: uma introdução ao R, CRC.
fonte
cv.glmnet
retorna dois valores para , e ( “one-padrão de erro” regra).lambda.min
lambda.1se
Esta resposta é específica do MATLAB, no entanto, os conceitos básicos devem ser bastante semelhantes ao que você está acostumado com R ...
No caso do MATLAB, você tem a opção de executar o laço com a validação cruzada ativada.
Se você fizer isso, a função laço reportará dois valores críticos de parâmetros
Você também recebe um gráfico pequeno e agradável que pode ser usado para inspecionar a relação entre lambda e CVMSE
Em geral, você escolhe um valor de lambda que fica entre a linha azul e a linha verde.
A postagem do blog a seguir inclui algum código de demonstração com base em alguns exemplos em
Tibshirani, R. (1996). Retração e seleção de regressão através do laço. J. Royal. Statist. Soc B., vol. 58, No. 1, páginas 267-288).
http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/
fonte
rms
rms
pentrace
fonte