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?
fonte
m
preditores um por um e ver como a floresta prevê diferentemente parece um pouco caro. Tem que haver uma maneira melhor.Respostas:
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
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
Possui pacotes para R e python , e muitos exemplos se você o pesquisar no google.
fonte