আমি লক্ষ্য করেছি যে এটি একটি পুরানো প্রশ্ন, তবে আমি মনে করি আরও যুক্ত করা উচিত। যেমন @ মানোয়েল গাল্ডিনো মন্তব্যগুলিতে বলেছেন, সাধারণত আপনি অদেখা তথ্যের বিষয়ে পূর্বাভাস দিতে আগ্রহী। তবে এই প্রশ্নটি প্রশিক্ষণের ডেটাতে পারফরম্যান্স সম্পর্কে এবং প্রশ্নটি হল কেন এলোমেলো বনটি প্রশিক্ষণের ডেটাতে খারাপ ব্যবহার করে ? উত্তরটি ব্যাগযুক্ত ক্লাসিফায়ারগুলির সাথে একটি আকর্ষণীয় সমস্যা হাইলাইট করে যা প্রায়শই আমাকে সমস্যায় ফেলেছে: গড়নের প্রতিরোধী।
সমস্যাটি হ'ল র্যান্ডম ফরেস্টের মতো ব্যাগযুক্ত শ্রেণিবদ্ধীরা, যা আপনার ডেটা সেট থেকে বুটস্ট্র্যাপের নমুনা নিয়ে তৈরি করা হয়, চূড়ান্তভাবে খারাপ আচরণ করতে থাকে। চূড়ান্ত পরিমাণে খুব বেশি ডেটা নেই বলে এগুলি খুব সহজেই বেরিয়ে আসে।
আরও বিশদে, মনে রাখবেন যে রিগ্রেশনের জন্য একটি এলোমেলো বনটি প্রচুর সংখ্যক শ্রেণিবদ্ধের পূর্বাভাসকে গড়ে তোলে। যদি আপনার কাছে একটি একক পয়েন্ট থাকে যা অন্যদের থেকে অনেক দূরে থাকে তবে শ্রেণিবদ্ধদের মধ্যে অনেকেই এটি দেখতে পাবেন না এবং এগুলি মূলত একটি নমুনা ছাড়াই ভবিষ্যদ্বাণী করে যা খুব ভাল নাও হতে পারে। প্রকৃতপক্ষে, এই সমস্ত-নমুনা পূর্বাভাসগুলি সামগ্রিক গড়ের দিকে ডেটা পয়েন্টের জন্য পূর্বাভাস টানবে tend
যদি আপনি একটি একক সিদ্ধান্ত গাছ ব্যবহার করেন তবে চরম মানগুলির সাথে আপনার একই সমস্যা হবে না তবে লাগানো রিগ্রেশন খুব লিনিয়ার হবে না।
এখানে আর এর একটি চিত্র রয়েছে। কিছু তথ্য উত্পন্ন হয় যা y
পাঁচটি x
ভেরিয়েবলের একটি নিখুঁত লাইনারের সংমিশ্রণ । তারপরে একটি লিনিয়ার মডেল এবং একটি এলোমেলো বন দ্বারা পূর্বাভাস দেওয়া হয়। তারপরে y
প্রশিক্ষণের ডেটাতে থাকা মানগুলির পূর্বাভাসের বিরুদ্ধে প্লট করা হয়। আপনি পরিষ্কারভাবে দেখতে পাচ্ছেন যে এলোমেলো বনটি চরম আকারে খারাপ করছে কারণ খুব বড় বা খুব ছোট মানগুলির সাথে ডেটা পয়েন্টগুলি y
বিরল।
এলোমেলো বন যখন রিগ্রেশনের জন্য ব্যবহৃত হয় আপনি অদেখা ডেটা সম্পর্কে ভবিষ্যদ্বাণীগুলির জন্য একই প্যাটার্নটি দেখতে পাবেন। আমি কীভাবে এড়াতে পারি তা নিশ্চিত নই। আর এর randomForest
ক্রিয়াকলাপে একটি অশোধিত পক্ষপাত সংশোধন বিকল্প রয়েছে corr.bias
যা পক্ষপাতিত্বের উপর লিনিয়ার রিগ্রেশন ব্যবহার করে তবে এটি কার্যকরভাবে কাজ করে না।
পরামর্শ স্বাগত!
beta <- runif(5)
x <- matrix(rnorm(500), nc=5)
y <- drop(x %*% beta)
dat <- data.frame(y=y, x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4], x5=x[,5])
model1 <- lm(y~., data=dat)
model2 <- randomForest(y ~., data=dat)
pred1 <- predict(model1 ,dat)
pred2 <- predict(model2 ,dat)
plot(y, pred1)
points(y, pred2, col="blue")