Estou executando uma regressão logística de rede elástica em um conjunto de dados de assistência médica usando o glmnet
pacote em R selecionando valores lambda em uma grade de de 0 a 1. Meu código abreviado está abaixo:
alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}
que gera o erro cruzado médio validado para cada valor de alfa de a com um incremento de :
[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874
Com base no que li na literatura, a escolha ideal de é onde o erro cv é minimizado. Mas há muita variação nos erros no intervalo de alfas. Estou vendo vários mínimos locais, com um erro mínimo global de para .0.1942612
alpha=0.8
É seguro ir com alpha=0.8
? Ou, dada a variação, devo executar novamente cv.glmnet
com mais dobras de validação cruzada (por exemplo, vez de ) ou talvez um número maior de incrementos de entre e para obter uma imagem clara do caminho do erro cv?alpha=0.0
1.0
cv.glmnet()
sem passar foldids
criado a partir de uma semente aleatória conhecida.
caret
pacote que pode repetir cv e ajustar tanto alpha quanto lambda (suporta processamento multicore!). De memória, acho que aglmnet
documentação desaconselha o ajuste do alfa da maneira que você faz aqui. Ele recomenda manter os foldids fixos se o usuário estiver ajustando para alfa, além do ajuste para lambda fornecido porcv.glmnet
.