रैंडम फ़ॉरेस्ट एल्गोरिथ्म का अनुकूलित कार्यान्वयन


44

मैंने देखा है कि ALGLIB, Waffles और कुछ R संकुल जैसे यादृच्छिक वन के कुछ कार्यान्वयन हैं randomForest। क्या कोई मुझे बता सकता है कि क्या ये पुस्तकालय अत्यधिक अनुकूलित हैं? क्या वे मूल रूप से सांख्यिकीय सीखने के तत्वों में विस्तृत यादृच्छिक जंगलों के बराबर हैं या बहुत सारे अतिरिक्त ट्रिक्स जोड़े गए हैं?

मुझे उम्मीद है कि यह सवाल पर्याप्त विशिष्ट है। मैं जिस प्रकार के उत्तर की तलाश कर रहा हूं, उसके चित्रण के रूप में, अगर कोई मुझसे पूछे कि क्या रैखिक बीजगणित पैकेज BLAS को अत्यधिक अनुकूलित किया गया था, तो मैं कहूंगा कि यह बहुत ही उच्च अनुकूलित था और ज्यादातर विशेष अनुप्रयोगों को छोड़कर बेहतर बनाने की कोशिश करने के लायक नहीं था।


रैंडम जंगल कई सर्वरों पर समानांतर तरीके से चल सकता है। देखें: श्वार्ज़, एट अल (2010)। सफारी पर रैंडम जंगल: उच्च-आयामी डेटा के लिए रैंडम फ़ॉरेस्ट का तेजी से कार्यान्वयन। जैव सूचना विज्ञान, 26 , 14, पीपी 1752–8, doi.org/10.1093/Boinformatics/btn257 । कोड: 1 ; 2 ; 3 ;
उपयोगकर्ता 128525

जवाबों:


31

(टिप्पणियों से सुझावों के साथ 6 IX 2015 अपडेट किया गया, सीडब्ल्यू भी बनाया गया)

R के लिए दो नए, अच्छे पैकेज उपलब्ध हैं जो एक निश्चित परिस्थितियों के लिए बहुत ही अच्छे से अनुकूलित हैं:

  • रेंजर - सी ++, आर पैकेज, समस्याओं के लिए अनुकूलित , समानांतर, जीडब्ल्यूएएस डेटा का विशेष उपचार।p>>n
  • आर्बोरिस्ट - C ++, R और Python बाइंडिंग, बड़ी- समस्याओं के लिए अनुकूलित , जाहिरा तौर पर GPGPU के लिए योजना बनाते हैं।n

अन्य आरएफ कार्यान्वयन:

  • मूल एक - स्टैंडअलोन फोरट्रान कोड, समानांतर नहीं, उपयोग करने के लिए बहुत कठिन।
  • randomForest - C, R पैकेज, शायद सबसे लोकप्रिय, समानांतर नहीं, वास्तव में सिंगल-कोर स्पीड के आधार पर तुलना में काफी तेज है, खासकर छोटे डेटा के लिए।
  • randomForestSRC - C, R पैकेज, यादृच्छिक प्रसंस्करण का क्लोन समांतर प्रसंस्करण और अस्तित्व की समस्याओं का समर्थन करता है।
  • पार्टी - सी, आर पैकेज, काफी धीमा, लेकिन आरएफ के साथ प्रयोग करने के लिए एक विमान के रूप में बनाया गया है।
  • bigrf - C + / R, R पैकेज, bigmemory ढांचे के भीतर बड़े डेटा पर काम करने के लिए बनाया गया ; पूरा होने से काफी दूर।
  • scikit learn एनसेम्बल फॉरेस्ट - Python, scikit-learn फ्रेमवर्क का हिस्सा, समानांतर, RF के कई वेरिएंट को लागू करता है।
  • दूध का आरएफ - पायथन, दूध के ढांचे का हिस्सा।
  • वफ़ल - सी ++, एक बड़े एमएल टूलकिट का हिस्सा, समानांतर और काफी तेज।
  • तथाकथित WEKA आरएफ - जावा / WEKA, समानांतर।
  • ALGLIB
  • बेतरतीब जंगल - परित्यक्त?
  • आरटी-रैंक - परित्यक्त?
  • PARF - छोड़ दिया गया?

रेंजर पेपर में कुछ गति / मेमोरी की तुलना होती है, लेकिन पूरी तरह से बेंचमार्क नहीं है।


6
अब Python scikit-learn टूलबॉक्स से sklearn.ensemble को जोड़ सकते हैं ।
CHL

1
पाइथन में दूध का एक यादृच्छिक वन कार्यान्वयन भी है।
जेकुआहुआ

3
रेंजर द्वारा रैंडम जंगल को ढहा दिया गया है। मैंने आर ver की कोशिश की है (एक और C ++ ver है) और यह यादृच्छिक रूप से सबसे तेज है (मैंने हालांकि समय नहीं दिया)। लेखक ने एक अलग पेपर ( arxiv.org/abs/1508.04409 ) में कुछ परीक्षण किया है ।
NoviceProg

11

जहां तक ​​मुझे पता है, यादृच्छिक संस्करण का आर संस्करण उसी फोरट्रान कोड को मूल संस्करण कहता है। इसके अलावा, यह यादृच्छिक समारोह को समानांतर करने के लिए तुच्छ है। यह वास्तव में फॉर्च्यून प्रलेखन में दिए गए उदाहरणों में से एक है ।

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

यह देखते हुए कि यादृच्छिक वन शर्मनाक समानांतर हैं, आप जो सबसे बड़ा अनुकूलन कर सकते हैं, वह उन्हें समानांतर में चला रहा है। उसके बाद, मुझे नहीं लगता कि एल्गोरिथम में कोई अन्य कम लटका हुआ फल है, लेकिन मैं गलत हो सकता है।

एकमात्र मुद्दा यह है कि आप संयुक्त जंगल में आउट-ऑफ-बैग त्रुटि अनुमान खो देते हैं, लेकिन संभवतः इसकी गणना करने का एक सरल तरीका है (मैं वास्तव में यह पता करना पसंद करूंगा कि यह कैसे करना है)।


7

ELSII इस्तेमाल किया randomForest (देखें उदाहरण के लिए, फुटनोट 3 p.591), Breiman के एक अनुसंधान कार्यान्वयन और कटलर के है जो फोरट्रान कोड सैलफोर्ड से। एंडी लियाव का कोड सी में है।

पार्टी पैकेज (C) में प्रस्तावित RF का एक और कार्यान्वयन है , जो R / Lapack पर निर्भर करता है, जिसमें BLAS पर कुछ निर्भरताएँ हैं ( /include/R_ext/Lapack.hअपने आधार R निर्देशिका में देखें)।

जहां तक ​​बैगिंग की बात है, तो इसे समानांतर करना बहुत कठिन नहीं होना चाहिए, लेकिन मैं इस पहलू पर अधिक विशिष्ट उपयोगकर्ताओं को जवाब दूंगा।


5

RandomJungle के पीछे की टीम का दावा है कि R randomForest कार्यान्वयन की तुलना में तेजी से परिमाण का एक क्रम है और एक आदेश परिमाण कम मेमोरी का उपयोग करता है। यादृच्छिक जंगल के लिए एक पैकेज आर के लिए विकसित किया जा रहा है, लेकिन मुझे अभी तक निर्माण नहीं मिल सकता है।

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


यकीन नहीं होता है कि यह अभी भी 4 साल के बाद आप के लिए ब्याज की है, लेकिन रैंडम जंगल के लेखक (रों) ने रेंजर के साथ इसे उलट दिया है। मैं आर ver की कोशिश की है और यह वास्तव में कुछ नमूना डेटा के साथ randomForest की तुलना में काफी तेज है (मैं हालांकि यह समय नहीं था)।
NoviceProg

3

के लिए जावास्क्रिप्ट कार्यान्वयन इस डेमो के माध्यम से जाना।

यदि आप एक बच्चे की तरह हैं, जो चॉकलेट के लिए भूखा है, तो यहां आपका जंगल बेतरतीब है। http://cs.stanford.edu/people/karpathy/svmjs/demo/demoforest.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.