Eu sou bastante novo em aprendizado de máquina, técnicas CART e similares, e espero que minha ingenuidade não seja muito óbvia.
Como a Random Forest lida com estruturas de dados hierárquicas / multiníveis (por exemplo, quando a interação entre níveis é interessante)?
Ou seja, conjuntos de dados com unidades de análise em vários níveis hierárquicos ( por exemplo , alunos aninhados nas escolas, com dados sobre os alunos e as escolas).
Apenas como exemplo, considere um conjunto de dados multinível com indivíduos no primeiro nível ( por exemplo , com dados sobre comportamento de votação, dados demográficos etc.) aninhados nos países do segundo nível (com dados no nível do país; por exemplo , população):
ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54
Vamos dizer que voted
é a variável resposta / dependente e os outros são variáveis preditoras / independentes. Nesses tipos de casos, as margens e os efeitos marginais de uma variável (dependência parcial) para alguma variável de nível superior ( por exemplo , population
) para diferentes variáveis de nível individual etc. podem ser muito interessantes. Em um caso semelhante a esse, glm
é obviamente mais apropriado - mas quando há muitas variáveis, interações e / ou valores ausentes e / ou conjuntos de dados em larga escala etc., glm
não é tão confiável.
Subquestions: A Random Forest pode lidar explicitamente com esse tipo de estrutura de dados de alguma maneira? Se usado independentemente, que tipo de viés ele introduz? Se a Floresta Aleatória não for apropriada, existe algum outro método do tipo ensemble?
(A pergunta Floresta aleatória em dados agrupados é talvez semelhante, mas realmente não responde a isso.)
fonte
Respostas:
Florestas aleatórias funcionariam bem, mas você deve ter muito cuidado ao ajustar os hiperparâmetros (especialmente se desejar uma medida realista do desempenho da generalização). As estimativas de erro OOB tradicionais serão bastante otimistas, pois há "gêmeos" excessivos em seus dados.
Para obter estimativas adequadas de ajuste e generalização, você precisa entender quais são as características de quaisquer novos dados que você espera encontrar. Se você deseja extrapolar para novos países, precisará configurar algum tipo de ajuste baseado em nova amostra (como validação cruzada dobras k) que faz amostragem estratificada por país.
Você também precisa ter cuidado ao codificar os dados em uma floresta aleatória. Parece que
country
é uma variável categórica. Alimentá-lo como numérico seria um pouco difícil, mas não seria impossível (especialmente se você ordenou os IDs por algo útil).fonte
Na verdade, estou trabalhando em um pacote R que executa randomForest como classificador local ao longo de uma hierarquia de classes predefinida. O pacote pode ser encontrado no R Forge em 'hie-ran-forest'. O pacote já está operacional, embora esteja falhando em um dos testes do cran (para MAC), não sei exatamente por que. Além de realmente executar o randomForest para cada nó pai na hierarquia, o pacote também contém funções de previsão e funções de desempenho. Uma das medidas de desempenho é responsável pela estrutura hierárquica de classes.
O pacote aborda a interação entre níveis executando primeiro a floresta aleatória como o classificador local em cada nó pai da hierarquia de classes. Em seguida, a função de previsão recupera a proporção de votos fora da bolsa que cada caso recebeu em cada classificador local. Existem duas maneiras de transformar a proporção de votos em uma classificação precisa: 1. uma regra de maioria gradual - comece com o classificador local mais próximo da raiz da árvore e selecione o filho desse classificador que recebeu a maior proporção de votos. Em seguida, observe todos os filhos do nó selecionado e selecione novamente o filho que recebeu a maior proporção de votos no classificador local relevante. Continue até que um nó do terminal seja alcançado. 2)
A proporção multiplicativa de votos é comparável à proporção de votos produzidos por uma floresta aleatória regular
fonte
Em uma única árvore de classificação, esses grupos são codificados da mesma forma que qualquer outra variável categórica. Isso geralmente é feito como codificação binária ou apenas usando um número inteiro. Existem argumentos diferentes para usar qualquer um. Em florestas aleatórias, se você estiver usando codificação binária, alguns grupos serão incluídos / excluídos para qualquer árvore. Portanto, você pode ter um indicador para
country_2
mas nãocountry_3
. Se você deixar a variável de grupo como um número inteiro, a ordem também poderá afetar o resultado. O que isso significa paracountry > 5
ecountry < 12
? Como isso muda se você rotular aleatoriamente os países com novos números inteiros?A cada passo do crescimento de uma árvore, o algoritmo procura a divisão que otimiza os critérios. Se houver grandes diferenças entre os grupos, a variável de agrupamento será importante, mas se for apenas moderadamente importante e você podar uma árvore, a variável poderá ser essencialmente excluída.
Como a maioria dos outros algoritmos de aprendizado de máquina, o CART e as florestas aleatórias não necessariamente levam em conta a dependência entre as observações dentro dos grupos da maneira que você esperaria em um modelo de regressão hierárquica. Se não é a dependência entre as observações, deve ser capturada pelo algoritmo Floresta aleatória através da geração de muitas árvores que usam a variável de agrupamento. No entanto, se outras variáveis demonstrarem maior discriminação, a variável de agrupamento poderá ser ignorada.
No seu caso,
country
epopulation
são perfeitamente colineares. Não há informações obtidas usando as duas variáveis no seu modelo. Assim, você pode pensar em como um modelo de floresta aleatória trataria essas variáveis em seus dados.fonte