কার্ট ব্যবহার করার সময় "পরিবর্তনশীল গুরুত্ব" কীভাবে পরিমাপ / র‌্যাঙ্ক করবেন? (বিশেষত আর থেকে {rpart using ব্যবহার করে)


27

আরপিআর্ট (আর তে) ব্যবহার করে কার্ট মডেল (বিশেষত শ্রেণিবদ্ধকরণ গাছ) তৈরি করার সময়, মডেলটির সাথে পরিচিত বিভিন্ন ভেরিয়েবলগুলির গুরুত্ব কী তা জানা প্রায়শই আকর্ষণীয় is

সুতরাং, আমার প্রশ্নটি: একটি কর্ট মডেলটিতে অংশগ্রহণকারী ভেরিয়েবলের পরিবর্তনশীল গুরুত্ব র‌্যাঙ্কিং / পরিমাপের জন্য কোন সাধারণ ব্যবস্থা বিদ্যমান? আর কীভাবে এটি আর এর সাহায্যে গণনা করা যায় (উদাহরণস্বরূপ, rpart প্যাকেজটি ব্যবহার করার সময়)

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

set.seed(31431)
n <- 400
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
x4 <- rnorm(n)
x5 <- rnorm(n)

X <- data.frame(x1,x2,x3,x4,x5)

y <- sample(letters[1:4], n, T)
y <- ifelse(X[,2] < -1 , "b", y)
y <- ifelse(X[,1] < 0 , "a", y)

require(rpart)
fit <- rpart(y~., X)
plot(fit); text(fit)

info.gain.rpart(fit) # your function - telling us on each variable how important it is

(তথ্যসূত্র সর্বদা স্বাগত জানানো হয়)


এই প্রশ্নটি কীভাবে stats.stackexchange.com / প্রশ্নগুলি / ৫৪৪৩/২ থেকে পৃথক হয় ?
স্টেফেন

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

উত্তর:


42

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

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

আমার জানা মতে , ক্যারেট প্যাকেজ (5) কেবলমাত্র রিগ্রেশন কেসের জন্য ক্ষতির ক্রিয়াকে বিবেচনা করে (অর্থাত্ স্কোয়ার ত্রুটির অর্থ)। সম্ভবত এটি অদূর ভবিষ্যতে যুক্ত করা হবে (যাইহোক, কে-এনএন দ্বারা শ্রেণিবদ্ধকরণের ক্ষেত্রে একটি উদাহরণ অন-লাইন সহায়তাতে উপলভ্য dotPlot)।

যাইহোক, নোয়েল এম ওবয়েলের মনে হচ্ছে কার্টে পরিবর্তনশীল গুরুত্বের জন্য কিছু আর কোড রয়েছে ।

তথ্যসূত্র

  1. সানড্রি এবং জুকোলোটো। শ্রেণিবদ্ধকরণ গাছগুলিতে গিনি পরিবর্তনশীল গুরুত্ব পরিমাপের জন্য একটি পক্ষপাত সংশোধন অ্যালগরিদম । 2008
  2. Izenman। আধুনিক মাল্টিভাইয়ারেট স্ট্যাটিস্টিকাল টেকনিকস । স্প্রিংগার ২০০৮
  3. স্ট্রোব্ল, হথর্ন এবং জিলিস। পার্টি শুরু! আর জার্নাল 2009 1/2
  4. স্ট্রোব্ল, বুলেস্টেক্স, ননিব, অগস্টিন এবং জিলিস। এলোমেলো বনের জন্য শর্তাধীন পরিবর্তনশীল গুরুত্ববিএমসি বায়োইনফরম্যাটিকস 2008, 9: 307
  5. কুন। ক্যারেট প্যাকেজটি ব্যবহার করে আরে অনুমানমূলক মডেলগুলি তৈরি করাজেএসএস ২০০৮ 28 (5)

1
সত্যই - এটি তার চেয়ে অনেক বেশি ভোটের দাবিদার।
ম্যাট পার্কার ২ '

দুর্দান্ত উত্তরের জন্য +1। আর দেরী এসেছেন (নিজেকে মত) জন্য আপডেট importance()মধ্যে randomForest acccuracy গড় deacrease এবং গড় গিনি হ্রাস সঙ্গে পৃথক পরিবর্তনশীল গুরুত্ব আছে।
ঝুবার্ব

3

নিম্নলিখিত ফাংশন (ক্যারেট প্যাকেজ থেকে) rpart গাছগুলিতে পরিবর্তনশীল গুরুত্বের মূল্যায়নের জন্য ব্যবহার করা যেতে পারে। আমি ক্যারেট ফাংশনে একটি বাগ সংশোধন করেছি যখন গাছের মধ্যে এটি কেবলমাত্র নোড।

varImp <- function(object, surrogates = FALSE, competes = TRUE, ...)
  {
tmp <- rownames(object$splits)

 allVars <- colnames(attributes(object$terms)$factors)
if(is.null(tmp))
  {
  out<-NULL
    zeros <- data.frame(x = rep(0, length(allVars)),
                        Variable = allVars)
    out <- rbind(out, zeros)
  }

else {

rownames(object$splits) <- 1:nrow(object$splits)
splits <- data.frame(object$splits)
    splits$var <- tmp
splits$type <- ""

frame <- as.data.frame(object$frame)
    index <- 0
    for(i in 1:nrow(frame))
      {
        if(frame$var[i] != "<leaf>")
          {
            index <- index + 1
            splits$type[index] <- "primary"
            if(frame$ncompete[i] > 0)
              {
                for(j in 1:frame$ncompete[i])
                  {
                    index <- index + 1
                    splits$type[index] <- "competing"
                  }
              }
            if(frame$nsurrogate[i] > 0)
              {
                for(j in 1:frame$nsurrogate[i])
                  {
                    index <- index + 1
                    splits$type[index] <- "surrogate"
                  }
              }
          }
      }
    splits$var <- factor(as.character(splits$var))
    if(!surrogates) splits <- subset(splits, type != "surrogate")
    if(!competes) splits <- subset(splits, type != "competing")
    out <- aggregate(splits$improve,
                 list(Variable = splits$var),
                 sum,
                 na.rm = TRUE)

allVars <- colnames(attributes(object$terms)$factors)
if(!all(allVars %in% out$Variable))
      {
        missingVars <- allVars[!(allVars %in% out$Variable)]
        zeros <- data.frame(x = rep(0, length(missingVars)),
                            Variable = missingVars)
        out <- rbind(out, zeros)
      }
    }
    out2 <- data.frame(Overall = out$x)
rownames(out2) <- out$Variable
out2

}

নিম্নলিখিত আর কোডটি একটি rpart গাছ "ফিট" জন্য গুরুত্বপূর্ণ স্কোর তৈরি করবে

 varImp(fit)

ধন্যবাদ। আপনি কী বাগটিকে রিপোর্ট করেছেন? (ক্যারেট প্যাকেজটির রক্ষণাবেক্ষণকারী)
তাল গ্যালিলি

1

আমি মনে করি chl প্রথম অংশটি বেশ উত্তর দিয়েছে:

কার্ট মডেলটিতে অংশগ্রহণকারী ভেরিয়েবলের পরিবর্তনশীল গুরুত্ব র‌্যাঙ্কিং / পরিমাপের জন্য কোন সাধারণ ব্যবস্থা বিদ্যমান?

আপনার প্রশ্নের দ্বিতীয় অংশটি শ্রদ্ধার সাথে:

আর কীভাবে এটি আর এর সাহায্যে গণনা করা যায় (উদাহরণস্বরূপ, আরপিআর্ট প্যাকেজটি ব্যবহার করার সময়)

সংক্ষিপ্তসার (ফিট) ব্যবহার করে আপনি rpart ব্যবহার করে পরিবর্তনশীল গুরুত্বটি খুঁজে পেতে পারেন। এটি অন্যান্য বেশ কয়েকটি বিষয়ের মধ্যে পরিবর্তনশীল গুরুত্বকে বহন করে। আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন: https://cran.r-project.org/web/packages/rpart/rpart.pdf । পৃষ্ঠা 25 দেখুন।


0

names(result) শো variable.importance

result$variable.importance সাহায্য করা উচিত?


3
আমি বিশ্বাস করি যে কোনও নির্দিষ্ট পদ্ধতির জন্য আর-এ উপলব্ধ কীভাবে মুদ্রণ করা যায় তার চেয়ে কিছু পরিবর্তনশীল গুরুত্বের কিছু ব্যবস্থার সুবিধা বা জনপ্রিয়তার সাথে এই প্রশ্নটির আরও সম্পর্ক রয়েছে।
সিএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.