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:
- 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.
- 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.
- 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?
fonte
Respostas:
Aqui estão alguns pensamentos:
Eu iria para 1. ou 2.
fonte
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.
fonte
Tenho experiência na implantação de florestas aleatórias em um ambiente SQL Server via
User Defined Function
. O truque é converter asIF-THEN ELSE
regras que você obtém de cada árvore em umaCASE-WHEN END
ou em qualquer outraConditional Processing
construçã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
R
pacote. VejarandomForest2Rules
&printRandomForests
funções neste pacote. Ambos tomam orandom forest
objeto como entrada e visitam cada árvore na floresta e produzem um conjunto deIF-THEN ELSE
regras. 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