Floresta aleatória em dados estruturados em vários níveis / hierárquicos

13

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., glmnã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.)

Mikael Poul Johannesson
fonte
Olá @MikaelAndersson, você encontrou uma solução para as perguntas que levantou? Estou enfrentando uma situação semelhante e espero ouvir sua experiência. Obrigado.
precisa saber é o seguinte

Respostas:

4

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).

Shea Parkes
fonte
Você poderia expandir um pouco o motivo pelo qual as estimativas de erro OOB serão otimistas demais?
dmartin
2
Suponho que o otimismo deles dependa da aparência de novos dados. Se novos dados vierem de outros municípios, essa floresta aleatória provavelmente não funcionaria tão bem quanto os erros de OOB indicam. Isso ocorre porque os erros OOB ainda são provenientes de amostras do mesmo conjunto de condados, por exemplo.
Shea Parkes
3

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

Yoni Gavish
fonte
2
Você pode esclarecer que o seu pacote aborda "interações entre níveis" e, em caso afirmativo, como isso acontece? Apenas dizer que um pacote existe não é muita resposta (não quero ser muito crítico aqui, mas o CV está olhando para construir um repositório permanente de informações de alta qualidade de ML e o fato de um pacote existir não atenda a esse padrão.)
gung - Restabelece Monica
Observe que seu nome de usuário, com um link para sua página de usuário, é automaticamente anexado a todas as postagens feitas aqui. Portanto, não há necessidade de assinar suas postagens - na verdade, preferimos que você não. Se você deseja que as pessoas possam entrar em contato com você, você pode postar um método (por exemplo, seu endereço de email) na sua página de usuário.
gung - Restabelece Monica
Isso é ótimo, obrigado @YoniGavish. Por que não editar sua resposta e adicionar essa informação a ela?
gung - Restabelece Monica
Isso é melhor @gung?
Yoni Gavish
Sim, isso é possível, @YoniGavish, +1. Bem vindo ao site.
gung - Restabelece Monica
3

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_2mas não country_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 para country > 5e country < 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, countrye populationsã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.

Ellis Valentiner
fonte