Existe uma implementação de floresta aleatória que funcione bem com dados muito esparsos?

23

Existe uma implementação de floresta aleatória R que funciona bem com dados muito esparsos? Eu tenho milhares ou milhões de variáveis ​​de entrada booleanas, mas apenas centenas ou mais serão VERDADEIRAS para qualquer exemplo.

Sou relativamente novo no R e notei que há um pacote 'Matrix' para lidar com dados esparsos, mas o pacote padrão 'randomForest' parece não reconhecer esse tipo de dados. Se isso importa, os dados de entrada serão produzidos fora de R e importados.

Algum conselho? Também posso usar Weka, Mahout ou outros pacotes.

Eryn
fonte
Até onde eu sei, não há pacotes R para árvores de decisão esparsas. Acredito que existem algoritmos para árvores de decisão esparsas, que, se implementadas em R, poderiam ser usadas para construir florestas aleatórias.
Zach
2
Aqui está um bom candidato: cs.cornell.edu/~nk/fest . Se você pode exportar seus dados no formato libsvm, poderá usar este programa de linha de comando. Gostaríamos de ver uma porta de R ...
Zach
Zach - o link parece estar morto.
Benoit_Plante
2
@ Cmoibenlepro o link é lowrank.net/nikos/fest
seanv507
Fazer a ligação funcionou bem para mim
David Marx

Respostas:

13

Não, não há implementação de RF para dados esparsos em R. Parcialmente porque a RF não se encaixa muito bem nesse tipo de problema - ensacamento e seleção subótima de divisões podem desperdiçar a maior parte do insight do modelo em áreas com somente zero.

Tente algum método de kernel ou pense melhor em converter seus dados em uma representação mais exuberante com alguns descritores (ou use algum método de redução de dimensionalidade).

user88
fonte
A resposta do Hack-R aponta o pacote xgboost, que é perfeitamente capaz de fazer florestas aleatórias com matrizes esparsas.
Edgar
7

Na verdade, sim , existe .

É xgboost, feito para aumentar o gradiente eXtreme. Atualmente, este é o pacote de escolha para a execução de modelos com matrizes esparsas em R para muitas pessoas, e como o link acima explica, você pode usá-lo para a Random Forest ajustando os parâmetros !

Hack-R
fonte
4

O pacote R "Ranger" deve funcionar.

https://cran.r-project.org/web/packages/ranger/ranger.pdf

Uma rápida implementação de florestas aleatórias, particularmente adequada para dados de alta dimensão.

Comparado com o randomForest, este pacote é provavelmente a implementação de RF mais rápida que eu já vi. Ele trata variáveis ​​categóricas de maneira nativa.

amitos
fonte
-4

Existe um blog chamado Quick-R que deve ajudá-lo com o básico de R.

R trabalha com pacotes. Cada pacote pode fazer algo diferente. Existem pacotes chamados "randomForests" que devem ser exatamente o que você está solicitando.

Esteja ciente de que dados esparsos causarão problemas, independentemente do método que você aplicar. Que eu saiba, é um problema muito aberto e a mineração de dados em geral é mais uma arte do que uma ciência. As florestas aleatórias se saem muito bem no geral, mas nem sempre são o melhor método. Você pode experimentar uma rede neural com muitas camadas, que pode ajudar.

Vincent
fonte
4
Não, randomForest é notoriamente ruim com dados esparsos, daí a questão toda. O parâmetro classwt não é implementado corretamente em randomForest. O excesso de amostragem manual é uma abordagem, mas atrapalha o erro OOB. A propósito, o pacote não é chamado de 'randomForests'.
SMCI
1
As partes verdadeiras não são respostas para a pergunta.
Sycorax diz Restabelecer Monica