Árvores de inferência condicional versus árvores de decisão tradicionais

97

Alguém pode explicar as principais diferenças entre árvores de inferência condicional ( ctreedo partypacote em R) em comparação com os algoritmos mais tradicionais da árvore de decisão (como rpartem R)?

  1. O que diferencia as árvores de IC?
  2. Forças e fraquezas?

Atualização: Analisei o artigo de Horthorn et al. Que Chi se refere nos comentários. Não fui capaz de segui-lo completamente - alguém pode explicar como as variáveis ​​são selecionadas usando permutações (por exemplo, o que é uma função de influência)?

Obrigado!

B_Miner
fonte
1
Você quer dizer uma explicação que vai além do que é descrito no artigo de Hothorn ? Lembro-me de algumas ilustrações agradáveis ​​de Carolin Strobl na conferência IMPS2009 ; Acho que há algumas apostilas no site dela.
chl
Este link mostra comparação entre várias formas de pacotes árvore de decisão r-bloggers.com/a-brief-tour-of-the-trees-and-forests
Archpaul

Respostas:

93

Pelo que vale a pena:

ambos rparte ctreerecursivamente executam divisões univariadas da variável dependente com base nos valores em um conjunto de covariáveis. rparte algoritmos relacionados geralmente empregam medidas de informação (como o coeficiente de Gini ) para selecionar a covariável atual.

ctree, de acordo com seus autores (consulte os comentários de chl ) evita o seguinte viés de seleção de variável de rpart(e métodos relacionados): Eles tendem a selecionar variáveis ​​com muitas divisões possíveis ou muitos valores ausentes. Diferentemente dos outros, ctreeutiliza um procedimento de teste de significância para selecionar variáveis, em vez de selecionar a variável que maximiza uma medida de informação (por exemplo, coeficiente de Gini).

O teste de significância, ou melhor: os testes de significância múltipla calculados em cada início do algoritmo (selecione covariável - escolha divisão - resposta) são testes de permutação , ou seja, a "distribuição da estatística do teste sob a hipótese nula é obtida calculando-se todos os valores possíveis da estatística de teste sob rearranjos dos rótulos nos pontos de dados observados. " (do artigo da wikipedia).

Agora, a estatística de teste: é calculada a partir de transformações (incluindo identidade, ou seja, sem transformação) da variável dependente e das covariáveis. Você pode escolher várias transformações para as duas variáveis. Para o DV (variável dependente), a transformação é chamada de função de influência sobre a qual você estava perguntando.

Exemplos (retirados do artigo ):

  • se o DV e as covariáveis ​​forem numéricos, você poderá selecionar transformações de identidade e calcular correlações entre o covariável e todas as permutações possíveis dos valores do DV. Então, você calcula o valor- p deste teste de permutação e o compara com os valores- p para outras covariáveis.
  • se o DV e as covariáveis ​​são nominais (categóricas não ordenadas), a estatística do teste é calculada a partir de uma tabela de contingência.
  • você pode criar facilmente outros tipos de estatísticas de teste a partir de qualquer tipo de transformação (incluindo transformação de identidade) desse esquema geral.

pequeno exemplo para um teste de permutação em R:

require(gtools)
dv <- c(1,3,4,5,5); covariate <- c(2,2,5,4,5)
# all possible permutations of dv, length(120):
perms <- permutations(5,5,dv,set=FALSE) 
# now calculate correlations for all perms with covariate:
cors <- apply(perms, 1, function(perms_row) cor(perms_row,covariate)) 
cors <- cors[order(cors)]
# now p-value: compare cor(dv,covariate) with the 
# sorted vector of all permutation correlations
length(cors[cors>=cor(dv,covariate)])/length(cors)
# result: [1] 0.1, i.e. a p-value of .1
# note that this is a one-sided test

Agora, suponha que você tenha um conjunto de covariáveis, não apenas um como acima. Em seguida, calcule os valores de p para cada uma das covariáveis, como no esquema acima, e selecione aquele com o menor valor de p . Você deseja calcular os valores de p em vez das correlações diretamente, porque você pode ter covariáveis ​​de diferentes tipos (por exemplo, numéricos e categóricos).

Depois de selecionar uma covariável, agora explore todas as divisões possíveis (ou muitas vezes um número restrito de todas as divisões possíveis, por exemplo, exigindo um número mínimo de elementos do DV antes da divisão) avaliando novamente um teste baseado em permutação.

ctreevem com várias transformações possíveis para DV e covariáveis ​​(consulte a ajuda Transformationsno partypacote).

então, geralmente, a principal diferença parece ser o ctreeuso de um esquema de seleção covariável baseado na teoria estatística (ou seja, seleção por testes de significância com base na permutação) e, assim, evita um viés potencial rpart, caso contrário eles parecem semelhantes; por exemplo, árvores de inferência condicional podem ser usadas como aprendizes base para florestas aleatórias.

Isso é o mais longe que consigo. Para mais informações, você realmente precisa ler os jornais. Observe que eu recomendo fortemente que você realmente saiba o que está fazendo quando deseja aplicar qualquer tipo de análise estatística.

wolf.rauch
fonte
Portanto, seria justo dizer o seguinte: 1. Em princípio, se testes de significância estivessem disponíveis e fáceis de calcular para Gini, qualquer construtor de árvore de decisão atual poderia ser aumentado com eles; 2. Mas, na prática, eles não estão disponíveis (isto é, muito difíceis / ineficientes para calcular) na maioria dos casos; 3. Os autores das árvores de IC escolheram uma família de critérios de divisão. Essa não é necessariamente a melhor família para a precisão da classificação, mas pelo menos é fácil calcular a significância; 4. E, portanto, um ponto fraco das árvores de IC é que você é obrigado a usar esse critério específico?
SheldonCooper
1
@SheldonCooper: 1. e 2. podem estar um pouco acima da minha cabeça. Eu acho que você está certo sobre 3. e 4.
wolf.rauch
1
(...) e todas as permutações possíveis dos valores do DV "Todas as permutações possíveis dos valores do DV? Demora mais de 130 segundos para encontrar todas as permutações possíveis de 10 elementos. Isso tornaria inúteis as árvores de CI quando você tiver mais de 20 observações - adicionada por um moderador
chl
1
Sinto muito, mas o que significa DV?
Mythicalprogrammer
1
@mythicalprogrammer variável dependente, eu acho
Frikster