Existe uma maneira de explicar uma previsão de um modelo aleatório de floresta?

11

Digamos que eu tenha um modelo de classificação preditiva baseado em uma floresta aleatória (usando o pacote randomForest em R). Eu gostaria de configurá-lo para que os usuários finais possam especificar um item para o qual gerar uma previsão e gerar uma probabilidade de classificação. Até agora, não há problema.

Mas seria útil / interessante poder produzir algo como um gráfico de importância variável, mas para o item específico previsto, não para o conjunto de treinamento. Algo como:

Prevê-se que o item X seja um cão (73% provável),
porque:
Pernas = 4
hálito = mau
Pêlo = curto
Alimento = desagradável

Você entendeu. Existe uma maneira padrão, ou pelo menos justificável, de extrair essas informações de uma floresta aleatória treinada? Em caso afirmativo, alguém tem código que fará isso para o pacote randomForest?

Harlan
fonte
Alguma complexidade ... Você pode imaginar contar o número de vezes que a variável Legs fazia parte do caminho da decisão. Mas você faria isso apenas pelas árvores que previam a resposta da maioria, ou todas elas? Ou a diferença?
Harlan
E alterar todos os mpreditores um por um e ver como a floresta prevê diferentemente parece um pouco caro. Tem que haver uma maneira melhor.
Harlan
meu primeiro pensamento foi saber como o que você quer fazer difere da importância variável dos dados de treinamento? Você quer dizer que, dados os outros valores como eram, qual era a sensibilidade da previsão nas pernas = 4 versus pernas = 2 ou pernas = 0? Você olhou para a função de plotagem parcial no pacote randomforest?
B_Miner
A variável importância é geralmente definida como condicional em todo o conjunto de treinamento (ou na população presumida, ou algo assim). Mas o que eu quero é a importância variável para um único item previsto. Imagine um caso em que a floresta consiste em árvores de decisão muito desequilibradas. A Instância de Teste 1 pode ser explicada por 1 ou muito poucos nós de decisão, enquanto a Instância de Teste 2 pode ser explicada por um conjunto muito maior de nós de decisão. Quero uma versão interpretável para humanos muito simples, como um conjunto de decisões classificadas, as cinco principais que posso fornecer. Para uma única árvore de decisão, eu as leio.
Harlan

Respostas:

3

A primeira idéia é apenas imitar a estratégia de eliminação de importância variável e apenas testar como a mistura de cada atributo degenerará a confiança da floresta na classificação de objetos (no OOB e com algumas repetições obviamente). Isso requer alguma codificação, mas é certamente possível.

No entanto, acho que é apenas uma má ideia - o resultado provavelmente será variável como o inferno (sem estabilizar o impacto da média sobre os objetos), barulhento (para objetos não tão confiantes, os atributos sem sentido podem ter grandes impactos) e difícil de interpretar (duas ou mais regras de cooperação de atributos provavelmente resultarão em impactos aleatórios de cada atributo contribuinte).

Para não deixar uma resposta negativa, prefiro tentar olhar para a matriz de proximidade e os possíveis arquétipos que ela pode revelar - isso parece muito mais estável e direto.


fonte
O ponto de regras cooperativas / preditores correlatos é uma excelente crítica. Para fazer isso funcionar, pode ser necessário treinar a RF em algum tipo de conjunto de variáveis ​​pré-reduzido ou incorporar algum tipo de estratégia de penalização para fazer com que a RF se concentre em um subconjunto de preditores.
Harlan
0

Eu tentaria com o framework lime .

Funciona com muitos modelos (incluindo floresta aleatória). Pode ser usado para interpretação local (isto é, explicando uma única previsão) ou para interpretação global (isto é, explicando um modelo inteiro).

Citando o asbtract

Neste trabalho, propomos o LIME, uma nova técnica de explicação que explica as previsões de qualquer classificador de maneira interpretável e fiel, aprendendo um modelo interpretável localmente em torno da previsão. Também propomos um método para explicar modelos, apresentando previsões individuais representativas e suas explicações de maneira não redundante, enquadrando a tarefa como um problema de otimização submodular.

Possui pacotes para R e python , e muitos exemplos se você o pesquisar no google.

PolBM
fonte