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?


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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.