एक यादृच्छिक जंगल से ज्ञान प्राप्त करना


127

यादृच्छिक जंगलों को ब्लैक बॉक्स माना जाता है, लेकिन हाल ही में मैं सोच रहा था कि एक यादृच्छिक जंगल से क्या ज्ञान प्राप्त किया जा सकता है?

सबसे स्पष्ट बात चरों का महत्व है, सबसे सरल रूप में यह सिर्फ चर की घटनाओं की संख्या की गणना करके किया जा सकता है।
दूसरी चीज जिसके बारे में मैं सोच रहा था, वह बातचीत है। मुझे लगता है कि यदि पेड़ों की संख्या पर्याप्त रूप से बड़ी है तो चर के जोड़े की घटनाओं की संख्या का परीक्षण किया जा सकता है (ची स्क्वायर स्वतंत्रता जैसी कुछ)। तीसरी बात है चरों की ग़ैर-बराबरी। मेरा पहला विचार सिर्फ एक चर बनाम स्कोर के चार्ट को देखने के लिए था, लेकिन मुझे अभी तक यकीन नहीं है कि क्या इसका कोई मतलब है।

जोड़ा गया 23.01.2012
प्रेरणा

मैं इस ज्ञान का उपयोग एक लॉजिट मॉडल को बेहतर बनाने के लिए करना चाहता हूं। मुझे लगता है (या कम से कम मुझे आशा है) कि यह संभव है कि बातचीत और nonlinearities की अनदेखी की जाए।


1
R का उपयोग करके आप एक रैंडम फ़ॉरेस्ट द्वारा मापा गया चर महत्व का एक Dotchart उत्पन्न कर सकते हैं ।
जॉर्ज डोंटास

1
एक संबंधित धागा कैसे चर महत्व उपायों पर स्टोकेस्टिक ढाल पेड़ को बढ़ाने के लिए गणना कर रहे हैं
एंटोनी

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

जवाबों:


122

रैंडम वन शायद ही कोई ब्लैक बॉक्स हो। वे निर्णय पेड़ों पर आधारित हैं, जिनकी व्याख्या करना बहुत आसान है:

#Setup a binary classification problem
require(randomForest)
data(iris)
set.seed(1)
dat <- iris
dat$Species <- factor(ifelse(dat$Species=='virginica','virginica','other'))
trainrows <- runif(nrow(dat)) > 0.3
train <- dat[trainrows,]
test <- dat[!trainrows,]

#Build a decision tree
require(rpart)
model.rpart <- rpart(Species~., train)

इसका परिणाम एक साधारण निर्णय वृक्ष में होता है:

> model.rpart
n= 111 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 111 35 other (0.68468468 0.31531532)  
  2) Petal.Length< 4.95 77  3 other (0.96103896 0.03896104) *
  3) Petal.Length>=4.95 34  2 virginica (0.05882353 0.94117647) *

यदि पेटल.लम्बी <4.95, यह पेड़ अवलोकन को "अन्य" के रूप में वर्गीकृत करता है। यदि यह 4.95 से अधिक है, तो यह अवलोकन को "वर्जिनिका" के रूप में वर्गीकृत करता है। एक यादृच्छिक जंगल कई ऐसे पेड़ों का एक संग्रह है, जहां प्रत्येक को डेटा के यादृच्छिक सबसेट पर प्रशिक्षित किया जाता है। प्रत्येक पेड़ तो प्रत्येक अवलोकन के अंतिम वर्गीकरण पर "वोट" करता है।

model.rf <- randomForest(Species~., train, ntree=25, proximity=TRUE, importance=TRUE, nodesize=5)
> getTree(model.rf, k=1, labelVar=TRUE)
  left daughter right daughter    split var split point status prediction
1             2              3  Petal.Width        1.70      1       <NA>
2             4              5 Petal.Length        4.95      1       <NA>
3             6              7 Petal.Length        4.95      1       <NA>
4             0              0         <NA>        0.00     -1      other
5             0              0         <NA>        0.00     -1  virginica
6             0              0         <NA>        0.00     -1      other
7             0              0         <NA>        0.00     -1  virginica

आप rf से अलग-अलग पेड़ों को भी खींच सकते हैं, और उनकी संरचना को देख सकते हैं। प्रारूप rpartमॉडल की तुलना में थोड़ा अलग है , लेकिन आप प्रत्येक पेड़ का निरीक्षण कर सकते हैं यदि आप चाहते थे और देखें कि यह डेटा को कैसे मॉडलिंग कर रहा है।

इसके अलावा, कोई भी मॉडल वास्तव में एक ब्लैक बॉक्स नहीं है, क्योंकि आप डेटासेट में प्रत्येक चर के लिए वास्तविक प्रतिक्रियाओं बनाम अनुमानित प्रतिक्रियाओं की जांच कर सकते हैं। यह एक अच्छा विचार है कि आप किस प्रकार के मॉडल का निर्माण कर रहे हैं:

library(ggplot2)
pSpecies <- predict(model.rf,test,'vote')[,2]
plotData <- lapply(names(test[,1:4]), function(x){
  out <- data.frame(
    var = x,
    type = c(rep('Actual',nrow(test)),rep('Predicted',nrow(test))),
    value = c(test[,x],test[,x]),
    species = c(as.numeric(test$Species)-1,pSpecies)
    )
  out$value <- out$value-min(out$value) #Normalize to [0,1]
  out$value <- out$value/max(out$value)
  out
})
plotData <- do.call(rbind,plotData)
qplot(value, species, data=plotData, facets = type ~ var, geom='smooth', span = 0.5)

भूखंड

मैंने चर (सेपाल और पंखुड़ी की लंबाई और चौड़ाई) को 0-1 की सीमा तक सामान्य कर दिया है। प्रतिक्रिया भी 0-1 है, जहां 0 अन्य है और 1 वर्जिन है। जैसा कि आप देख सकते हैं यादृच्छिक वन एक अच्छा मॉडल है, यहां तक ​​कि परीक्षण सेट पर भी।

इसके अतिरिक्त, एक यादृच्छिक वन चर महत्व के विभिन्न माप की गणना करेगा, जो बहुत जानकारीपूर्ण हो सकता है:

> importance(model.rf, type=1)
             MeanDecreaseAccuracy
Sepal.Length           0.28567162
Sepal.Width           -0.08584199
Petal.Length           0.64705819
Petal.Width            0.58176828

यह तालिका दर्शाती है कि प्रत्येक चर को हटाने से मॉडल की सटीकता कम हो जाती है। अंत में, कई अन्य भूखंड हैं जिन्हें आप यादृच्छिक वन मॉडल से बना सकते हैं, यह देखने के लिए कि ब्लैक बॉक्स में क्या चल रहा है:

plot(model.rf)
plot(margin(model.rf)) 
MDSplot(model.rf, iris$Species, k=5)
plot(outlier(model.rf), type="h", col=c("red", "green", "blue")[as.numeric(dat$Species)])

आप इन कार्यों में से प्रत्येक के लिए मदद फ़ाइलों को देख सकते हैं कि वे क्या प्रदर्शित करते हैं, इसका एक बेहतर विचार प्राप्त करने के लिए।


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

@TomekTarczynski यह एक दिलचस्प समस्या है और मैं अभी इससे निपट रहा हूं। मैं "लॉजिट मॉडल" से मानता हूं कि आपका मतलब लॉजिस्टिक रिग्रेशन या कुछ इसी तरह का है? मैं सभी मॉडल के चर के बीच बातचीत के साथ एक मॉडल से भविष्यवक्ताओं का चयन करने के लिए लैस्मो लॉजिस्टिक रिग्रेशन (ग्लमैनेट आर पैकेज से) का उपयोग कर रहा हूं। मैंने अभी तक किसी भी ग़ैर-कानूनी शब्दों में नहीं जोड़ा है - लेकिन सिद्धांत रूप में यह संभव भी होना चाहिए। एकमात्र मुद्दा जो मुझे लगता है कि यह तय करने के लिए क्या गैर-शब्द हैं (बहुपद शब्द, घातीय परिवर्तन, आदि?)। इसके अलावा, मैं कोई उच्च-क्रम इंटरैक्शन नहीं उठा रहा हूं लेकिन यह बहुत आसान है।
ऐनी जेड।

2
@ टेक, आप इस जवाब से क्या नहीं पा रहे हैं? यदि आप R में यादृच्छिकतम पैकेज का उपयोग कर रहे हैं तो प्लॉट Zach का वर्णन बहुत उपयोगी होना चाहिए। विशेष रूप से, आप logit मॉडल में निरंतर भविष्यवक्ताओं पर प्रयास करने के लिए परिवर्तन के प्रकार का अनुमान लगाने के लिए अपने logit मॉडल और आंशिकPlot में चयन के लिए varImpPlot का उपयोग कर सकते हैं। मैं सुझाव दूंगा कि बाद वाले प्लॉट का उपयोग यह निर्धारित करने के लिए किया जाए कि भविष्यवक्ता और प्रतिक्रिया के बीच गैर-संबंध कहां मौजूद हैं और फिर आप उस परिवर्तन को स्पष्ट रूप से कर सकते हैं या उस चर पर एक स्पलाइन का उपयोग कर सकते हैं।
B_Miner

2
@b_miner - बस एक अनुमान है, लेकिन ऐसा लगता है कि टॉमक पूछ रहा है कि चर के बीच गैर-रैखिक बातचीत कैसे खोजें क्योंकि लॉजिस्टिक प्रतिगमन पहले से ही रैखिक संबंधों को कैप्चर करता है।
rm999

@ rm999 आप एक लॉजिट मॉडल में एक गैर रेखीय बातचीत को कैसे परिभाषित करते हैं? रूपांतरित चर के बीच निर्मित अंतःक्रिया की शर्तें?
B_Miner

52

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

शास्त्रीय दृष्टिकोण आंशिक रूप से आश्रित भूखंड हैं, जिनका समर्थन किया जाता है: रैनर (डेटा-आधारित संवेदनशीलता विश्लेषण को आंशिक निर्भरता को पुनर्निवेशित किया जाता है), या रैंडम फ़ोरस्ट पैकेज में आंशिक प्लॉट । मैं आंशिक निर्भरता पैकेज आइसबॉक्‍स को बातचीत की खोज करने के लिए एक सुरुचिपूर्ण तरीके के रूप में देखता हूंएडारफ पैकेज का उपयोग नहीं किया है , लेकिन लगता है कि आरएफ के लिए समर्पित कुछ ठीक दृश्य हैं। GgRandomForest पैकेज भी उपयोगी दृश्यावलोकन का एक बड़ा समूह होता है।

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

y=F(X)f1(x1)+f2(x2)+...+fd(xd)

में इस पत्र , मैं समझाने की क्या वास्तविक जैव रासायनिक संबंध एक बहुत छोटा आरएफ मॉडल कब्जा कर लिया था forestFloor का एक बहुत जल्दी संस्करण का उपयोग किया। और इस पत्र में हम अच्छी तरह से सुविधा योगदान, वन फ़्लोर विज़ुअलाइज़ेशन ऑफ़ रैंडम फ़ॉरेस्ट के विज़ुअलाइज़ेशन का वर्णन करते हैं ।

y=x12+sin(x2π)+2x3x4+

#1 - Regression example:
set.seed(1234)
library(forestFloor)
library(randomForest)

#simulate data y = x1^2+sin(x2*pi)+x3*x4 + noise
obs = 5000 #how many observations/samples
vars = 6   #how many variables/features
#create 6 normal distr. uncorr. variables
X = data.frame(replicate(vars,rnorm(obs)))
#create target by hidden function
Y = with(X, X1^2 + sin(X2*pi) + 2 * X3 * X4 + 0.5 * rnorm(obs)) 

#grow a forest
rfo = randomForest(
  X, #features, data.frame or matrix. Recommended to name columns.
  Y, #targets, vector of integers or floats
  keep.inbag = TRUE,  # mandatory,
  importance = TRUE,  # recommended, else ordering by giniImpurity (unstable)
  sampsize = 1500 ,   # optional, reduce tree sizes to compute faster
  ntree = if(interactive()) 500 else 50 #speedup CRAN testing
)

#compute forestFloor object, often only 5-10% time of growing forest
ff = forestFloor(
  rf.fit = rfo,       # mandatory
  X = X,              # mandatory
  calc_np = FALSE,    # TRUE or FALSE both works, makes no difference
  binary_reg = FALSE  # takes no effect here when rfo$type="regression"
)


#plot partial functions of most important variables first
plot(ff,                       # forestFloor object
     plot_seq = 1:6,           # optional sequence of features to plot
     orderByImportance=TRUE    # if TRUE index sequence by importance, else by X column  
)

यहां छवि विवरण दर्ज करें

#Non interacting features are well displayed, whereas X3 and X4 are not
#by applying color gradient, interactions reveal themself 
#also a k-nearest neighbor fit is applied to evaluate goodness-of-fit
Col=fcol(ff,3,orderByImportance=FALSE) #create color gradient see help(fcol)
plot(ff,col=Col,plot_GOF=TRUE) 

यहां छवि विवरण दर्ज करें

#feature contributions of X3 and X4 are well explained in the context of X3 and X4
# as GOF R^2>.8


show3d(ff,3:4,col=Col,plot_GOF=TRUE,orderByImportance=FALSE)

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

अंत में J.Friedman द्वारा वर्णित A.Liaw द्वारा कोडित आंशिक निर्भरता भूखंडों के लिए कोड। जो मुख्य प्रभावों के लिए ठीक करते हैं।

par(mfrow=c(2,3))
for(i in 1:6) partialPlot(rfo,X,x.var=names(X)[i])

यहां छवि विवरण दर्ज करें


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

Oups! मुझे अपने परीक्षण एल्गोरिथ्म में एक बग मिला जिसने सभी मुद्दों को अलग कर दिया। वनफ्लोर को ग्रेडिएंट बूस्टेड पेड़ों के लिए ठीक काम करने के लिए अपडेट किया जा सकता है।
सोरेन हवेलुंड वेलिंग

3
वन फॉर्फ़ोर को gbm ऑब्जेक्ट स्वीकार करने के लिए अपडेट किया गया है?
मीशा

अब तक, मैंने एक रिवर्स कार्यान्वयन किया है, जो कि रैंडम फ़ॉरेस्ट कार्यान्वयन को पूरी तरह कार्यात्मक ढाल बूस्टिंग मशीन में लपेटता है और सुविधा योगदान की गणना करने के लिए कुछ तरीकों को परिभाषित करता है। मुझे लगता है कि वास्तव में कार्यान्वयन उचित है। आप यहां कोड पा सकते हैं: github.com/sorhawell/forestFloor/blob/master/inst/examples/…
सोरेन हवेलुंड वेलिंग

एक पूर्ण पोर्ट बनाने के लिए कड़ी मेहनत है :) यह कार्यान्वयन काफी कुछ लाइनों में किया गया था।
सोरेन हवेलुंड वेलिंग

24

इन ठीक प्रतिक्रियाओं के पूरक के लिए, मैं ग्रेडिएंट बूस्टेड पेड़ों (उदाहरण के लिए आरबी में जीबीएम पैकेज ) के उपयोग का उल्लेख करूंगा । आर में, मैं इसे यादृच्छिक जंगलों के लिए पसंद करता हूं क्योंकि लापता मानों को यादृच्छिकतम की तुलना में अनुमति दी जाती है जहां प्रतिरूपण की आवश्यकता होती है। परिवर्तनीय महत्व और आंशिक भूखंड उपलब्ध हैं (यादृच्छिक रूप में) अपने चयन मॉडल में सुविधा चयन और गैर-परिवर्तन परिवर्तन अन्वेषण में सहायता के लिए। इसके अलावा, वैरिएबल इंटरैक्शन को फ्रीडमैन के एच-स्टेटिस्टिक ( interact.gbm) के रूप में संबोधित किया गया है J.H. Friedman and B.E. Popescu (2005). “Predictive Learning via Rule Ensembles.” Section 8.1। TreeNet नामक एक व्यावसायिक संस्करण सैलफोर्ड सिस्टम से उपलब्ध है और इस वीडियो प्रस्तुति पर चर बातचीत आकलन उनके ले करने के लिए बोलता है वीडियो


2
मैं मानता हूं, जीबीएम यादृच्छिक जंगलों से एक तार्किक अगला कदम है।
जच

@B_miner: शानदार! मुझे नहीं पता कि कैसे, लेकिन मैंने जीबीएम की अनदेखी की है। ऐसा लगता है कि GBM का उपयोग करना आसान है, बातचीत और गैर-अस्तित्व का पता लगाना।
टोमक टार्किंस्की

15

देर से जवाब, लेकिन मैं हाल ही में एक आर पैकेज forestFloor(2015) में आया था जो आपको एक स्वचालित फैशन में "अनब्लॉकबॉक्सिंग" कार्य करने में मदद करता है। यह बहुत ही आशाजनक लग रहा है!

library(forestFloor)
library(randomForest)
#simulate data
obs=1000
vars = 18
X = data.frame(replicate(vars,rnorm(obs)))
Y = with(X, X1^2 + sin(X2*pi) + 2 * X3 * X4 + 1 * rnorm(obs))
#grow a forest, remeber to include inbag
rfo=randomForest(X,Y,keep.inbag = TRUE,sampsize=250,ntree=50)
#compute topology
ff = forestFloor(rfo,X)
#ggPlotForestFloor(ff,1:9)
plot(ff,1:9,col=fcol(ff))

निम्नलिखित भूखंडों का निर्माण करता है:

यहां छवि विवरण दर्ज करें

यदि आप इंटरैक्शन की तलाश कर रहे हैं तो यह त्रि-आयामी दृश्य प्रदान करता है।


4
मैंने ggplot2 के लिए समर्थन को हटा दिया, अंतिम पंक्ति के बजाय उदाहरण के लिए: प्लॉट (ff, 1: 9, col = fcol (ff, 1: 4))
सोरेन हवेलुंड वेलिंग

9

जैसा कि ज़क ने उल्लेख किया है, मॉडल को समझने का एक तरीका यह है कि प्रतिक्रिया की साजिश की जाए क्योंकि भविष्यवक्ता भिन्न होते हैं। आप प्लॉटो आर पैकेज के साथ "किसी भी" मॉडल के लिए यह आसानी से कर सकते हैं । उदाहरण के लिए

library(randomForest)
data <- iris
data$Species <- factor(ifelse(data$Species=='virginica','virginica','other'))
mod <- randomForest(Species~Sepal.Length+Sepal.Width, data=data)
library(plotmo)
plotmo(mod, type="prob")

जो देता है

भूखंड

यह एक चर को बदलता है जबकि दूसरों को उनके औसत मूल्यों पर रखता है। इंटरैक्शन प्लॉट के लिए, यह दो चर बदलता है। (नोट नवंबर 2016 को जोड़ा गया: plotmoअब आंशिक निर्भरता भूखंडों का भी समर्थन करता है।)

ऊपर दिया गया उदाहरण केवल दो चर का उपयोग करता है; एक समय में एक या दो चर को देखते हुए अधिक जटिल मॉडल को एक टुकड़ा फैशन में देखा जा सकता है। चूंकि "अन्य" चर उनके औसत मूल्यों पर आयोजित किए जाते हैं, यह केवल डेटा का एक टुकड़ा दिखाता है, लेकिन फिर भी उपयोगी हो सकता है। कुछ उदाहरण प्लॉटो पैकेज के लिए विगनेट में हैं । अन्य उदाहरण rpart.plot पैकेज के साथ रॉट ट्री प्लॉटिंग के अध्याय 10 में हैं ।


4

मुझे इस प्रकार के प्रश्नों में बहुत दिलचस्पी है। मुझे लगता है कि बहुत सी जानकारी है जो हम एक यादृच्छिक जंगल से बाहर निकल सकते हैं।

इंटरैक्शन के बारे में, ऐसा लगता है कि ब्रेमेन और कल्टियर ने पहले से ही इसे देखने की कोशिश की है, खासकर वर्गीकरण आरएफ के लिए।

मेरी जानकारी के लिए, यह बेतरतीब आर पैकेज में लागू नहीं किया गया है। हो सकता है क्योंकि यह उतना सरल नहीं हो सकता है और क्योंकि "चर बातचीत" का अर्थ आपकी समस्या पर बहुत निर्भर है।

नॉनलाइनरिटी के बारे में, मुझे यकीन नहीं है कि आप क्या देख रहे हैं, रिग्रेशन फॉरेस्ट का उपयोग नॉनलाइनियर मल्टीपल रिग्रेशन की समस्याओं के लिए किया जाता है, बिना किसी प्रकार के नॉनलाइनर फंक्शन के उपयोग के लिए।


3

खेल में देर से लेकिन इस मोर्चे में कुछ नए घटनाक्रम हैं, उदाहरण के लिए LIME और SHAP । इसके अलावा जाँच के लायक एक पैकेज DALEX है (विशेष रूप से यदि R का उपयोग करते हुए, लेकिन किसी भी स्थिति में इसमें चीटशीट आदि शामिल हैं), हालाँकि यह फिलहाल बातचीत को कवर नहीं करता है। और ये सभी मॉडल-अज्ञेयवादी हैं इसलिए यादृच्छिक जंगलों, जीबीएम, तंत्रिका नेटवर्क आदि के लिए काम करेंगे।


(+1) अच्छे संसाधन!
जिनकी बाज़ार

2

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

पहले वाला पेपर ( यहां ) एक साधारण कारण वन का विस्तृत दृष्टिकोण देता है। कागज का पृष्ठ 9 एक कारण पेड़ उगाने के लिए एक कदम-दर-चरण प्रक्रिया देता है, जिसे बाद में सामान्य तरीके से जंगल में विस्तारित किया जा सकता है।नास्तिक और दांव 2017 के पृष्ठ 9 से लिया गया

समीकरण 4:

समीकरण ४

समीकरण 5: समीकरण ५


1
कारण कागज से पहले कागज़ात और उस कागज़ के स्क्रीनशॉट को कारण पेड़ प्रक्रिया को दिखाने के लिए अद्यतन किया गया।
गन्नावाग

1

मेरे प्रश्न से संबंधित देर से उत्तर यहां ( क्या हम बीज को ठीक करके यादृच्छिक वन 100% व्याख्या कर सकते हैं? )

z1z2

  1. z1mD1(z1)D2(z1)D3(z1)Dm(z1)
  2. mT1(z1,z2)T2(z1,z2)T3(z1,z2)Tm(z1,z2)
  3. jth(j=1,2,...,m)xif^j(xi)(in,jm)
    F^(xi)=>1mj=1mf^j(xi)
  4. F^(xi)(z1,z2)xi
  5. xi
    x1F^(x1) - which is fixed> thanks to (z1,z2)
    x2F^(x2) -> which is fixed thanks to (z1,z2)
    x3→>F^(x3) - which is fixed thanks to (z1,z2)
    x4>→F^(x4) - which is fixed thanks to (z1,>z2)
    ....
  6. x1x2

यह पेड़ों के एकत्रीकरण पर आधारित प्रत्येक पहनावे के तरीकों के लिए भी काम करता है।

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