Random Forest algoritmasının optimize edilmiş uygulamaları


44

ALGLIB, Gofretler ve benzeri bazı R paketleri gibi birkaç rastgele ormanın uygulaması olduğunu fark ettim randomForest. Biri bana bu kütüphanelerin yüksek düzeyde optimize edilmiş olup olmadığını söyleyebilir mi? Temel olarak İstatiksel Öğrenim Öğeleri'nde ayrıntılandırıldığı gibi rastgele ormanlara eşdeğer mi veya çok fazla ilave numara eklenmiş mi?

Umarım bu soru yeterince açıktır. Aradığım cevap türünün bir örneği olarak, birisi bana BLAS doğrusal cebir paketinin son derece optimize edilip edilmediğini sorduysa, son derece yüksek derecede optimize edilmiş ve çoğunlukla çok özel uygulamalar dışında geliştirmeye çalışmaya değmeyeceğini söyleyebilirim.


Rastgele Orman birçok sunucuda paralel olarak çalışabilir. Bakınız: Schwarz ve diğerleri (2010). Random Jungle'dan safaride: yüksek boyutlu veriler için Random Forest'lerin hızlıca uygulanması. Bioinformatics, 26 , 14, sayfa 1752–8, doi.org/10.1093/bioinformatics/btq257 . kod: 1 ; 2 ; 3 ; 4 .
Kullanıcı128525

Yanıtlar:


31

(Yorumlardan gelen önerilerle 6 IX 2015 güncellendi, ayrıca CW yapıldı)

R için belirli iki koşul için oldukça iyi optimize edilmiş iki yeni ve güzel paket var:

  • Ranger - için optimize edilmiş C ++, R, ambalaj, sorunlar, paralel, GWAS verilerin özel tedavi.p>>n
  • Arborist - orta serili için optimize C ++, R ve Python bağlantıları, problemleri, GPGPU için görünüşte planlar.n

Diğer RF uygulamaları:

  • Orijinal Bir - bağımsız Fortran kodu, paralel değil, kullanımı oldukça zor.
  • randomForest - C, R paketi, muhtemelen en popüler, paralel değil, özellikle küçük veriler için, tek çekirdekli hız esasına göre oldukça hızlı.
  • randomForestSRC - C, R paketi, paralel işleme ve hayatta kalma sorunlarını destekleyen randomForest klonu.
  • parti - C, R paketi, oldukça yavaş, ancak RF ile deneme için bir uçak olarak tasarlandı.
  • bigrf - çalışma için inşa C + / R, R paketi büyük veri içinde bigmemory çerçeve ; tamamlanmaktan oldukça uzak.
  • scikit Learn Topluluk ormanı - scikit-learn çerçevesinin bir parçası olan Python, paralel olarak birçok RF türevi uygular.
  • sütün RF - Python, süt çerçevesinin bir parçası.
  • Gofretler - C ++, daha büyük ML araç setinin bir parçası, paralel ve oldukça hızlı.
  • sözde WEKA rf - Java / WEKA, paralel.
  • ALGLIB
  • Rastgele Orman - terkedilmiş?
  • rütbe - terkedilmiş mi?
  • PARF - terk edildi?

Ranger kağıdında bazı hız / bellek karşılaştırmaları vardır, ancak ayrıntılı bir kıyaslama yok.


6
Bir anda ekleyebilir sklearn.ensemble araç kutusunu-öğrenme scikit Python.
chl

1
Python'daki süt de rastgele bir orman uygulamasına sahiptir.
JEquihua

3
Rastgele Orman Ranger tarafından yerini aldı. R ver'i denedim (başka bir C ++ ver var) ve randomForest'ten belirgin şekilde daha hızlı (buna rağmen zaman yoktu). Yazar ayrı bir makalede bazı testler yaptı ( arxiv.org/abs/1508.04409 ).
AcemiProg

11

Bildiğim kadarıyla, randomForest'in R sürümü orijinal sürümle aynı Fortran kodunu çağırıyor. Ayrıca, randomForest işlevini paralelleştirmek önemsizdir. Aslında foreach belgelerinde verilen örneklerden biri .

library(foreach)
library(randomForest)
rf <- foreach(ntree = rep(250, 4), .combine = combine, .packages = "randomForest") %dopar% 
randomForest(x, y, ntree = ntree)

Rastgele ormanların utanç verici derecede paralel olduğu göz önüne alındığında, yapabileceğiniz en büyük optimizasyon onları paralel olarak çalıştırmaktır. Ondan sonra, algoritmada başka düşük meyveli meyve olduğunu sanmıyorum ama yanılıyor olabilirim.

Tek sorun, kombine ormandaki torba dışı hata tahminini kaybetmenizdir, ancak bunu hesaplamanın basit bir yolu vardır (aslında bunun nasıl yapıldığını öğrenmeyi çok isterim).


7

ELSII kullanılan randomForest (bakınız, örneğin, dipnot 3 p.591) bir R Breiman uygulanması ve Cutler olup, Fortran kodu Salford'ya olan. Andy Liaw'ın kodu C’de.

Parti paketinde önerilen bir başka RF uygulaması da vardır (C), BLAS'a bağımlı olan R / Lapack'e dayanır ( /include/R_ext/Lapack.htemel R dizininizde bakınız).

Torbalama ile ilgili olarak, paralelleştirmek çok zor olmamalı, ancak daha uzman kullanıcıların bu konuda cevap vermesine izin vereceğim.


5

RandomJungle'ın arkasındaki ekip, R randomForest uygulamasından daha hızlı bir büyüklük sırası olduğunu ve sipariş büyüklüğü için daha az bellek kullandığını iddia ediyor. R için randomJungle paketi geliştiriliyor, ancak henüz oluşturamıyorum.

https://r-forge.r-project.org/projects/rjungler/


Bu 4 yıl sonra hala sizin ilginizi çekiyorsa emin değiliz ama randomJungle'ın yazarı / yazarları Ranger ile değiştirildi. R ver'i denedim ve gerçekten bazı örnek verilerde rastgeleForest'ten daha hızlı olduğunu fark ettim.
AcemiProg

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.