Notei que existem algumas implementações de floresta aleatória, como ALGLIB, Waffles e alguns pacotes R, como randomForest
. Alguém pode me dizer se essas bibliotecas são altamente otimizadas? Eles são basicamente equivalentes às florestas aleatórias, conforme detalhado em Os elementos do aprendizado estatístico, ou foram adicionados muitos truques extras?
Espero que esta pergunta seja específica o suficiente. Como ilustração do tipo de resposta que estou procurando, se alguém me perguntasse se o pacote de álgebra linear BLAS era altamente otimizado, eu diria que ele era extremamente altamente otimizado e, principalmente, não vale a pena tentar melhorar, exceto em aplicações muito especializadas.
random-forest
algorithms
model-evaluation
Henry B.
fonte
fonte
Respostas:
(Atualizado em 6 de IX de 2015, com sugestões de comentários, também feitas CW)
Existem dois pacotes novos e agradáveis disponíveis para o R, que são bastante otimizados para determinadas condições:
Outras implementações de RF:
O papel Ranger possui algumas comparações de velocidade / memória, mas não há um benchmark completo.
fonte
Tanto quanto eu sei, a versão R do randomForest chama o mesmo código Fortran que a versão original. Além disso, é trivial paralelizar a função randomForest. Na verdade, é um dos exemplos fornecidos na documentação do foreach .
Dado que as florestas aleatórias são embaraçosamente paralelas, a maior otimização que você pode fazer é executá-las em paralelo. Depois disso, acho que não há outra fruta no algoritmo, mas posso estar errado.
O único problema é que você perde a estimativa de erro pronto para uso na floresta combinada, mas provavelmente existe uma maneira simples de calculá-la (eu adoraria descobrir como fazer isso).
fonte
O ELSII usou randomForest (veja, por exemplo, nota de rodapé 3 p.591), que é uma implementação R do código Fortran de Breiman e Cutler de Salford. O código de Andy Liaw está em C.
Há outra implementação de RFs proposta no pacote de partes (em C), que depende do R / Lapack, que possui algumas dependências do BLAS (consulte
/include/R_ext/Lapack.h
o diretório R básico).No que diz respeito à ensacamento, não deve ser muito difícil paralelizá-la, mas deixarei que usuários mais especializados respondam sobre esse aspecto.
fonte
A equipe por trás do randomJungle afirma que é uma ordem de magnitude mais rápida que a implementação R randomForest e usa uma magnitude de ordem menos memória. Um pacote para randomJungle está sendo desenvolvido para o R, mas ainda não consigo construir.
https://r-forge.r-project.org/projects/rjungler/
fonte
Para a implementação de Javascript, passe por esta demonstração.
Se você é como uma criança faminta por chocolate, aqui está o seu chocolate de floresta aleatória http://cs.stanford.edu/people/karpathy/svmjs/demo/demoforest.html
fonte