बेतरतीब जंगल और भविष्यवाणी


14

मैं यह समझने की कोशिश कर रहा हूं कि रैंडम फॉरेस्ट कैसे काम करता है। मेरे पास इस बात की समझ है कि पेड़ कैसे बनते हैं लेकिन यह समझ नहीं आता कि कैसे बेतरतीब वन बैग के नमूने पर भविष्यवाणियां करते हैं। किसी ने मुझे एक सरल विवरण दे सकते हैं, कृपया? :)

जवाबों:


17

जंगल का प्रत्येक पेड़ आपके प्रशिक्षण डेटा में टिप्पणियों के बूटस्ट्रैप नमूने से बनाया गया है। बूटस्ट्रैप नमूने में वे अवलोकन ट्री का निर्माण करते हैं, जबकि बूटस्ट्रैप नमूने में वे आउट-ऑफ-बैग (या OOB) नमूने नहीं बनाते हैं।

यह स्पष्ट होना चाहिए कि OOB नमूने में मामलों के लिए एक पेड़ बनाने के लिए उपयोग किए गए डेटा में मामलों के लिए समान चर उपलब्ध हैं। ओओबी नमूने के लिए पूर्वानुमान प्राप्त करने के लिए, प्रत्येक को वर्तमान पेड़ और एक नोड में आने तक पेड़ के नियमों का पालन किया जाता है। उस विशेष वृक्ष के लिए OOB भविष्यवाणियों का उत्पादन करता है।

इस प्रक्रिया को बड़ी संख्या में दोहराया जाता है, प्रत्येक पेड़ को प्राप्त किए गए नए ओओबी नमूनों के प्रशिक्षण डेटा और भविष्यवाणियों से एक नए बूटस्ट्रैप नमूने पर प्रशिक्षित किया जाता है।

जैसे ही पेड़ों की संख्या बढ़ती है, कोई भी एक नमूना OOB के नमूनों में एक से अधिक बार होगा, इस प्रकार N पेड़ों पर एक पूर्वानुमान का "औसत" जहां OOB में एक नमूना है, प्रत्येक प्रशिक्षण नमूने के लिए OOB भविष्यवाणी के रूप में उपयोग किया जाता है पेड़ 1, ..., एन। "औसत" द्वारा हम निरंतर प्रतिक्रिया के लिए भविष्यवाणियों के माध्यम का उपयोग करते हैं, या बहुमत के वोट का उपयोग एक स्पष्ट प्रतिक्रिया के लिए किया जा सकता है (बहुमत वोट वर्ग है जिसके सेट पर अधिकांश वोट होते हैं पेड़ 1, ..., एन)।

उदाहरण के लिए, मान लें कि हमारे पास 10 पेड़ों पर प्रशिक्षण सेट में 10 नमूनों के लिए निम्नलिखित ओओबी भविष्यवाणियां थीं

set.seed(123)
oob.p <- matrix(rpois(100, lambda = 4), ncol = 10)
colnames(oob.p) <- paste0("tree", seq_len(ncol(oob.p)))
rownames(oob.p) <- paste0("samp", seq_len(nrow(oob.p)))
oob.p[sample(length(oob.p), 50)] <- NA
oob.p

> oob.p
       tree1 tree2 tree3 tree4 tree5 tree6 tree7 tree8 tree9 tree10
samp1     NA    NA     7     8     2     1    NA     5     3      2
samp2      6    NA     5     7     3    NA    NA    NA    NA     NA
samp3      3    NA     5    NA    NA    NA     3     5    NA     NA
samp4      6    NA    10     6    NA    NA     3    NA     6     NA
samp5     NA     2    NA    NA     2    NA     6     4    NA     NA
samp6     NA     7    NA     4    NA     2     4     2    NA     NA
samp7     NA    NA    NA     5    NA    NA    NA     3     9      5
samp8      7     1     4    NA    NA     5     6    NA     7     NA
samp9      4    NA    NA     3    NA     7     6     3    NA     NA
samp10     4     8     2     2    NA    NA     4    NA    NA      4

जहां NAनमूना उस पेड़ के प्रशिक्षण डेटा में था (दूसरे शब्दों में यह ओओबी नमूने में नहीं था)।

NAप्रत्येक पंक्ति के लिए गैर- मूल्यों का मतलब पूरे जंगल के लिए प्रत्येक नमूने के लिए ओओबी भविष्यवाणी देता है

> rowMeans(oob.p, na.rm = TRUE)
 samp1  samp2  samp3  samp4  samp5  samp6  samp7  samp8  samp9 samp10 
  4.00   5.25   4.00   6.20   3.50   3.80   5.50   5.00   4.60   4.00

जैसा कि प्रत्येक पेड़ को जंगल में जोड़ा जाता है, हम उस पेड़ को शामिल करने के लिए ओओबी त्रुटि की गणना कर सकते हैं। उदाहरण के लिए, प्रत्येक नमूने के लिए संचयी साधन नीचे दिए गए हैं:

FUN <- function(x) {
  na <- is.na(x)
  cs <- cumsum(x[!na]) / seq_len(sum(!na))
  x[!na] <- cs
  x
}
t(apply(oob.p, 1, FUN))

> print(t(apply(oob.p, 1, FUN)), digits = 3)
       tree1 tree2 tree3 tree4 tree5 tree6 tree7 tree8 tree9 tree10
samp1     NA    NA  7.00  7.50  5.67  4.50    NA   4.6  4.33    4.0
samp2      6    NA  5.50  6.00  5.25    NA    NA    NA    NA     NA
samp3      3    NA  4.00    NA    NA    NA  3.67   4.0    NA     NA
samp4      6    NA  8.00  7.33    NA    NA  6.25    NA  6.20     NA
samp5     NA     2    NA    NA  2.00    NA  3.33   3.5    NA     NA
samp6     NA     7    NA  5.50    NA  4.33  4.25   3.8    NA     NA
samp7     NA    NA    NA  5.00    NA    NA    NA   4.0  5.67    5.5
samp8      7     4  4.00    NA    NA  4.25  4.60    NA  5.00     NA
samp9      4    NA    NA  3.50    NA  4.67  5.00   4.6    NA     NA
samp10     4     6  4.67  4.00    NA    NA  4.00    NA    NA    4.0

इस तरह हम देखते हैं कि किसी दिए गए पुनरावृत्ति तक जंगल में एन पेड़ों पर भविष्यवाणी कैसे संचित है। यदि आप पंक्तियों में पढ़ते हैं, तो सबसे अधिक गैर- NAमूल्य वह है जो मैं OOB भविष्यवाणी के लिए ऊपर दिखाता हूं। यह है कि ओओबी प्रदर्शन के निशान कैसे बनाए जा सकते हैं - एन पेड़ों पर संचित ओओबी भविष्यवाणियों के आधार पर ओओबी नमूनों के लिए एक आरएमएसईपी की गणना की जा सकती है।

ध्यान दें कि दिखाया गया R कोड R के लिए randomForest पैकेज में randomForest कोड के इंटर्नल से नहीं लिया गया है - मैंने अभी कुछ सरल कोड खटखटाए हैं ताकि आप एक बार एक पेड़ से भविष्यवाणियों का निर्धारण करने के बाद क्या चल रहा है।

ऐसा इसलिए है क्योंकि प्रत्येक पेड़ बूटस्ट्रैप नमूने से बनाया गया है और यादृच्छिक वन में बड़ी संख्या में पेड़ हैं, जैसे कि प्रत्येक प्रशिक्षण सेट अवलोकन एक या अधिक पेड़ों के लिए ओओबी नमूने में है, कि ओओबी भविष्यवाणियां सभी के लिए प्रदान की जा सकती हैं प्रशिक्षण डेटा में नमूने।

मैंने कुछ ओओबी मामलों आदि के लिए लापता डेटा जैसे मुद्दों पर काम किया है, लेकिन ये मुद्दे एकल प्रतिगमन या वर्गीकरण ट्री से भी संबंधित हैं। यह भी ध्यान दें कि जंगल में प्रत्येक पेड़ केवल mtryयादृच्छिक रूप से चयनित चर का उपयोग करता है ।


शानदार जवाब! जब आप लिखते हैं "To get predictions for the OOB sample, each one is passed down the current tree and the rules for the tree followed until it arrives in a terminal node", तो आपके पास एक सरल व्याख्या होती है कि क्या rules for the treeहैं? और क्या मैं sampleएक पंक्ति के रूप में सही ढंग से समझता हूं अगर मैं समझता हूं कि नमूने उन groupsटिप्पणियों के हैं जो पेड़ डेटा को विभाजित करते हैं?
user1665355

@ user1665355 मैंने आपको समझा कि प्रतिगमन या वर्गीकरण पेड़ कैसे बनाए गए थे? आरएफ में पेड़ अलग नहीं हैं (नियमों को रोकने में शायद छोड़कर)। प्रत्येक पेड़ प्रतिक्रिया के लिए समान "मूल्यों" के साथ नमूनों के समूहों में प्रशिक्षण डेटा को विभाजित करता है। परिवर्तनशील और विभाजित स्थान (उदाहरण के लिए pH> 4.5) जो सबसे अच्छा भविष्यवाणी करता है (अर्थात "त्रुटि को कम करता है") वृक्ष में पहला विभाजन या नियम बनाता है। इस विभाजन की प्रत्येक शाखा को तब बारी में माना जाता है और नए विभाजन / नियमों की पहचान की जाती है जो पेड़ की "त्रुटि" को कम करते हैं। यह बाइनरी पुनरावर्ती विभाजन एल्गोरिथ्म है। विभाजन के नियम हैं।
मोनिका को बहाल करें - जी। सिम्पसन

@ user1665355 हाँ, क्षमा करें, मैं एक ऐसे क्षेत्र से आता हूँ जहाँ एक नमूना एक अवलोकन, डेटा सेट में एक पंक्ति है। लेकिन जब आप बूटस्ट्रैप के नमूने के बारे में बात करना शुरू करते हैं, तो यह एन टिप्पणियों का एक सेट है, जो प्रशिक्षण डेटा से प्रतिस्थापन के साथ तैयार किया गया है और इसलिए एन पंक्तियाँ या अवलोकन हैं। मैं बाद में अपनी शब्दावली को साफ करने की कोशिश करूंगा।
मोनिका को बहाल करें - जी। सिम्पसन

धन्यवाद! मैं आरएफ के लिए बहुत नया हूँ शायद बेवकूफ सवालों के लिए खेद है :) मुझे लगता है कि मैंने लगभग सब कुछ समझ लिया है जो आपने लिखा था, बहुत अच्छी व्याख्या! मैं सिर्फ चर और विभाजन स्थान (जैसे पीएच> 4.5) के बारे में आश्चर्य करता हूं जो सबसे अच्छा भविष्यवाणी करता है (यानी "त्रुटि को कम करता है") पेड़ में पहला विभाजन या नियम बनाता है ... मैं समझ नहीं सकता कि त्रुटि क्या है। : / मैं पढ़ रहा हूं और समझने की कोशिश कर रहा हूं http://www.ime.unicamp.br/~ra109078/PED/Data%20Minig%20with%20R/Data%20Mining%20with%20R.pdf। पृष्ठ 115-116 पर लेखक variable importanceतकनीकी संकेतकों को चुनने के लिए RF का उपयोग करते हैं ।
user1665355

"त्रुटि" इस बात पर निर्भर करता है कि किस प्रकार का पेड़ लगाया जा रहा है। Deviance निरंतर (गाऊसी) प्रतिक्रियाओं के लिए सामान्य उपाय है। समकक्ष पैकेज में, गीनी गुणांक स्पष्ट प्रतिक्रियाओं के लिए डिफ़ॉल्ट है, लेकिन विभिन्न मॉडलों आदि के लिए अन्य हैं। यदि आप इसे सफलतापूर्वक तैनात करना चाहते हैं, तो आपको पेड़ों और आरएफ पर एक अच्छी पुस्तक का लाभ उठाना चाहिए। परिवर्तनीय छाप उपाय कुछ अलग हैं - वे डेटा में सेट करके प्रत्येक चर के "महत्व" को मापते हैं, यह देखते हुए कि किसी पेड़ को फिट करने के लिए उस चर का उपयोग कब किया जाता है और कब उस चर का उपयोग नहीं किया जाता है।
मोनिका बहाल - जी। सिम्पसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.