Para minha pesquisa atual, estou usando o método Lasso através do pacote glmnet em R em uma variável dependente binomial.
No glmnet, o lambda ideal é encontrado via validação cruzada e os modelos resultantes podem ser comparados com várias medidas, por exemplo, erro de classificação incorreta ou desvio.
Minha pergunta: como exatamente o desvio é definido no glmnet? Como é calculado?
(No artigo correspondente "Caminhos de regularização para modelos lineares generalizados via descida de coordenadas" de Friedman et al., Encontrei este comentário apenas sobre o desvio usado no cv.glmnet: "desvio médio (menos duas vezes a probabilidade de log no lado de fora) dados) "(p. 17)).
glm
(ou pelo menos deveria ser - há apenas uma definição de desvio que eu saiba).Respostas:
Em Friedman, Hastie e Tibshirani (2010) , o desvio de um modelo binomial, para fins de validação cruzada, é calculado como
Dado que este é o artigo citado na documentação para
glmnet
(nas p. 2 e 5), essa é provavelmente a fórmula usada na embalagem.E, de fato, no código fonte da função
cvlognet
, os resíduos de desvio para a resposta são calculados comoonde
predmat
é simplesmentee transmitido da
cv.glmnet
função encolsing . Usei o código-fonte disponível na página da JStatSoft para o jornal e não sei como esse código está atualizado. O código para este pacote é surpreendentemente simples e legível; você sempre pode verificar por si mesmo digitandoglmnet:::cv.glmnet
.fonte
Além da resposta do @shadowtalker, quando eu estava usando o pacote glmnet, sinto que o desvio na validação cruzada é de alguma forma normalizado.
Ref: documento de desvio R
porque se eu fizer a divisão,
o resultado é
o que é muito próximo do $ cvm adequado.
Pode ser o que o comentário de @Hong Ooi disse sobre esta questão:
/programming/43468665/poisson-deviance-glmnet
fonte