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