আর: জিবিএম এবং র‌্যান্ডমফোরেস্টের আংশিক নির্ভরতা প্লটগুলিতে আমি কী দেখতে পাচ্ছি?


14

প্রকৃতপক্ষে, আমি ভেবেছিলাম আংশিক নির্ভরতার প্লট দিয়ে কেউ কী কী প্রদর্শন করতে পারে তা আমি বুঝতে পেরেছি, তবে খুব সাধারণ অনুমানমূলক উদাহরণ ব্যবহার করে আমি বিস্মিত হয়ে পড়েছি। কোডের নিম্নলিখিত খণ্ড আমি তিনটি স্বাধীন ভেরিয়েবল (উৎপন্ন একটি , , ) এবং নির্ভরশীল পরিবর্তনশীল ( Y ) সঙ্গে সঙ্গে ঘনিষ্ঠ রৈখিক সম্পর্ক দেখানো Y , যখন একটি এবং সঙ্গে আনকোরিলেটেড Y । আমি আর প্যাকেজটি ব্যবহার করে একটি উত্সাহিত রিগ্রেশন ট্রি দিয়ে একটি রিগ্রেশন বিশ্লেষণ করি gbm:

a <- runif(100, 1, 100)
b <- runif(100, 1, 100)
c <- 1:100 + rnorm(100, mean = 0, sd = 5)
y <- 1:100 + rnorm(100, mean = 0, sd = 5)
par(mfrow = c(2,2))
plot(y ~ a); plot(y ~ b); plot(y ~ c)
Data <- data.frame(matrix(c(y, a, b, c), ncol = 4))
names(Data) <- c("y", "a", "b", "c")
library(gbm)
gbm.gaus <- gbm(y ~ a + b + c, data = Data, distribution = "gaussian")
par(mfrow = c(2,2))
plot(gbm.gaus, i.var = 1)
plot(gbm.gaus, i.var = 2)
plot(gbm.gaus, i.var = 3)

না আশ্চর্যজনক, ভেরিয়েবলের জন্য একটি এবং আংশিক নির্ভরতা প্লট গড় প্রায় অনুভূমিক রেখা উত্পাদ একটি । আমার ধাঁধাটি কী পরিবর্তনশীল গ এর প্লট । আমি ব্যাপ্তির জন্য অনুভূমিক রেখা পেতে <40 এবং > 60 এবং y অক্ষ গড় পাসে মান অবধি সীমিত থাকবে Y । যেহেতু a এবং b সম্পূর্ণরূপে y এর সাথে সম্পর্কিত নয় (এবং এইভাবে মডেলটির পরিবর্তনশীল গুরুত্ব 0), আমি প্রত্যাশা করি যে সিএর মানগুলির একটি খুব সীমিত পরিসরের জন্য সিগময়েড আকারের পরিবর্তে এর পুরো পরিসীমা জুড়ে আংশিক নির্ভরতা দেখায়। আমি ফ্রেডম্যান (2001) "লোভী ফাংশন আনুমানিককরণ: একটি গ্রেডিয়েন্ট বুস্টিং মেশিন" এবং হাস্টি এট আল-তে তথ্য সন্ধান করার চেষ্টা করেছি। (২০১১) "স্ট্যাটিস্টিকাল লার্নিং এর উপাদানসমূহ", তবে আমার গাণিতিক দক্ষতা এতে সমস্ত সমীকরণ এবং সূত্রগুলি বোঝার জন্য খুব কম। এইভাবে আমার প্রশ্ন: পরিবর্তনশীল সি এর জন্য আংশিক নির্ভরতা প্লটের আকারটি কী নির্ধারণ করে ? (অনুগ্রহপূর্বক কোনও অংক-গণিতবিদকে বোঝার মতো শব্দে ব্যাখ্যা করুন!)

17 এপ্রিল 2014 এ যুক্ত হয়েছে:

প্রতিক্রিয়ার জন্য অপেক্ষা করার সময়, আমি আর-প্যাকেজ সহ বিশ্লেষণের জন্য একই উদাহরণ ডেটা ব্যবহার করেছি randomForest। র্যান্ডমফোরস্টের আংশিক নির্ভরতা প্লটগুলি জিবিএম প্লটের কাছ থেকে আমার প্রত্যাশার সাথে অনেক বেশি মিলছে: বর্ণনামূলক ভেরিয়েবলের a এবং b এর আংশিক নির্ভরতা এলোমেলোভাবে এবং ঘনিষ্ঠভাবে 50 এর কাছাকাছি পরিবর্তিত হয়, যখন ব্যাখ্যামূলক ভেরিয়েবল সি এর সম্পূর্ণ পরিসীমা (এবং প্রায় উপরের দিকে আংশিক নির্ভরতা দেখায়) y এর সম্পূর্ণ ব্যাপ্তি )। কি আংশিক নির্ভরতা প্লট এই বিভিন্ন আকার কারণ হতে পারে gbmএবং randomForest?

জিবিএম এবং র্যান্ডমফোরস্টের আংশিক প্লট

এখানে পরিবর্তিত কোড যা প্লটের তুলনা করে:

a <- runif(100, 1, 100)
b <- runif(100, 1, 100)
c <- 1:100 + rnorm(100, mean = 0, sd = 5)
y <- 1:100 + rnorm(100, mean = 0, sd = 5)
par(mfrow = c(2,2))
plot(y ~ a); plot(y ~ b); plot(y ~ c)
Data <- data.frame(matrix(c(y, a, b, c), ncol = 4))
names(Data) <- c("y", "a", "b", "c")

library(gbm)
gbm.gaus <- gbm(y ~ a + b + c, data = Data, distribution = "gaussian")

library(randomForest)
rf.model <- randomForest(y ~ a + b + c, data = Data)

x11(height = 8, width = 5)
par(mfrow = c(3,2))
par(oma = c(1,1,4,1))
plot(gbm.gaus, i.var = 1)
partialPlot(rf.model, Data[,2:4], x.var = "a")
plot(gbm.gaus, i.var = 2)
partialPlot(rf.model, Data[,2:4], x.var = "b")
plot(gbm.gaus, i.var = 3)
partialPlot(rf.model, Data[,2:4], x.var = "c")
title(main = "Boosted regression tree", outer = TRUE, adj = 0.15)
title(main = "Random forest", outer = TRUE, adj = 0.85)

1
আপনি সম্ভবত হাইপারপ্যারামিটারগুলির একটি স্পর্শ টিউন করতে চাইতে পারেন। আমি নিশ্চিত নই যে জিবিএম-তে গাছের ডিফল্ট সংখ্যাটি কী, তবে এটি এত ছোট হতে পারে এটির একটি স্বাস্থ্যকর বক্রতা শেখার সময় নেই।
শেয়া পার্কস

@ শিয়া পার্কস - আপনি ঠিক বলেছেন। গাছের অমূল্য সংখ্যা 100 টি যা একটি ভাল মডেল তৈরি করতে পর্যাপ্ত ছিল না। 2000 টি গাছের সাথে জিবিএম এবং এলোমেলো বনের আংশিক নির্ভরতা প্লটগুলি প্রায় একই রকম।
ব্যবহারকারী 7417

উত্তর:


7

এটি ইতিমধ্যে আর র্যান্ডমফোরস্ট লাইব্রেরিতে বান্ডিল হয়ে গেছে বুঝতে পেরে আমি আমার নিজের "আংশিক। ফাংশন-প্লটার" লেখার জন্য কিছু সময় ব্যয় করেছি।

[সম্পাদনা করুন ... তবে তারপরে আমি সিআরএএন প্যাকেজ ফরেস্ট ফ্লোর তৈরিতে এক বছর কাটিয়েছি , যা আমার মতে শাস্ত্রীয় আংশিক নির্ভরতা প্লটগুলির চেয়ে উল্লেখযোগ্যভাবে ভাল]

আংশিক.ফংশন প্লটটি উদাহরণস্বরূপ দুর্দান্ত কারণ আপনি এখানে এখানে এই সিমুলেশন উদাহরণ দেখান, যেখানে ব্যাখ্যাযোগ্য ভেরিয়েবল অন্যান্য ভেরিয়েবলগুলির সাথে ইন্টারেক্ট করে না। প্রতিটি ব্যাখ্যাকারী চলক যদি কোনও অজানা ফাংশন দ্বারা টার্গেট-ওয়ায় যোগ করে অবদান রাখে তবে এই অনুমানিত লুকানো ফাংশনটি দেখানোর জন্য এই পদ্ধতিটি দুর্দান্ত। আমি প্রায়শই আংশিক ফাংশনের সীমানায় এ জাতীয় চাটুকারিতা দেখি।

কিছু কারণ: র্যান্ডমফোর্স্টে 'নোডিজাইজ = 5' নামে একটি যুক্তি রয়েছে যার অর্থ কোনও গাছ 5 বা তার কম সদস্যের একটি গ্রুপকে বিভক্ত করবে না। সুতরাং প্রতিটি গাছ আরও নির্ভুলতার সাথে পার্থক্য করতে পারে না। ব্যাগিং / বুটস্ট্র্যাপিং স্তর এনসেমপলটি পৃথক গাছের বহু ধাপের ফাংশনকে ভোট দিয়ে মসৃণ করে - তবে কেবল ডেটা অঞ্চলের মাঝখানে। উপস্থাপিত স্থানের সীমানার কাছাকাছি, আংশিক.ফংশনের 'প্রশস্ততা' পড়বে। নোডসাইজ = 3 সেট করা এবং / অথবা শব্দের তুলনায় আরও পর্যবেক্ষণ পাওয়া এই সীমানা সমতলকরণকে হ্রাস করতে পারে ... যখন শব্দ অনুপাতের সংকেতটি এলোমেলো বনের মধ্যে সাধারণভাবে পড়ে তখন পূর্বাভাসের স্কেল কনডেন্সগুলি। সুতরাং ভবিষ্যদ্বাণীগুলি একেবারে শর্তাবলী সঠিক নয়, তবে কেবলমাত্র লক্ষ্যমাত্রার সাথে রৈখিকভাবে সম্পর্কযুক্ত। আপনি শব্দের অনুপাতের খুব কম সংকেতের উদাহরণ হিসাবে a এবং b মানগুলি দেখতে পান, এবং তাই এই আংশিক ফাংশন খুব সমতল। এটি এলোমেলো বনের একটি দুর্দান্ত বৈশিষ্ট্য যা আপনি ইতিমধ্যে প্রশিক্ষণ সংস্থার পূর্বাভাসের পরিসীমা থেকে অনুমান করতে পারেন মডেলটি কতটা ভাল পারফর্ম করছে। OOB.predictions এছাড়াও দুর্দান্ত ..

কোনও ডেটা নেই এমন অঞ্চলে আংশিক প্লটের সমতলকরণ যুক্তিসঙ্গত: এলোমেলো বন এবং কার্ট যেমন ডেটা চালিত মডেলিং, আমি ব্যক্তিগতভাবে এই ধারণাটি পছন্দ করি যে এই মডেলগুলি এক্সট্রোপোলেটেড না। সুতরাং সি = 500 বা সি = 1100 এর পূর্বাভাস সি = 100 এর মতোই বা বেশিরভাগ ক্ষেত্রে সি = 98 এর মতোই।

এখানে সীমানা সমতলকরণ সহ একটি কোড উদাহরণ রয়েছে:

আমি জিবিএম প্যাকেজটি চেষ্টা করি নি ...

আপনার eaxample উপর ভিত্তি করে এখানে কিছু চিত্রণমূলক কোড ...

#more observations are created...
a <- runif(5000, 1, 100)
b <- runif(5000, 1, 100)
c <- (1:5000)/50 + rnorm(100, mean = 0, sd = 0.1)
y <- (1:5000)/50 + rnorm(100, mean = 0, sd = 0.1)
par(mfrow = c(1,3))
plot(y ~ a); plot(y ~ b); plot(y ~ c)
Data <- data.frame(matrix(c(y, a, b, c), ncol = 4))
names(Data) <- c("y", "a", "b", "c")
library(randomForest)
#smaller nodesize "not as important" when there number of observartion is increased
#more tress can smooth flattening so boundery regions have best possible signal to             noise, data specific how many needed

plot.partial = function() {
partialPlot(rf.model, Data[,2:4], x.var = "a",xlim=c(1,100),ylim=c(1,100))
partialPlot(rf.model, Data[,2:4], x.var = "b",xlim=c(1,100),ylim=c(1,100))
partialPlot(rf.model, Data[,2:4], x.var = "c",xlim=c(1,100),ylim=c(1,100))
}

#worst case! : with 100 samples from Data and nodesize=30
rf.model <- randomForest(y ~ a + b + c, data = Data[sample(5000,100),],nodesize=30)
plot.partial()

#reasonble settings for least partial flattening by few observations: 100 samples and nodesize=3 and ntrees=2000
#more tress can smooth flattening so boundery regions have best possiblefidelity
rf.model <- randomForest(y ~ a + b + c, data = Data[sample(5000,100),],nodesize=5,ntress=2000)
plot.partial()

#more observations is great!
rf.model <- randomForest(y ~ a + b + c,
 data = Data[sample(5000,5000),],
 nodesize=5,ntress=2000)
plot.partial()

4

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

gbm.gaus <- gbm(y~., data = Data, dist = "gaussian")
library(plotmo)   # for the plotres function
plotres(gbm.gaus) # plot the error per ntrees and the residuals

যা দেয়

পটভূমি

বাম হাতের চক্রান্তে আমরা দেখতে পাচ্ছি যে ত্রুটির বক্ররেখাটি শেষ হয়ে যায় নি। এবং ডান হাতের চক্রান্তে অবশিষ্টাংশগুলি আমরা যা চাই তা তা নয়।

আমরা যদি আরও বেশি সংখ্যক গাছ দিয়ে মডেলটি পুনর্নির্মাণ করি

gbm.gaus1 <- gbm(y~., data = Data, dist = "gaussian",
                 n.trees=5000, interact=3)
plotres(gbm.gaus1)

আমরা পেতে

পটভূমি

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

library(plotmo)
plotmo(gbm.gaus1, pmethod="partdep", all1=TRUE, all2=TRUE)
plotmo(rf.model,  pmethod="partdep", all1=TRUE, all2=TRUE)

যা দেয়

পটভূমি

প্রত্যাশা অনুযায়ী জিবিএম এবং এলোমেলো বন মডেল প্লটগুলি এখন একই রকম।


3

আপনি interaction.depthযখন আপনার বুস্টেড মডেলটি তৈরি করেন তখন আপনাকে প্যারামিটারটি আপডেট করতে হবে । এটি 1 এ ডিফল্ট হয় এবং এর ফলে gbmঅ্যালগরিদম যে সমস্ত গাছ তৈরি করে তা প্রতিটি একবারে একবারে আলাদা হয়ে যায়। এর অর্থ হ'ল প্রতিটি গাছ কেবল পরিবর্তনশীলের উপর বিভক্ত হয় cএবং পর্যবেক্ষণগুলির নমুনার উপর নির্ভর করে এটি ব্যবহার করে যে এটি প্রায় 40 - 60 এর মধ্যে বিভক্ত হবে।

এখানে আংশিক প্লট রয়েছে interaction.depth = 3

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


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