Quais são as razões teóricas para não lidar com valores ausentes? Máquinas de aumento de gradiente, árvores de regressão lidam com valores ausentes. Por que a Random Forest não faz isso?
Quais são as razões teóricas para não lidar com valores ausentes? Máquinas de aumento de gradiente, árvores de regressão lidam com valores ausentes. Por que a Random Forest não faz isso?
Respostas:
O Gradient Boosting Trees usa árvores CART (em uma configuração padrão, conforme proposto por seus autores). As árvores CART também são usadas em florestas aleatórias. O que @ user777 disse é verdade, que as árvores de RF manipulam valores ausentes por imputação com média, por média / modo aproximado, ou por uma média / modo com base nas proximidades. Esses métodos foram propostos por Breiman e Cutler e são usados para RF. Esta é uma referência dos autores Valores ausentes no conjunto de treinamento .
No entanto, é possível construir um GBM ou RF com outro tipo de árvores de decisão. A substituição usual do CART é C4.5 proposta por Quinlan. Em C4.5, os valores ausentes não são substituídos no conjunto de dados. Em vez disso, a função de impureza calculada leva em consideração os valores ausentes, penalizando a pontuação de impureza com a razão de valores ausentes. No teste, defina a avaliação em um nó que possui um teste com valor ausente, a previsão é criada para cada nó filho e agregada posteriormente (por ponderação).
Agora, em muitas implementações, o C4.5 é usado em vez do CART. O principal motivo é evitar a computação dispendiosa (o CART possui abordagens estatísticas mais rigorosas, que exigem mais computação), os resultados parecem semelhantes, as árvores resultantes são geralmente menores (já que o CART é binário e o C4.5 não). Eu sei que Weka usa essa abordagem. Não conheço outras bibliotecas, mas espero que não seja uma situação singular. Se esse for o caso da sua implementação do GBM, isso seria uma resposta.
"Quais são as [razões] teóricas para a RF não manipular valores ausentes? Máquinas de aumento de gradiente, árvores de regressão manipulam valores ausentes. Por que a Random Forest não faz isso?"
RF faz valores ausentes punho, mas não da mesma forma que CART e outros algoritmos de árvore de decisão semelhantes fazer. O User777 descreve corretamente os dois métodos usados pelo RF para manipular dados ausentes (imputação mediana e / ou medida baseada em proximidade), enquanto Frank Harrell descreve corretamente como os valores ausentes são tratados no CART (divisões substitutas). Para obter mais informações, consulte os links sobre tratamento de dados ausentes para CART (ou seu primo FOSS: RPART ) e RF .
Uma resposta à sua pergunta real é abordada claramente, IMHO, no artigo de Ishwaran et al., De 2008, intitulado Random Survival Forests . Eles fornecem a seguinte explicação plausível para o motivo pelo qual a RF não lida com dados ausentes da mesma maneira que o CART ou classificadores de árvore de decisão única semelhantes:
"Embora a divisão substituta funcione bem para árvores, o método pode não ser adequado para florestas. A velocidade é um problema. Encontrar uma divisão substituta é intensamente computacional e pode se tornar inviável ao cultivar um grande número de árvores, especialmente para árvores totalmente saturadas usadas por árvores. Além disso, divisões substitutas podem nem ser significativas em um paradigma de floresta.O RF seleciona aleatoriamente variáveis ao dividir um nó e, como tal, variáveis dentro de um nó podem não estar correlacionadas e uma divisão substituta razoável pode não existir. a divisão substituta altera a interpretação de uma variável, o que afeta medidas como [Importância variável].
Por esses motivos, é necessária uma estratégia diferente para a RF ".
Isso é um aparte, mas para mim, isso questiona aqueles que afirmam que a RF usa um conjunto de modelos CART. Eu já vi essa afirmação em muitos artigos, mas nunca vi essas declarações terem origem em nenhum texto oficial sobre RF. Por um lado, as árvores em um RF são cultivadas sem poda , o que geralmente não é a abordagem padrão na construção de um modelo CART. Outro motivo seria o que você alude na sua pergunta: o CART e outros conjuntos de árvores de decisão lidam com valores ausentes, enquanto [o original] RF não, pelo menos não internamente como o CART.
Com essas advertências em mente, acho que você poderia dizer que a RF usa um conjunto de árvores de decisão do tipo CART (ou seja, um monte de árvores não podadas, cultivadas na sua extensão máxima, sem a capacidade de lidar com dados ausentes por meio da divisão substituta). Talvez essa seja uma daquelas diferenças semânticas minuciosas, mas acho que vale a pena notar.
EDIT : Na minha nota lateral, que não tem relação com a pergunta real, afirmei que "nunca vi tais declarações originadas em nenhum texto oficial sobre RF". Acontece que Breiman declarou especificamente que as árvores de decisão CART são usadas no algoritmo de RF original:
"A floresta aleatória mais simples, com características aleatórias, é formada selecionando-se aleatoriamente, em cada nó, um pequeno grupo de variáveis de entrada para dividir. Cresça a árvore usando a metodologia CART até o tamanho máximo e não poda". [Minha ênfase]
Fonte: p.9 de Florestas Aleatórias. Breiman (2001)
No entanto, ainda permaneço (ainda que mais precariamente) a noção de que essas são árvores de decisão semelhantes ao CART, pois são cultivadas sem poda, enquanto um CART normalmente nunca é executado nessa configuração, pois quase certamente substituirá seus dados ( daí a poda em primeiro lugar).
A floresta aleatória lida com dados ausentes e há duas maneiras distintas de fazê-lo:
1) Sem imputação de dados ausentes, mas fornecendo inferência. 2) Imputando os dados. Os dados imputados são então utilizados para inferência.
Ambos os métodos são implementados no meu pacote R randomForestSRC (co-escrito com Udaya Kogalur). Primeiro, é importante lembrar que, como as florestas aleatórias empregam seleção aleatória de recursos, os métodos tradicionais de dados ausentes usados por árvores únicas (CART e similares) não se aplicam. Este argumento foi feito em Ishwaran et al. (2008), "Random Survival Forests", Annals of Applied Statistics , 2 , 3 , e bem articulado por um dos comentaristas.
O método (1) é um método "imputação on the fly" (OTFI). Antes de dividir um nó, os dados ausentes para uma variável são imputados ao desenhar aleatoriamente valores de dados não ausentes na bolsa. O objetivo desses dados imputados é possibilitar a designação de casos a nós filhos, caso o nó seja dividido em uma variável com dados ausentes. No entanto, os dados imputados não são usados para calcular a estatística de divisão que usa apenas dados não ausentes. Após uma divisão do nó, os dados imputados são redefinidos como ausentes e o processo é repetido até que os nós do terminal sejam atingidos. O OTFI preserva a integridade dos dados prontos para uso e, portanto, valores de desempenho como importância variável (VIMP) permanecem imparciais. O algoritmo OTFI foi descrito em Ishwaran et al (2008) e implementado no pacote randomSurvivalForest aposentado,
O método (2) é implementado usando a função "impute" no randomForestSRC. Métodos de divisão não supervisionados, randomizados e multivariados para imputar dados estão disponíveis. Por exemplo, a divisão multivariada generaliza o método de imputação missForest altamente bem-sucedido ( Stekhoven & Bühlmann (2012), "MissForest - imputação não paramétrica de valor ausente para dados de tipo misto", Bioinformatics , 28 , 1 ). Chamar a função de imputação com dados ausentes retornará um quadro de dados imputado que pode ser ajustado usando a função de floresta primária "rfsrc".
Uma comparação detalhada dos diferentes algoritmos de dados ausentes da floresta implementados usando "impute" foi descrita em um artigo recente com Fei Tang "Algoritmos aleatórios de dados ausentes da floresta", 2017 . Eu recomendo consultar os arquivos de ajuda de "rfsrc" e "imute" de randomForestSRC para obter mais detalhes sobre imputação e OTFI.
O particionamento recursivo usa divisões substitutas com base em preditores não ausentes que estão correlacionados com o preditor que possui o valor ausente para uma observação. Pareceria possível, em teoria, implementar florestas aleatórias que usem a mesma idéia. Não sei se algum software florestal aleatório o fez.
A Random Forest possui dois métodos para lidar com valores ausentes, de acordo com Leo Breiman e Adele Cutler, que a inventaram.
O primeiro é rápido e sujo: apenas preenche o valor mediano para variáveis contínuas ou o valor não ausente mais comum por classe .
O segundo método preenche os valores ausentes, executa RF e, em seguida, para valores contínuos ausentes, RF calcula a média ponderada por proximidade dos valores ausentes. Então esse processo é repetido várias vezes. Em seguida, o modelo é treinado pela última vez usando o conjunto de dados imputados por RF.
Em vez de usar valores medianos, etc., eu recomendo olhar o pacote missRanger (atualmente em desenvolvimento no Github) ou o pacote R missForest). Ambos os pacotes usam florestas aleatórias para atribuir seus dados primeiro usando um método semelhante à imputação múltipla via equações encadeadas (MICE). Esse seria o método de imputação apropriado a ser usado, pois corresponde estreitamente ao seu modelo de análise real. Você pode usar todos os seus dados sem ter que se preocupar em eliminar linhas individuais devido à falta de observações. Além disso, os valores imputados serão muito mais realistas do que simplesmente selecionar medianas ou modos.
Você pode usar apenas um conjunto de dados imputados preenchidos para suas análises, mas a melhor maneira de incorporar incerteza sobre valores ausentes é executar várias execuções desses métodos de imputação e estimar seu modelo em cada um dos conjuntos de dados resultantes (ou seja, múltiplos imputação) e, em seguida, combine as estimativas usando as regras do Rubin (consulte R package mitools).
Para o CART, você pode aplicar a abordagem MIA (falta de atributos). Ou seja, para preditores categóricos, você codifica ausente como uma categoria separada. Para preditores numéricos, você cria duas novas variáveis para cada variável com falta: uma onde você codifica como -Inf e uma onde você codifica como + Inf. Em seguida, você aplica uma função de floresta aleatória, como de costume, aos seus dados.
Vantagens do MIA: 1) Computacionalmente barato, 2) não gera vários conjuntos de dados e, portanto, modela, como a imputação múltipla (a literatura sobre imputação de dados ausentes geralmente concorda que um conjunto de dados imputado não é suficiente), 3) não requer você escolhe um método estatístico e / ou modelo para imputar os dados.
As funções ctree()
e cforest()
do pacote partykit permitem aplicar o MIA passando ctree_control(MIA = TRUE)
seus control
argumentos.
O programa RuleFit de Jerome Friedman parece usar o MIA para lidar com missões, consulte https://statweb.stanford.edu/~jhf/r-rulefit/rulefit3/RuleFit_help.html#xmiss .
Uma descrição da abordagem MIA pode ser encontrada em Twala et al. (2008):
Twala, BETH, Jones, MC e Hand, DJ (2008). Bons métodos para lidar com dados ausentes nas árvores de decisão. Cartas de reconhecimento de padrões, 29 (7), 950-956.
party
pacote R. Um artigo de blog aqui: exegetic.biz/blog/2013/05/…