প্রথমে আমি স্পষ্ট করে বলতে চাই মেট্রিকটি কী গুরুত্ব দেয়।
প্রশিক্ষণ চলাকালীন বিভাজনের গণনার জন্য ব্যবহৃত গিনি অপরিষ্কার সূচকের উপর ভিত্তি করে মিনেড্রেইসগিনি পরিবর্তনশীল গুরুত্বের একটি পরিমাপ। একটি সাধারণ ভ্রান্ত ধারণাটি হল যে পরিবর্তনশীল গুরুত্ব মেট্রিকটি মডেল পারফরম্যান্স দৃ as়তার জন্য ব্যবহৃত গিনিকে বোঝায় যা এউসির সাথে ঘনিষ্ঠভাবে সম্পর্কিত, তবে এটি ভুল। ব্রেইম্যান এবং ক্যাটলার রচিত র্যান্ডমফোরস্ট প্যাকেজ থেকে এখানে ব্যাখ্যাটি দেওয়া হয়েছে:
গিনি গুরুত্ব
প্রতিবার নোডের একটি বিভাজন পরিবর্তনশীল মি-তে তৈরি হওয়ার পরে দুটি বংশধর নোডের জন্য গিনি অপরিষ্কারের মানদণ্ড প্যারেন্ট নোডের চেয়ে কম হয়। বনের সমস্ত গাছের তুলনায় প্রতিটি পৃথক ভেরিয়েবলের জন্য গিনি যুক্ত হ্রাস একটি দ্রুত পরিবর্তনশীল গুরুত্ব দেয় যা প্রায়শই ক্রমবর্ধমান গুরুত্ব পরিমাপের সাথে খুব সামঞ্জস্যপূর্ণ হয়।
গিনি অপবিত্রতা সূচক হিসাবে সংজ্ঞায়িত করা হয়
কোথায় লক্ষ্য পরিবর্তনশীল এবং ক্লাস সংখ্যা এই শ্রেণীর অনুপাত।
জি = Σi = 1এনগপিআমি( 1 - পিআমি)
এনগপিআমি
একটি দুটি শ্রেণির সমস্যার জন্য, এর ফলাফলটি নিম্নলিখিত বক্ররেখায় পরিণত হয় যা 50-50 নমুনার জন্য সর্বাধিক এবং সমজাতীয় সেটগুলির জন্য ছোট করা হয়:
এরপরে গণনা করা হয়
সমস্ত গড় প্রশ্নে ভবিষ্যদ্বাণী জড়িত। এটি গড় হিসাবে এটি সহজেই কোনও গ্রুপে থাকা ভেরিয়েবলগুলিতে সমস্ত বিভাজনের উপরে গড় বাড়ানো যেতে পারে।
আমি= জিp a r e n t- জিs p l i t 1- জিs p l i t 2
কাছাকাছি তাকান আমরা জানি প্রতিটি পরিবর্তনশীল গুরুত্ব ব্যবহৃত চলকগুলির উপর গড় শর্তসাপেক্ষ এবং এই গ্রুপের অন্যান্য ভেরিয়েবলের তুলনায় এই ভেরিয়েবলটি বনাঞ্চলে ব্যবহৃত হয় সেই ভাগের উপর ভার্টেড এই আমদানির গড় হবে। এটি ধরে রেখেছে কারণ টাওয়ারের সম্পত্তি
ই [ ই [এক্স|ওয়াই] ] = ই [ এক্স]
এখন, আপনার প্রশ্নের সরাসরি জবাব দেওয়ার জন্য এটি প্রতিটি গ্রুপের সমস্ত আমদানি সংশ্লেষ করার মতো সহজ নয় যতগুলি সংযুক্ত মিনেডেক্রেসজিনি পাওয়া যায় তবে ভারী গড়ের গণনা করা আপনার সন্ধানের উত্তর পেয়ে যাবেন। আমাদের কেবলমাত্র প্রতিটি গ্রুপের মধ্যে পরিবর্তনশীল ফ্রিকোয়েন্সিগুলি সন্ধান করতে হবে।
আর এর এলোমেলো বনজ বস্তু থেকে এগুলি পেতে এখানে একটি সহজ স্ক্রিপ্ট রয়েছে:
var.share <- function(rf.obj, members) {
count <- table(rf.obj$forest$bestvar)[-1]
names(count) <- names(rf.obj$forest$ncat)
share <- count[members] / sum(count[members])
return(share)
}
সদস্য পরামিতি হিসাবে গোষ্ঠীতে ভেরিয়েবলের নাম দিন pass
আমি আশা করি এটি আপনার প্রশ্নের উত্তর দেয়। আমি আগ্রহী হলে সরাসরি গ্রুপ আমদানি পেতে একটি ফাংশন লিখতে পারি।
সম্পাদনা:
এখানে একটি ফাংশন যা একটি randomForest
অবজেক্ট এবং ভেরিয়েবলের নাম সহ ভেক্টরগুলির একটি তালিকা প্রদত্ত গ্রুপকে গুরুত্ব দেয় । এটি var.share
পূর্বনির্ধারিত হিসাবে ব্যবহার করে । আমি কোনও ইনপুট চেকিং করি নি তাই আপনাকে সঠিক ভেরিয়েবলের নাম ব্যবহার করার বিষয়টি নিশ্চিত করতে হবে।
group.importance <- function(rf.obj, groups) {
var.imp <- as.matrix(sapply(groups, function(g) {
sum(importance(rf.obj, 2)[g, ]*var.share(rf.obj, g))
}))
colnames(var.imp) <- "MeanDecreaseGini"
return(var.imp)
}
ব্যবহারের উদাহরণ:
library(randomForest)
data(iris)
rf.obj <- randomForest(Species ~ ., data=iris)
groups <- list(Sepal=c("Sepal.Width", "Sepal.Length"),
Petal=c("Petal.Width", "Petal.Length"))
group.importance(rf.obj, groups)
>
MeanDecreaseGini
Sepal 6.187198
Petal 43.913020
এটি ওভারল্যাপিং গ্রুপগুলির জন্যও কাজ করে:
overlapping.groups <- list(Sepal=c("Sepal.Width", "Sepal.Length"),
Petal=c("Petal.Width", "Petal.Length"),
Width=c("Sepal.Width", "Petal.Width"),
Length=c("Sepal.Length", "Petal.Length"))
group.importance(rf.obj, overlapping.groups)
>
MeanDecreaseGini
Sepal 6.187198
Petal 43.913020
Width 30.513776
Length 30.386706