Estou tentando entender a lógica por trás da seleção para frente e para trás (embora eu saiba que existem métodos melhores para seleção de modelo). Na seleção do modelo direto, o processo de seleção é iniciado com um modelo vazio e as variáveis são adicionadas sequencialmente. Na seleção retroativa, o processo de seleção é iniciado com o modelo completo e as variáveis são excluídas sequencialmente.

Pergunta: Com qual modelo a seleção retroativa começa?

É o modelo completo? O modelo vazio? Algo intermediário? Wikipedia e Hastie et al. (2009) – The Elements of Statistical Learning, page 60 estão explicando o método, mas eu não fui capaz de encontrar nada sobre o modelo inicial. Para minha análise, estou usando a função stepAIC do R pacote MASS.

ATUALIZAÇÃO:

Abaixo, você pode encontrar um exemplo em R. A função stepAIC imprime automaticamente cada etapa do processo de seleção no console e parece que a seleção começa com o modelo completo. No entanto, com base na resposta de jjet, não tenho certeza se fiz algo errado.

# Example data N <- 1000000 y <- rnorm(N) x1 <- y + rnorm(N) x2 <- y + rnorm(N) x3 <- y + rnorm(N) x4 <- rnorm(N) x5 <- rnorm(N) x6 <- rnorm(N) data <- data.frame(y, x1, x2, x3, x4, x5, x6) # Selection library("MASS") mod <- lm(y ~., data) stepAIC(mod, direction = "both") 

Comentários

  • Leia o manual: você pode usar o object & scope argumentos para começar com o modelo que você quiser: stepAIC(lm(y~1, data), scope=~x1+x2+x3+x4+x5, direction = "both"). Eu não ' não sei se ' s uma resposta oficial quanto a se " forward-backward " implica um modelo inicial específico, ou qual; mas mesmo se houver, ' d seria sensato não presumir que outras pessoas saibam quando usam a expressão.
  • Obrigado por sua resposta, Scortchi! Eu li o manual antes, mas parece que perdi algumas coisas. Com base no seu comentário e na resposta da ' da jjet, consegui resolver meu problema.

Resposta

Acredito que seleção “forward-backward” é outro nome para seleção “forward-stepwise”. Esta é a abordagem padrão usada pelo stepAIC. Neste procedimento, você começa com um modelo vazio e constrói sequencialmente, como na seleção direta. A única ressalva é que toda vez que você adiciona uma nova variável, $ X_ {new} $, você deve verificar se alguma das outras variáveis que já estão no modelo devem ser descartadas após $ X_ {new} $ ser incluído . Nesta abordagem, você pode acabar pesquisando “não linearmente” em todos os diferentes modelos.

——– EDITAR ——–

O o código R a seguir ilustra a diferença entre as três estratégias de seleção:

# library(MASS) set.seed(1) N <- 200000 y <- rnorm(N) x1 <- y + rnorm(N) x2 <- y + rnorm(N) x3 <- y + rnorm(N) x4 <- rnorm(N) x5 <- rnorm(N) x6 <- x1 + x2 + x3 + rnorm(N) data <- data.frame(y, x1, x2, x3, x4, x5, x6) fit1 <- lm(y ~ ., data) fit2 <- lm(y ~ 1, data) stepAIC(fit1,direction="backward") stepAIC(fit2,direction="forward",scope=list(upper=fit1,lower=fit2)) stepAIC(fit2,direction="both",scope=list(upper=fit1,lower=fit2)) 

Eu modifiquei seu exemplo apenas ligeiramente neste código. Primeiro, eu defini uma semente, então que você pode ver os mesmos dados que usei. Eu também tornei N menor para que o algoritmo seja executado um pouco mais rápido. Eu mantive todas as suas variáveis iguais, exceto para x6. x6 agora é o mais preditivo de y individualmente – isso o tornará o primeiro variável escolhida na seleção forward e forward-stepwise. Mas, uma vez que x1, x2 e x3 entram no modelo, x6 se torna independente de y e deve ser excluído. Você verá que forward-stepwise faz exatamente isso. Ele começa com x6, prossegue para incluir x1, x2 e x3, depois volta e descarta x6 e termina. Se você apenas usar forward, então x6 permanecerá no modelo porque o algoritmo nunca volta a este tipo de verificação de multicolinearidade.

Comentários

  • Obrigado por sua resposta jjet! Faz perfeitamente sentido o que você diz, mas se você executar o código que atualizei acima, parece que a seleção começa com o modelo completo. Fiz algo errado?
  • Apenas um pequeno problema com o seu código. Você escreveu mod < – lm (y ~., Data) seguido por stepAIC (mod, direction = " ambos "). Em sua primeira linha, você ' definiu efetivamente um modelo inicial para incluir todas as variáveis escrevendo " y ~. ". Este é agora o seu ponto de partida para a seleção futura. Em vez disso, você ' vai querer escrever " y ~ 1 " que é apenas um modelo de interceptação – o ponto de partida que você ' está procurando. Eu ' fiz as edições acima com o código R que devem esclarecer isso para você.
  • Muito obrigado pela excelente ajuda!Uma última pergunta: se eu mantiver meu exemplo sem o argumento de escopo e com mod <- lm(y ~., data), ele está realizando uma seleção normal para trás ou está realizando uma seleção para frente e para trás com um modelo inicial completo?
  • O último. Ele ' está retrocedendo usando um modelo inicial que inclui todas as variáveis. Se você não ' não tiver a lista de escopo definida, ela assumirá seu " inferior " modelo é qualquer modelo que você especificou inicialmente e seu modelo " superior " é o modelo completo.

Resposta

A seleção de modelos para frente e para trás são duas abordagens gananciosas para resolver o problema de otimização combinatória de encontrar a combinação ideal de recursos (que é conhecido por ser NP-completo). Portanto, você precisa procurar estratégias subótimas e computacionalmente eficientes. Veja, por exemplo, Métodos de pesquisa flutuantes na seleção de recursos de Pudil et. al.

No método Forward, você começa com um modelo vazio e itera sobre todos os recursos. Para cada recurso, você treina um modelo e seleciona o recurso que produz o melhor modelo de acordo com sua métrica. De maneira semelhante, você prossegue adicionando o próximo recurso que produz a melhor melhoria quando combinado com os já selecionados.

No método reverso, você apenas inverte o procedimento: comece com todos os recursos e remova aquele de forma iterativa cuja remoção menos prejudica o desempenho ou leva à maior melhoria.

Comentários

  • Obrigado por sua resposta jpmuc! No entanto, não tenho certeza se isso responde à minha pergunta original, que era: " Com qual modelo a seleção para frente e para trás começa? " Estou faltando alguma coisa em sua resposta ou você apenas quer esclarecer o procedimento de seleção para frente e para trás em geral?
  • Neste método de seleção de recursos, você não está limitado a um modelo concreto ou conjunto de parâmetros. Você seleciona o conjunto de recursos com os quais pode construir o melhor modelo de um tipo específico (no seu caso, um modelo linear). Isso é melhor ilustrado nestes dois links: stat.columbia.edu/~martin/W2024/R10.pdf e rstudio-pubs-static.s3.amazonaws.com/ …

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *