Florestas aleatórias são consideradas caixas pretas, mas recentemente eu estava pensando que conhecimento pode ser obtido de uma floresta aleatória?
O mais óbvio é a importância das variáveis, na variante mais simples isso pode ser feito apenas calculando o número de ocorrências de uma variável.
A segunda coisa que eu estava pensando são interações. Penso que, se o número de árvores for suficientemente grande, o número de ocorrências de pares de variáveis poderá ser testado (algo como independência do qui quadrado). A terceira coisa são as não linearidades das variáveis. Minha primeira idéia foi apenas olhar para um gráfico de uma pontuação Vs variável, mas ainda não tenho certeza se faz algum sentido.
Adicionado 23.01.2012
Motivação
Eu quero usar esse conhecimento para melhorar um modelo de logit. Penso (ou pelo menos espero) que é possível encontrar interações e não linearidades que foram negligenciadas.
fonte
Respostas:
Florestas aleatórias dificilmente são uma caixa preta. Eles são baseados em árvores de decisão, que são muito fáceis de interpretar:
Isso resulta em uma árvore de decisão simples:
Se Petal.Length <4.95, essa árvore classifica a observação como "outra". Se for maior que 4,95, classifica a observação como "virginica". Uma floresta aleatória é simples, uma coleção de muitas dessas árvores, onde cada uma é treinada em um subconjunto aleatório dos dados. Cada árvore "vota" na classificação final de cada observação.
Você pode até extrair árvores individuais da RF e observar sua estrutura. O formato é um pouco diferente do dos
rpart
modelos, mas você pode inspecionar cada árvore, se quiser, e ver como está modelando os dados.Além disso, nenhum modelo é realmente uma caixa preta, porque você pode examinar as respostas previstas versus as respostas reais para cada variável no conjunto de dados. Essa é uma boa ideia, independentemente do tipo de modelo que você está construindo:
Normalizei as variáveis (comprimento e largura da sépala e pétala) para um intervalo de 0 a 1. A resposta também é 0-1, onde 0 é outro e 1 é virginica. Como você pode ver, a floresta aleatória é um bom modelo, mesmo no conjunto de testes.
Além disso, uma floresta aleatória calculará várias medidas de importância variável, que podem ser muito informativas:
Esta tabela representa quanto a remoção de cada variável reduz a precisão do modelo. Por fim, existem muitos outros gráficos que você pode fazer a partir de um modelo de floresta aleatório, para visualizar o que está acontecendo na caixa preta:
Você pode visualizar os arquivos de ajuda de cada uma dessas funções para ter uma idéia melhor do que elas exibem.
fonte
Há algum tempo, tive que justificar um modelo de RF adequado a alguns químicos da minha empresa. Passei bastante tempo tentando diferentes técnicas de visualização. Durante o processo, acidentalmente também inventei algumas novas técnicas que coloquei em um pacote R ( forestFloor ) especificamente para visualizações aleatórias da floresta.
A abordagem clássica são gráficos de dependência parcial suportados por: Rminer (a análise de sensibilidade baseada em dados reinventa a dependência parcial), ou o parcialPlot no pacote randomForest . Acho o pacote de dependência parcial iceBOX como uma maneira elegante de descobrir interações. Não usei o pacote edarf , mas parece ter boas visualizações dedicadas à RF. O pacote ggRandomForest também contém um grande conjunto de visualizações úteis.
Atualmente, o forestFloor suporta objetos randomForest (o suporte para outras implementações de RF está a caminho). Também podem ser computadas contribuições de recursos para árvores com aumento de gradiente, pois essas árvores após o treinamento não são muito diferentes das árvores florestais aleatórias. Portanto, o forestFloor pode suportar o XGBoost no futuro. Gráficos de dependência parcial são completamente invariantes ao modelo.
Todos os pacotes têm em comum a visualização da estrutura de mapeamento geométrico de um modelo, do espaço de recurso ao espaço de destino. Uma curva senoidal y = sin (x) seria um mapeamento de x para y e pode ser plotada em 2D. Plotar diretamente um mapeamento de RF normalmente exigiria muitas dimensões. Em vez disso, a estrutura geral do mapeamento pode ser projetada, fatiada ou decomposta, de modo que toda a estrutura do mapeamento seja resumida em uma sequência de gráficos marginais 2D. Se o seu modelo de RF capturou apenas os principais efeitos e nenhuma interação entre as variáveis, os métodos clássicos de visualização funcionarão perfeitamente. Em seguida, você pode simplificar a estrutura do seu modelo assimy=F(X)≈f1(x1)+f2(x2)+...+fd(xd) . Então, cada função parcial de cada variável pode ser visualizada exatamente como a curva senoidal. Se o seu modelo de RF capturou interações consideráveis, é mais problemático. Fatias 3D da estrutura podem visualizar interações entre dois recursos e a saída. O problema é saber qual combinação de recursos visualizar (o iceBOX soluciona esse problema). Também não é fácil saber se outras interações latentes ainda não são contabilizadas.
No presente trabalho , eu usei uma versão muito inicial de forestFloor para explicar o real relação bioquímica um modelo RF muito pequena tinha capturado. E neste artigo, descrevemos minuciosamente as visualizações de contribuições de recursos, visualizações de florestas aleatórias no chão da floresta .
Eu colei o exemplo simulado do pacote forestFloor, onde mostro como descobrir uma função oculta simulada noisey=x12+sin(x2π)+2∗x3∗x4+
Por fim, o código para parcelas de dependência parcial codificado por A.Liaw descrito por J.Friedman. O que faz bem para os efeitos principais.
fonte
Para complementar essas respostas finas, eu mencionaria o uso de árvores com gradiente (por exemplo, o Pacote GBM em R ). Em R, eu prefiro isso a florestas aleatórias porque valores ausentes são permitidos em comparação com randomForest onde a imputação é necessária. Importância variável e parcelas parciais estão disponíveis (como em randomForest) para ajudar na seleção de recursos e na exploração de transformação não linear em seu modelo de logit. Além disso, a interação variável é abordada com a estatística H de Friedman (
interact.gbm
) com referência dada comoJ.H. Friedman and B.E. Popescu (2005). “Predictive Learning via Rule Ensembles.” Section 8.1
. Uma versão comercial chamada TreeNet está disponível na Salford Systems e esta apresentação em vídeo mostra a opinião deles sobre o vídeo de estimativa de interação variável .fonte
Resposta tardia, mas me deparei com um recente pacote R
forestFloor
(2015) que ajuda você a executar essa tarefa de "desbloquear caixa" de maneira automatizada. Parece muito promissor!Produz os seguintes gráficos:
Ele também fornece visualização tridimensional se você estiver procurando por interações.
fonte
Como mencionado por Zach, uma maneira de entender um modelo é plotar a resposta à medida que os preditores variam. Você pode fazer isso facilmente para "qualquer" modelo com o pacote plotmo R. Por exemplo
que dá
Isso altera uma variável enquanto mantém as outras em seus valores medianos. Para gráficos de interação, ele altera duas variáveis. (Nota adicionada em novembro de 2016:
plotmo
agora também suporta gráficos de dependência parcial.)O exemplo acima usa apenas duas variáveis; modelos mais complicados podem ser visualizados de maneira fragmentada, observando uma ou duas variáveis de cada vez. Como as "outras" variáveis são mantidas em seus valores medianos, isso mostra apenas uma fatia dos dados, mas ainda pode ser útil. Alguns exemplos estão na vinheta do pacote plotmo . Outros exemplos estão no Capítulo 10 de Plotando árvores rpart com o pacote rpart.plot .
fonte
Estou muito interessado nesse tipo de pergunta. Eu acho que há muita informação que podemos obter de uma floresta aleatória.
Sobre as interações, parece que Breiman e Cultier já tentaram analisá -lo, especialmente para RFs de classificação.
Que eu saiba, isso não foi implementado no pacote randomForest R. Talvez porque não seja tão simples e porque o significado de "interações variáveis" seja muito dependente do seu problema.
Sobre a não linearidade, não tenho certeza do que você está procurando, a floresta de regressão é usada para problemas de regressão múltipla não linear, sem antecedentes sobre o tipo de função não linear a ser usada.
fonte
No final do jogo, mas há alguns desenvolvimentos nessa frente, por exemplo, LIME e SHAP . Além disso, um pacote que vale a pena conferir é o DALEX (em particular se estiver usando R, mas de qualquer forma contiver boas folhas de dicas etc.), embora não pareça cobrir as interações no momento. E tudo isso é independente de modelo, portanto funcionará para florestas aleatórias, GBMs, redes neurais, etc.
fonte
Uma leve modificação de florestas aleatórias que fornecem mais informações sobre os dados são os métodos de floresta causal recentemente desenvolvidos. Veja o pacote R do GRF e o documento motivador aqui . A idéia é usar os métodos aleatórios de linha de base da floresta para encontrar heterogeneidade nos efeitos causais.
Um artigo anterior ( aqui ) fornece uma abordagem detalhada de uma floresta causal simples. A página 9 do artigo fornece um procedimento passo a passo para o cultivo de uma árvore causal, que pode ser expandida para uma floresta da maneira usual.
Equação 4:
Equação 5:
fonte
Resposta tardia relacionada à minha pergunta aqui ( podemos tornar a floresta aleatória 100% interpretável fixando a semente? ):
fonte