প্রশিক্ষণ ডেটার চেয়ে উচ্চতর ভবিষ্যদ্বাণী করা এলোমেলো অরণ্য রেগ্রেশন


12

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

> library(datasets)
> library(randomForest)
> 
> data(mtcars)
> max(mtcars$mpg)
[1] 33.9
> 
> set.seed(2)
> fit1 <- lm(mpg~., data=mtcars) #OLS fit
> fit2 <- randomForest(mpg~., data=mtcars) #random forest fit
> 
> #Hypothetical car that should have very high mpg
> hypCar <- data.frame(cyl=4, disp=50, hp=40, drat=5.5, wt=1, qsec=24, vs=1, am=1, gear=4, carb=1)
> 
> predict(fit1, hypCar) #OLS predicts higher mpg than max(mtcars$mpg)
      1 
37.2441 
> predict(fit2, hypCar) #RF does not predict higher mpg than max(mtcars$mpg)
       1 
30.78899 

লোকেদের ক্ষেত্রে ওএলএস হিসাবে লিনিয়ার রিগ্রেশনগুলি উল্লেখ করা কি সাধারণ? আমি সর্বদা ওএলএসকে একটি পদ্ধতি হিসাবে ভাবতাম।
হাও ইয়ে

1
আমি বিশ্বাস করি যে ওএলএস হ'ল লিনিয়ার রিগ্রেশন-এর ডিফল্ট পদ্ধতি, কমপক্ষে আর
গৌরব বানসাল

এলোমেলো গাছ / বনের জন্য, পূর্বাভাসগুলি সংশ্লিষ্ট নোডের প্রশিক্ষণের ডেটার গড় হয়। সুতরাং এটি প্রশিক্ষণের ডেটাতে মানগুলির চেয়ে বড় হতে পারে না।
জেসন

1
আমি সম্মত তবে এটির উত্তর কমপক্ষে আরও তিনজন ব্যবহারকারী পেয়েছেন।
হ্যালো ওয়ার্ল্ড

উত্তর:


12

পূর্ববর্তী উত্তরে যেমন এটি ইতিমধ্যে উল্লিখিত হয়েছে, রিগ্রেশন / রিগ্রেশন গাছের জন্য এলোমেলো বনগুলি ডেটা পয়েন্টগুলির জন্য প্রশিক্ষণের ডেটা রেঞ্জের পরিধি ছাড়িয়ে ডেটা পয়েন্টগুলির জন্য প্রত্যাশিত পূর্বাভাস দেয় না কারণ তারা এক্সট্রোপোলেট (ভাল) করতে পারে না। একটি রিগ্রেশন ট্রি নোডের একটি শ্রেণিবিন্যাস নিয়ে গঠিত, যেখানে প্রতিটি নোড একটি গুণ মানের উপর সঞ্চালনের জন্য একটি পরীক্ষা নির্দিষ্ট করে এবং প্রতিটি পাত (টার্মিনাল) নোড একটি পূর্বাভাসিত আউটপুট গণনা করার জন্য একটি বিধি নির্দিষ্ট করে। আপনার ক্ষেত্রে পরীক্ষার পর্যবেক্ষণ গাছের মধ্য দিয়ে গাছের পাতাগুলিতে প্রবাহিত হয়, উদাহরণস্বরূপ, "যদি x> 335, তবে y = 15", যা এলোমেলো বন দ্বারা গড় হয়।

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

library(datasets)
library(randomForest)
library(ggplot2)
library(ggthemes)

# Import mtcars (Motor Trend Car Road Tests) dataset
data(mtcars)

# Define training data
train_data = data.frame(
    x = mtcars$hp,  # Gross horsepower
    y = mtcars$qsec)  # 1/4 mile time

# Train random forest model for regression
random_forest <- randomForest(x = matrix(train_data$x),
                              y = matrix(train_data$y), ntree = 20)
# Train linear regression model using ordinary least squares (OLS) estimator
linear_regr <- lm(y ~ x, train_data)

# Create testing data
test_data = data.frame(x = seq(0, 400))

# Predict targets for testing data points
test_data$y_predicted_rf <- predict(random_forest, matrix(test_data$x)) 
test_data$y_predicted_linreg <- predict(linear_regr, test_data)

# Visualize
ggplot2::ggplot() + 
    # Training data points
    ggplot2::geom_point(data = train_data, size = 2,
                        ggplot2::aes(x = x, y = y, color = "Training data")) +
    # Random forest predictions
    ggplot2::geom_line(data = test_data, size = 2, alpha = 0.7,
                       ggplot2::aes(x = x, y = y_predicted_rf,
                                    color = "Predicted with random forest")) +
    # Linear regression predictions
    ggplot2::geom_line(data = test_data, size = 2, alpha = 0.7,
                       ggplot2::aes(x = x, y = y_predicted_linreg,
                                    color = "Predicted with linear regression")) +
    # Hide legend title, change legend location and add axis labels
    ggplot2::theme(legend.title = element_blank(),
                   legend.position = "bottom") + labs(y = "1/4 mile time",
                                                      x = "Gross horsepower") +
    ggthemes::scale_colour_colorblind()

এলোমেলোভাবে র্যান্ডম বন এবং লিনিয়ার রিগ্রেশন সহ


16

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

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


11

সিদ্ধান্ত গাছ / র্যান্ডম ফরেস্ট প্রশিক্ষণের ডেটার বাইরে এক্সট্রোপলেট করতে পারে না। এবং যদিও ওএলএস এটি করতে পারে তবে এই জাতীয় ভবিষ্যদ্বাণীগুলি সাবধানতার সাথে দেখা উচিত; কারণ চিহ্নিত প্যাটার্ন পর্যবেক্ষণ ব্যাপ্তির বাইরে চলতে পারে না।

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