Uma floresta aleatória com várias saídas seria possível / prática?

17
  1. As florestas aleatórias (RF) são um método competitivo de modelagem / mineração de dados.

  2. Um modelo de RF possui uma saída - a variável de saída / previsão.

  3. A abordagem ingênua para modelar várias saídas com RFs seria construir uma RF para cada variável de saída. Portanto, temos N modelos independentes e, onde houver correlação entre as variáveis ​​de saída, teremos uma estrutura de modelo redundante / duplicada. Isso poderia ser muito inútil, de fato. Também como regra geral, mais variáveis ​​de modelo implicam um modelo mais super ajustado (menos generalização). Não tenho certeza se isso se aplica aqui, mas provavelmente o faz.

Em princípio, poderíamos ter um RF com várias saídas. A variável de previsão agora é um vetor (n-tupla). Os nós de decisão em cada árvore de decisão agora dividem o conjunto de vetores de destino / previsão com base em um vetor de limiar. Eu acho que esse limite é considerado um plano no espaço n-dimensional e, portanto, podemos determinar qual lado do limiar vector cada um dos vetores de destino está ativado.

O valor ideal de previsão para cada lado da divisão de decisão é a média (centróide) calculada para os vetores de cada lado.

Encontrar o ponto de divisão ideal ao trabalhar com variáveis ​​únicas é trivial e computacionalmente rápido / eficiente. Para uma n-tupla, não podemos encontrar a divisão ideal (ou pelo menos se torna computacionalmente inviável à medida que N aumenta), mas podemos encontrar uma divisão quase ideal usando um método do tipo Monte Carlo (ou algum híbrido de Monte Carlo e local). percurso de gradiente).

Isso realmente funcionaria? Ou seja, apenas mapearia os pares de treinamento sem generalizar? Essa técnica já existe com um nome diferente?

Você também pode considerar como isso se relaciona com redes neurais, como RBMs (Restricted Boltzmann Machines) e Deep Belief Networks.

redcalx
fonte
A pesquisa de "floresta aleatória multilabel" no Google mostra que isso foi feito de várias maneiras distintas; de qualquer maneira, eu tenho brincado com essa abordagem de muitos binários-rfs na recuperação de informações musicais e estava indo muito bem.
1
Eu sugeriria este artigo . Eles fazem algo muito próximo ao que você descreveu.
Dmitry Laptev
2
Isso já existe no pacote de terceiros e em alguns outros pacotes (idioma R).
Jase

Respostas:

8

Várias árvores de decisão de saída (e, portanto, florestas aleatórias) foram desenvolvidas e publicadas. Pierre Guertz distribui um pacote para este ( download) Veja também Segal & Xiao, florestas aleatórias multivariadas, WIREs Data Mining Knowl Discov 2011 1 80–87, DOI: 10.1002 / widm.12 Acredito que a versão mais recente do Scikit-learn também apóie isso. Uma boa revisão do estado da arte pode ser encontrada na tese de Henrik Linusson, intitulada "FLORESTAS ALEATÓRIAS MULTI-SAÍDA". O método mais simples para fazer as escolhas de divisão em cada nó é escolher aleatoriamente UMA das variáveis ​​de saída e seguir a abordagem usual de floresta aleatória para escolher uma divisão. Outros métodos baseados em uma soma ponderada da pontuação de informações mútuas em relação a cada recurso de entrada e variável de saída foram desenvolvidos, mas são bastante caros em comparação com a abordagem aleatória.

Tom Dietterich
fonte
-1

Como indicado aqui :

Todos os classificadores no scikit-learn fazem a classificação multiclasse pronta para uso.

E isso inclui floresta aleatória.

Também a página: http://scikit-learn.org/stable/modules/tree.html#tree-multioutput possui muitas referências sobre esse tópico.

0asa
fonte
8
Para ser claro; a questão está relacionada à regressão com várias saídas .
redcalx
Desculpe o atraso na minha resposta, mas parece que o scikit-learn também oferece regressão de saída múltipla, por exemplo: scikit-learn.org/stable/auto_examples/tree/… E, de qualquer forma, existe uma estratégia que consiste em ajustar uma regressor por alvo. Esta é uma estratégia simples para estender regressores que não têm suporte nativo para regressão multi-alvo: scikit-learn.org/stable/modules/generated/... HTH
0asa