এলোমেলো বন থেকে জ্ঞান অর্জন করা


127

এলোমেলো বনগুলিকে ব্ল্যাক বক্স হিসাবে বিবেচনা করা হয় তবে সম্প্রতি আমি ভাবছিলাম যে এলোমেলো বন থেকে কোন জ্ঞান পাওয়া যায়?

সর্বাধিক সুস্পষ্ট বিষয় হল ভেরিয়েবলের গুরুত্ব, সহজতম ভেরিয়েন্টে এটি কেবল একটি ভেরিয়েবলের সংখ্যার সংখ্যা গণনা করেই করা যেতে পারে।
দ্বিতীয় জিনিসটির বিষয়ে আমি ভাবছিলাম ইন্টারঅ্যাকশন। আমি মনে করি গাছের সংখ্যা যদি যথেষ্ট পরিমাণে বড় হয় তবে জোড় সংখ্যক ভেরিয়েবলের সংখ্যার পরীক্ষা করা যেতে পারে (চি স্কোয়ারের স্বাধীনতার মতো কিছু)। তৃতীয় জিনিসটি ভেরিয়েবলের ননলাইনারিটি। আমার প্রথম ধারণাটি কেবলমাত্র একটি ভেরিয়েবল বনাম স্কোরের একটি চার্টের দিকে তাকানো ছিল, তবে আমি এখনও নিশ্চিত নই যে এটি কোনও অর্থবোধ করে কিনা।

23.01.2012 প্রেরণা যোগ করা হয়েছে

আমি একটি লগইট মডেল উন্নত করতে এই জ্ঞানটি ব্যবহার করতে চাই। আমি মনে করি (বা কমপক্ষে আমি আশা করি) যে অবহেলা করা হয়েছে এমন ইন্টারঅ্যাকশন এবং ননলাইনারিটি পাওয়া সম্ভব।


1
আর ব্যবহার করে আপনি একটি এলোমেলো বন দ্বারা পরিমাপ করা যায় হিসাবে পরিবর্তনশীল গুরুত্বের একটি ডটচার্ট উত্পাদন করতে পারেন ।
জর্জ ডোনটাস

1
স্টোকাস্টিক গ্রেডিয়েন্ট ট্রি বৃদ্ধির জন্য কীভাবে পরিবর্তনশীল গুরুত্বের ব্যবস্থাগুলি গণনা করা হয় তার সম্পর্কিত একটি থ্রেড
এন্টোইন

আমি বুঝতে পারি এটি সম্ভবত খুব দেরী হয়ে গেছে, তবে আপনি যদি কেবল লজিট মডেলটি উন্নত করতে চান তবে আপনি কেন পোস্ট-ল্যাসো লজিস্টিক রিগ্রেশন ব্যবহার করবেন না? আপনি কেবল দণ্ড / সঙ্কুচিত ছাড়াই নির্বাচনের পরে নির্বাচিত সহগ ব্যবহার করে মডেলটিকে রিফাইট করতে পারেন। আপনাকে টিউনিংয়ের পদ্ধতিটি কিছুটা সামান্য তিরস্কার করতে হবে, তবে এটি একটি আরও সরাসরি বিকল্প যা আপনি যা চান ঠিক তা করে।
ইলপ্রিন্সি

উত্তর:


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, এই গাছটি পর্যবেক্ষণটিকে "অন্যান্য" হিসাবে শ্রেণিবদ্ধ করে। যদি এটি ৪.৯৯ এর বেশি হয় তবে এটি পর্যবেক্ষণটিকে "ভার্জিনিকা" হিসাবে শ্রেণিবদ্ধ করে। এলোমেলো অরণ্য এমন অনেক গাছের সংগ্রহ সহজ, যেখানে প্রত্যেককে ডেটা একটি এলোমেলো উপসেটে প্রশিক্ষিত হয়। প্রতিটি গাছ তারপরে প্রতিটি পর্যবেক্ষণের চূড়ান্ত শ্রেণিবিন্যাসের উপর "ভোট" দেয়।

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

আপনি আরএফ থেকে পৃথক গাছগুলিও টেনে আনতে পারেন এবং তাদের কাঠামোটি দেখতে পারেন। 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

এই টেবিলটি প্রতিটি ভেরিয়েবলকে অপসারণের ফলে মডেলের যথার্থতা হ্রাস করে represents অবশেষে, কালো বাক্সে কী চলছে তা দেখতে আপনি এলোমেলো বন মডেল থেকে আরও অনেক প্লট তৈরি করতে পারেন:

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
উত্তরের জন্য ধন্যবাদ, প্রচুর দরকারী তথ্য রয়েছে তবে আমি যা খুজছিলাম তা ঠিক তা নয়। এই প্রশ্নের পিছনে যে অনুপ্রেরণা রয়েছে তা আমাকে আরও পরিষ্কার করে দেওয়া দরকার। লগইট মডেলটি উন্নত করতে আমি একটি এলোমেলো বন ব্যবহার করতে চাই, উন্নতির মাধ্যমে আমি কিছু মিথস্ক্রিয়া যুক্ত করতে চাইছি বা ননলাইনারের রূপান্তরটি ব্যবহার করব।
টোমেক তার্কিজেনস্কি

@ টোমেকটারজাইস্কি এটি একটি আকর্ষণীয় সমস্যা এবং এটির মতোই আমি এখনই আচরণ করছি। আমি "লজিট মডেল" ধরে ধরেছি আপনি লজিস্টিক রিগ্রেশন বা এরকম কিছু বোঝাতে চাইছেন? সমস্ত জোড়ের ভেরিয়েবলের মধ্যে মিথস্ক্রিয়া সম্পন্ন মডেল থেকে ভবিষ্যদ্বাণী নির্বাচন করতে আমি লসো লজিস্টিক রিগ্রেশন (গ্ল্যামনেট আর প্যাকেজ থেকে) ব্যবহার করছি। আমি এখনও কোনও অ-লাইন শর্তে যোগ করি নি - তবে নীতিগতভাবে এটিও সম্ভব হওয়া উচিত। আমি অনুমান করি কেবলমাত্র ইস্যুটি সিদ্ধান্ত নিচ্ছে যে কোন অফলাইন শর্তাবলী চেষ্টা করা উচিত (বহুপদী শর্তাদি, ঘৃণ্য রূপান্তর, ইত্যাদি?)। এছাড়াও, আমি কোনও উচ্চতর অর্ডার ইন্টারঅ্যাকশন তুলছি না তবে এটি খুব সহজ।
আন জেড।

2
@ টমেক, আপনি এই উত্তরটি কী পাচ্ছেন না? আপনি যদি আর এ র্যান্ডমফোরস্ট প্যাকেজটি ব্যবহার করছেন তবে জাচ বর্ণিত প্লটগুলি খুব কার্যকর হওয়া উচিত। বিশেষত, আপনি লগইট মডেলটিতে ক্রমাগত ভবিষ্যদ্বাণীদের চেষ্টা করার জন্য রূপান্তরকরণের ধরণের অনুমান করার জন্য আপনার লগইট মডেলটিতে বৈশিষ্ট্য নির্বাচনের জন্য varImpPlot এবং আংশিকপ্লট ব্যবহার করতে পারেন। আমি প্রস্তাব দিচ্ছি যে পূর্বের প্লটটি ভবিষ্যদ্বাণীকারী এবং প্রতিক্রিয়ার মধ্যে নৈখিক সম্পর্ক বিদ্যমান তা নির্ধারণ করতে ব্যবহার করা হবে এবং তারপরে আপনাকে সেই রূপান্তরটি স্পষ্টভাবে তৈরি করতে বা সেই পরিবর্তনশীলটির উপর একটি স্প্লাইন ব্যবহার করার অনুমতি দেয়।
বি_মিনার

2
@ বি_মিনিয়ার - কেবল অনুমান, তবে টোমেক ভেরিয়েবলের মধ্যে কীভাবে অ-রৈখিক ইন্টারঅ্যাকশন সন্ধান করতে চাইছে বলে মনে হচ্ছে কারণ লজিস্টিক রিগ্রেশন ইতিমধ্যে রৈখিক সম্পর্কগুলিকে ধারণ করে।
rm999

@ rm999 আপনি লগইট মডেলটিতে একটি লিনিয়ার ইন্টারঅ্যাকশন কীভাবে সংজ্ঞায়িত করবেন? রূপান্তরিত ভেরিয়েবলের মধ্যে মিথস্ক্রিয়া পদ তৈরি করা হয়েছে?
বি_মিনার

52

কিছু সময় আগে আমাকে আমার সংস্থার কিছু রসায়নবিদদের কাছে একটি আরএফ মডেল-উপযুক্ত বলে প্রমাণ করতে হয়েছিল। আমি বিভিন্ন ভিজ্যুয়ালাইজেশন কৌশল চেষ্টা করে বেশ সময় ব্যয় করেছি। প্রক্রিয়া চলাকালীন, আমি দুর্ঘটনাক্রমে কিছু নতুন কৌশল নিয়ে এসেছিলাম যা আমি একটি আর প্যাকেজ ( ফরেস্টফ্লুর ) এঁটে দিয়েছিলাম বিশেষত এলোমেলো বনদর্শনগুলির জন্য।

শাস্ত্রীয় পদ্ধতির আংশিক নির্ভরতা প্লটগুলি এর দ্বারা সমর্থিত: রাইমিনার (ডেটা-ভিত্তিক সংবেদনশীলতা বিশ্লেষণ আংশিক নির্ভরতা পুনর্বিবেচনা করা হয়), বা এলোমেলোভাবে প্যাকেজে আংশিকপ্লট । আমি ইন্টারঅ্যাকশনগুলি আবিষ্কারের মার্জিত উপায় হিসাবে আংশিক নির্ভরতা প্যাকেজ আইসবক্সকে পাইএডিআরএফ প্যাকেজটি ব্যবহার করেন নি , তবে দেখে মনে হচ্ছে কিছুটা দুর্দান্ত ভিজ্যুয়ালাইজেশন আরএফের জন্য উত্সর্গীকৃত। GgRandomForest প্যাকেজ এছাড়াও দরকারী দৃশ্য বৃহৎ সেট রয়েছে।

বর্তমানে ফরেস্টফ্লুর র্যান্ডমফোরস্ট অবজেক্টগুলিকে সমর্থন করে (অন্যান্য আরএফ প্রয়োগের জন্য সমর্থন চলছে)। এছাড়াও বৈশিষ্ট্যযুক্ত অবদানগুলি গ্রেডিয়েন্ট বুস্টেড গাছগুলির জন্য গণনা করা যেতে পারে, কারণ প্রশিক্ষণের পরে এই গাছগুলি এলোমেলো বন গাছ থেকে খুব বেশি আলাদা নয়। সুতরাং ফরেস্টফ্লোর ভবিষ্যতে এক্সজিবিস্টকে সমর্থন করতে পারে। আংশিক নির্ভরতা প্লটগুলি সম্পূর্ণরূপে মডেল ইনগ্রেন্টেট।

সমস্ত প্যাকেজগুলির বৈশিষ্ট্য স্পেস থেকে স্থান লক্ষ্যকে লক্ষ্য করার জন্য কোনও মডেলের জ্যামিতিক ম্যাপিং কাঠামোটি কল্পনা করতে সাধারণভাবে রয়েছে। একটি সাইন কার্ভ y = sin (x) x থেকে y এ ম্যাপিং হবে এবং 2D তে প্লট করা যেতে পারে। সরাসরি একটি আরএফ ম্যাপিং প্লট করার জন্য প্রায়শই অনেকগুলি মাত্রা প্রয়োজন। পরিবর্তে সামগ্রিক ম্যাপিং কাঠামোটি প্রজেক্ট করা, কাটা বা পচে যেতে পারে যেমন পুরো ম্যাপিং কাঠামোটি 2D মার্জিনাল প্লটের ক্রম হিসাবে সিদ্ধ করা হয়। যদি আপনার আরএফ মডেলটি কেবলমাত্র প্রধান প্রভাবগুলি ধারণ করে এবং ভেরিয়েবলগুলির মধ্যে কোনও মিথস্ক্রিয়া না করে তবে ক্লাসিক ভিজ্যুয়ালাইজেশন পদ্ধতিগুলি ঠিকঠাক করবে। তারপরে আপনি আপনার মডেল কাঠামোটিকে এই মতো সহজ করতে পারবেনy=F(X)f1(x1)+f2(x2)+...+fd(xd)। তারপরে প্রতিটি ভেরিয়েবলের দ্বারা প্রতিটি আংশিক ফাংশন সাইন বক্ররেখার মতোই ভিজ্যুয়ালাইজ করা যায়। যদি আপনার আরএফ মডেল বড় আকারের মিথস্ক্রিয়া ক্যাপচার করে নিয়ে থাকে তবে তা আরও সমস্যাযুক্ত। কাঠামোর 3 ডি স্লাইস দুটি বৈশিষ্ট্য এবং আউটপুট মধ্যে মিথস্ক্রিয়া কল্পনা করতে পারেন। সমস্যাটি ভিজ্যুয়ালাইজ করার জন্য কোন বৈশিষ্ট্যগুলির সংমিশ্রণটি জানতে হবে ( আইসবক্স এই সমস্যাটির সমাধান করে)। এছাড়াও অন্যান্য সুপ্ত ইন্টারঅ্যাকশনগুলির জন্য এখনও দায়বদ্ধ না হয় তা বলা সহজ নয়।

ইন এই কাগজ , আমি ব্যাখ্যা করতে কি প্রকৃত বায়োকেমিক্যাল সম্পর্ক একটি খুব ছোট আরএফ মডেল দখল করে 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)

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

জে.ফ্রিডম্যান বর্ণনা করেছেন এ.লিয়াউ কোডড আংশিক নির্ভরতা প্লটগুলির জন্য শেষ অবধি। যা মূল প্রভাবের জন্য সূক্ষ্ম কাজ করে।

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

এখানে চিত্র বর্ণনা লিখুন


আমি আগে পোস্ট করেছিলাম যে উত্সাহিত গাছগুলির জন্য বৈশিষ্ট্যটির অবদানও গণনা করা যেতে পারে। আমি একটি পরীক্ষা অ্যালগরিদম লিখেছি এবং এটি সম্ভব। দুর্ভাগ্যক্রমে, উত্সাহিত গাছগুলির জন্য অবদানের বৈশিষ্ট্যগুলি, ব্যাগযুক্ত গাছগুলির মতো একই উপকারী বৈশিষ্ট্যগুলি দেখাবেন না। একটি বৈশিষ্ট্যের প্রভাবগুলি সমস্ত বৈশিষ্ট্যের অবদান জুড়ে ছড়িয়ে ছিটিয়ে থাকে, সুতরাং দৃশ্যটি বেশ বিভ্রান্ত হয়ে যায়।
সোরেন হাভেলুন্ড ওয়েলিং

Oups! আমি আমার পরীক্ষার অ্যালগরিদমে একটি ত্রুটি পেয়েছি যা সমস্ত সমস্যা ছড়িয়ে দিয়েছে। ফরেস্টফ্লুর গ্রেডিয়েন্ট বুস্টেড গাছগুলির জন্য ঠিক সূক্ষ্ম কাজ করার জন্য আপডেট করা যেতে পারে।
সোরেন হাভেলুন্ড ওয়েলিং

3
ফরেস্টফ্লোয়ারটি জিবিএম অবজেক্ট গ্রহণ করতে আপডেট করা হয়েছে?
মিশা

এখনও অবধি, আমি একটি বিপরীত বাস্তবায়ন করেছি, যা র্যান্ডমফোরস্ট বাস্তবায়নকে পুরোপুরি কার্যকরী গ্রেডিয়েন্ট বুস্টিং মেশিনে আবৃত করে এবং বৈশিষ্ট্যের অবদান গণনা করার জন্য কিছু পদ্ধতি সংজ্ঞায়িত করে। আমি বাস্তবায়নটি যুক্তিসঙ্গত দক্ষ বলে মনে করি। আপনি কোডটি এখানে পাবেন: github.com/sorhawell/forestFloor/blob/master/inst/example/…
সোরেন হ্যাভেলন্ড ওয়েলিং

একটি পূর্ণ বন্দর তৈরি করা কঠোর পরিশ্রম :) এই বাস্তবায়নটি বেশ কয়েকটি লাইনে করা হয়েছিল।
সোরেন হাভেলুন্ড ওয়েলিং

24

এই সূক্ষ্ম প্রতিক্রিয়াগুলির পরিপূরক হিসাবে, আমি গ্রেডিয়েন্ট বুস্টেড গাছগুলির ব্যবহারের কথা উল্লেখ করব (যেমন জিবিএম প্যাকেজ আরে )) আর এ, আমি এলোমেলো বনাঞ্চলের তুলনায় এটি পছন্দ করি কারণ র্যান্ডমফোরস্টের তুলনায় অনুপস্থিত মানগুলির অনুমতি রয়েছে যেখানে অনুচ্ছেদের প্রয়োজন। পরিবর্তনীয় গুরুত্ব এবং আংশিক প্লটগুলি আপনার লগিট মডেলটিতে বৈশিষ্ট্য নির্বাচন এবং অলৈখিক রূপান্তর অনুসন্ধানে সহায়তা করার জন্য (র্যান্ডমফোরেস্টের মতো) উপলব্ধ। তদতিরিক্ত, পরিবর্তনশীল মিথস্ক্রিয়াটি ফ্রেডম্যানের এইচ-স্ট্যাটিস্টিক ( interact.gbm) দ্বারা প্রদত্ত রেফারেন্স সহ সম্বোধন করা হয় J.H. Friedman and B.E. Popescu (2005). “Predictive Learning via Rule Ensembles.” Section 8.1। ট্রিফোনেট নামে একটি বাণিজ্যিক সংস্করণ সালফোর্ড সিস্টেমগুলি থেকে পাওয়া যায় এবং এই ভিডিও উপস্থাপনাটি তাদের পরিবর্তনশীল মিথস্ক্রিয়া অনুমানের ভিডিওটি গ্রহণের কথা বলে ।


2
আমি সম্মত, GBMs এলোমেলো বন থেকে লজিকাল পরবর্তী পদক্ষেপ।
Zach

@ বি_মিনার: দুর্দান্ত! আমি জানি না কীভাবে, তবে আমি জিবিএমকে উপেক্ষা করেছি। দেখে মনে হচ্ছে যে জিবিএম ব্যবহার করা মিথস্ক্রিয়া এবং অরৈখিকতাগুলি সনাক্ত করা সহজ।
টোমেক তার্কিজেনস্কি

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
আমি শেষ পংক্তির চেষ্টা করে উদাহরণস্বরূপ: প্লট (এফএফ, 1: 9, কল = এফসিওএল (এফএফ, 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 প্যাকেজ সহ rpart গাছ প্লট করার 10 অধ্যায়ে রয়েছে ।


4

আমি নিজে এই ধরণের প্রশ্নে খুব আগ্রহী। আমি মনে করি যে এলোমেলো বন থেকে আমরা অনেক তথ্য পেতে পারি।

মিথস্ক্রিয়া সম্পর্কে, দেখে মনে হচ্ছে ব্রেমন এবং কুলটিয়ার ইতিমধ্যে এটি দেখার চেষ্টা করেছেন, বিশেষত শ্রেণিবদ্ধকরণ আরএফগুলির জন্য।

আমার জানা মতে এটি এলোমেলোভাবে প্যাকেজটিতে প্রয়োগ করা হয়নি। সম্ভবত এটি এতটা সহজ নাও হতে পারে এবং কারণ "ভেরিয়েবল ইন্টারঅ্যাকশনস" এর অর্থ আপনার সমস্যার উপর নির্ভরশীল।

অরৈখিকতার বিষয়ে, আমি নিশ্চিত নই যে আপনি কী সন্ধান করছেন, রিগ্রেশন ফরেস্ট কোন প্রকারের ননলাইনার একাধিক রিগ্রেশন সমস্যার জন্য কোন ধরণের ননলাইনার ফাংশন ব্যবহার করবেন তা ব্যবহার করা হবে।


3

খেলা মরহুম কিন্তু এই সামনে কিছু নতুন উন্নয়ন, উদাহরণস্বরূপ হয় LIME এবং SHAP । এছাড়াও পরীক্ষা করার মতো একটি প্যাকেজ হ'ল ডএএলএক্স (বিশেষত যদি আর ব্যবহার করা হয় তবে কোনও ক্ষেত্রে দুর্দান্ত চিটশিট ইত্যাদি রয়েছে), যদিও এই মুহুর্তে ইন্টারঅ্যাকশনগুলি কভার করে বলে মনে হচ্ছে না। এবং এগুলি সমস্ত মডেল-অজোনস্টিক তাই এলোমেলো বন, জিবিএম, নিউরাল নেটওয়ার্ক ইত্যাদির জন্য কাজ করবে


(+1) চমৎকার সম্পদ!
এমকেটি

2

তথ্য সম্পর্কে আরও তথ্য সরবরাহ করে এমন এলোমেলো বনাঞ্চলের সামান্য পরিবর্তন হ'ল সাম্প্রতিক বিকাশযুক্ত কার্যকারণ বন পদ্ধতি। দেখুন GRF আর-প্যাকেজ এবং প্রেরণার কাগজ এখানে । কার্যকারণ প্রভাবগুলিতে ভিন্নতা নির্ধারণের জন্য এলোমেলো বন বুনিয়াদি পদ্ধতিগুলি ব্যবহার করা ধারণা।

পূর্ববর্তী একটি কাগজ ( এখানে ) একটি সাধারণ কার্যকারণ বনাঞ্চলে বিস্তারিত ধারণা দেয়। কাগজ পৃষ্ঠা 9 একটি কার্যকারণ গাছ বৃদ্ধি করার জন্য একটি ধাপে ধাপে পদ্ধতি দেয়, যা পরে সাধারণ উপায়ে বনে বর্ধিত করা যেতে পারে।অ্যাথে এবং বাজিার পৃষ্ঠা 9 থেকে নেওয়া 2017

সমীকরণ 4:

সমীকরণ 4

সমীকরণ 5: সমীকরণ 5


1
কার্যকারণ ট্রি পদ্ধতিটি দেখানোর জন্য সেই কাগজ থেকে পূর্বের কাগজ এবং স্ক্রিনশটগুলির লিঙ্কগুলির সাথে আপডেট হয়েছে।
ganawag

1

আমার প্রশ্নের সাথে সম্পর্কিত দেরী উত্তর এখানে ( আমরা বীজ স্থির করে র্যান্ডম ফরেস্টকে 100% ব্যাখ্যাযোগ্য করে তুলতে পারি? ):

প্রশিক্ষণ সেট তৈরিতে বীজ হতে দিন এবং বৈশিষ্ট্যটির উপসেটটি নির্বাচনের ক্ষেত্রে বীজ হন (সরলীকরণের জন্য, আমি এখানে কেবলমাত্র 2 ধরণের বীজ করি )।z1z2

  1. থেকে , প্রশিক্ষণ সেটগুলি তৈরি করা হয়: , , , ..., । z1mD1(z1)D2(z1)D3(z1)Dm(z1)
  2. ঐ traning সেট থেকে, সংশ্লিষ্ট সিদ্ধান্ত গাছ সৃষ্টি করেছেন এবং ক্রস বৈধতা মাধ্যমে টিউন করা হয়: , , , ..., ।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

এটি গাছের সংহতকরণের ভিত্তিতে প্রতিটি জড়ো পদ্ধতিতেও কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.