Ideias para gerar uma equação de previsão para florestas aleatórias

8

Eu li as seguintes postagens que responderam à pergunta que eu ia fazer:

Use o modelo Floresta aleatória para fazer previsões a partir dos dados do sensor

Árvore de decisão para previsão de saída

Aqui está o que eu fiz até agora: comparei a regressão logística com as florestas aleatórias e a RF superou a logística. Agora, os pesquisadores médicos com quem trabalho querem transformar meus resultados de RF em uma ferramenta de diagnóstico médico. Por exemplo:

Se você é um homem asiático entre 25 e 35 anos, tem vitamina D abaixo de xx e pressão arterial acima de xx, você tem 76% de chance de desenvolver a doença xxx.

No entanto, a RF não se presta a simples equações matemáticas (veja os links acima). Então, eis a minha pergunta: que idéias todos vocês têm para usar a RF para desenvolver uma ferramenta de diagnóstico (sem precisar exportar centenas de árvores).

Aqui estão algumas das minhas idéias:

  1. Use RF para seleção de variáveis ​​e, em seguida, use Logística (usando todas as interações possíveis) para fazer a equação de diagnóstico.
  2. De alguma forma, agregue a floresta de RF em uma "mega árvore", que de alguma forma calcula a média do nó dividido entre as árvores.
  3. Semelhante a # 2 e # 1, use RF para selecionar variáveis ​​(digamos m, total de variáveis), depois construa centenas de árvores de classificação, que usam cada variável de m, e escolha a melhor árvore.

Alguma outra ideia? Além disso, fazer o nº 1 é fácil, mas alguma idéia de como implementar os nºs 2 e 3?

dfife
fonte
Faça uma equação de previsão para cada árvore (serão simples pontos de divisão) e calcule a média das previsões de cada equação? Você obterá uma equação de monstro, mas ela representará totalmente a floresta.
Zach
Boa ideia @Zach. Mas, infelizmente, estou tentando evitar qualquer coisa "monstro".
Dfife 8/10
1
Você se importaria de reafirmar por que florestas aleatórias colocam problemas de implementação para você? Eles não são particularmente intensivos, a menos que você tenha milhares de recursos. Você pode removê-lo, mas é improvável que você tenha uma forma analítica digerível.
Jessica Collins
@ Jacob - O problema é que o RF tem muitas árvores de decisão. Adoraria relatar uma única fórmula (<algumas linhas, se possível) que preveja com a mesma precisão que a RF. Como estou publicando meu trabalho para uma audiência de sofisticação estatística modesta, acho que exportar páginas sobre páginas de árvores limitaria severamente a probabilidade de minhas descobertas serem implementadas em ambientes clínicos.
Dfife 8/10
Eu escrevi uma função para gerar o código SQL para um modelo de floresta aleatório, consulte: gist.github.com/shanebutler
Shane

Respostas:

6

Aqui estão alguns pensamentos:

  1. Todos os modelos de caixa preta podem ser inspecionados de alguma forma. Você pode calcular a importância da variável para cada recurso, por exemplo, ou também pode plotar a resposta prevista e a resposta real para cada recurso ( link );
  2. Você pode pensar em alguma poda do conjunto. Nem todas as árvores da floresta são necessárias e você pode usar apenas algumas. Artigo: [Pesquise a menor floresta aleatória, Zhang]. Caso contrário, apenas Google "poda de ensemble" e veja "Métodos de ensemble: fundamentos e algoritmos", capítulo 6 ;
  3. Você pode criar um único modelo por seleção de recurso, como disse. Caso contrário, você também pode tentar usar o método de Domingos em [Aquisição de conhecimento a partir de exemplos por meio de vários modelos] que consiste em criar um novo conjunto de dados com previsões de caixa preta e construir uma árvore de decisão sobre ele.
  4. Conforme mencionado na resposta desta Stack Exchange, um modelo de árvore pode parecer interpretável, mas é propenso a grandes mudanças apenas devido a pequenas perturbações nos dados de treinamento. Portanto, é melhor usar um modelo de caixa preta. O objetivo final de um usuário final é entender por que um novo registro é classificado como uma classe específica. Você pode pensar em algumas importâncias de recursos apenas para esse registro específico.

Eu iria para 1. ou 2.

Simone
fonte
11

Eu tive que lidar com a mesma situação de usar RF em um ambiente de diagnóstico, com partes interessadas que estão acostumadas a algoritmos que se resumem a uma única equação legível. Descobri que, se você começa explicando uma árvore de decisão simples (aqui você pode usar equações), então é muito complicada e explica as desvantagens do ajuste excessivo, e começa a receber alguns acenos de cabeça. Depois de explicar que muitas árvores pequenas podem atenuar a imprecisão ao serem cultivadas de maneira diferente ("aleatória"), e que elas podem ser tomadas como uma votação ou média de um conjunto para evitar o excesso de ajuste, mas ainda são responsáveis ​​por casos extremos, você entende. Aqui estão alguns slides de exemplo que usei com boa recepção:

Você não pode se afastar das árvores em uma floresta, e são elas que dão ao algoritmo tanta força e robustez preditivas, por isso raramente existe uma solução melhor se a RF estiver funcionando muito bem para você. Os que serão comparados, como o SVM (dependendo dos seus dados), serão igualmente complexos. Você precisa fazê-los entender que qualquer boa solução será uma espécie de caixa preta (para o usuário). Sua melhor jogada é criar uma implementação consumível que não exija mais esforço do que uma única equação exigiria. Eu tive sucesso com a construção de um modelo de RF em Python (via sklearn) e criando uma API REST de servidor da Web simples que carrega esse modelo na memória e aceita as variáveis ​​em um POST para gerar a previsão. Você também pode fazer isso em Java ou R com muita facilidade, ou pular a API e apenas criar um binário / jar executável que aceita os dados como argumentos.

wwwslinger
fonte
Bom ponto! - A agregação dos resultados de RF em uma única equação inevitavelmente perderá algumas de suas vantagens. Eu não tinha pensado nisso.
Dfife 9/10
2
Muito provavelmente sim. No entanto, o uso da RF para calcular a importância variável para reduzir a dimensionalidade, seguido de um método com o qual seu público está mais familiarizado, é um compromisso comum. É importante saber que a importância variável na RF geralmente é calculada com base no desempenho dentro da RF (elevação, redução de erros etc.) e nem todos podem ter peso semelhante em outros métodos.
wwwslinger
2

Tenho experiência na implantação de florestas aleatórias em um ambiente SQL Server via User Defined Function. O truque é converter as IF-THEN ELSEregras que você obtém de cada árvore em uma CASE-WHEN ENDou em qualquer outra Conditional Processingconstrução (reconhecidamente, eu usei a implementação da Floresta de Bootstrap do JMP Pro - 500 mil linhas de código SQL).

Não há absolutamente nenhuma razão para que isso não possa ser alcançado usando o rattle Rpacote. Veja randomForest2Rules& printRandomForestsfunções neste pacote. Ambos tomam o random forestobjeto como entrada e visitam cada árvore na floresta e produzem um conjunto de IF-THEN ELSEregras. Tomando isso como ponto de partida, não deve ser difícil converter essa lógica no idioma desejado de maneira automatizada, pois a saída da função mencionada acima é um texto estruturado.

O exposto acima, também torna importante decidir o menor não. de árvores necessárias na floresta para fazer previsões no nível de precisão desejado (dica: plot (rf.object) mostra em que ponto as previsões da floresta não melhoram apesar da adição de mais árvores.) para manter o não. de linhas para representar a floresta abaixo.


fonte