Escolhendo o parâmetro de complexidade no CART

16

Na rotina rpart () para criar modelos CART, você especifica o parâmetro de complexidade para o qual deseja remover sua árvore. Eu vi duas recomendações diferentes para escolher o parâmetro de complexidade:

  1. Escolha o parâmetro de complexidade associado ao erro mínimo possível de validação cruzada. Este método é recomendado pelo Quick-R e HSAUR.

  2. Escolha o parâmetro de maior complexidade cujo erro validado cruzado estimado ainda esteja dentro de um SE do erro mínimo validado cruzado possível. Esta é a minha interpretação da documentação do pacote, que diz: "Uma boa escolha de cp para poda geralmente é o valor mais à esquerda para o qual a média está abaixo da linha horizontal" em referência a esse gráfico .

As duas opções de cp produzem árvores bastante diferentes no meu conjunto de dados.

Parece que o primeiro método sempre produzirá uma árvore mais complexa e potencialmente super ajustada. Existem outras vantagens, desvantagens, recomendações na literatura, etc. Devo levar em consideração ao decidir qual método usar? Posso fornecer mais informações sobre o meu problema de modelagem específico, se isso for útil, mas estou tentando manter essa questão ampla o suficiente para ser relevante para outras pessoas.

meia passagem
fonte
O que representa a linha horizontal na plotagem?
Bogdanovist
Acredito que ele represente 1 SE acima do erro mínimo possível de validação cruzada.
meia-passagem
Se você tiver dados suficientes, tente separá-los em um conjunto de dados de treinamento e teste, mesmo para árvores. Isso pode ser especialmente útil se você estiver interessado principalmente em previsão, pois o conjunto de dados de teste fornecerá uma boa estimativa disso. Outra opção é o partypacote que usa testes de significância (geralmente não é algo que eu recomendo, mas parece relevante aqui). Como sempre, porém, o melhor teste é utilidade e senso; isso é especialmente verdade se você estiver interessado principalmente em explicações.
Peter Flom - Restabelece Monica
Minhas desculpas pela resposta lenta. Para esclarecer, pensei que, usando a validação cruzada para calcular o erro em diferentes tamanhos de árvore, eu já havia efetivamente dividido os dados repetidamente em conjuntos de treinamento e teste. Realizar outra divisão de treinamento / teste seria redundante nesse caso? Estou te entendendo mal?
meia-passagem
A divisão dos dados em train / test e a validação cruzada do parâmetro cp usando apenas dados de train reproduzirão um teste de previsão realista (onde você não poderá usar dados futuros para estimar cp). Portanto, o primeiro CV será para cp, o erro de previsão para o modelo geral (incluindo a cp estimada).
21815 Robert Kubrick

Respostas:

6

Na prática, vi as duas abordagens adotadas e acho que geralmente não se espera que seus resultados diferam muito de qualquer maneira.

Dito isto, Hastie e cols. Recomendam a regra do "erro padrão único" nos Elementos de aprendizagem estatística , e eu tendem a confiar no julgamento deles (Seção 7.10, pág. 244 na minha versão). A citação relevante é:

Freqüentemente, uma regra de "erro padrão único" é usada com validação cruzada, na qual escolhemos o modelo mais parcimonioso, cujo erro não passa de um erro padrão acima do erro do melhor modelo ".

Sua intuição sobre por que alguém seguiria a regra de erro padrão único está correta - você faria isso para evitar a seleção de um modelo que superaiba os dados.

Tchotchke
fonte
1

Você deve primeiro começar usando os argumentos minsplit=0e cp=0(parâmetro de complexidade), depois usar as funções plotcp(T.max)e printcp(T.max)escolher o valor cpcorrespondente ao erro relativo mínimo e podar a árvore pela funçãoprune.rpart(T.max, cp=....)

Isso deve lhe proporcionar a árvore de classificação ideal, pois eles tendem a ser otimistas demais.

Ayman Hijazy
fonte