কোনও প্রকাশনায় এলোমেলো বন উপস্থাপনের সেরা উপায়?


75

আমি আনুষঙ্গিক বৈশিষ্ট্য সহ একটি মাইক্রোরে স্টাডিতে দুটি গ্রুপের শক্তিশালী শ্রেণিবদ্ধ হিসাবে এলোমেলো বন অ্যালগরিদম ব্যবহার করছি using

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

2
একটি গাছও নেই ... তবে চিত্রণমূলক উদ্দেশ্যে তাদের মধ্যে একটি প্লট করার জন্য @ শেনের প্রতিক্রিয়া দেখুন।
chl

আমি অবশ্যই র্যান্ডমফোরেস্ট :: আংশিকপ্লট, stats.stackexchange.com/Qestions/92150/…
সোরেন হ্যাভেলন্ড ওয়েলিং

1
আপনি আমার এলোমেলো অরণ্য ভিজ্যুয়ালাইজেশন প্যাকেজ চেষ্টা করতে পারেন, ফরেস্ট ফ্লোর - ফরেস্টফ্লোর.ডকে
সোরেন হ্যাভেল্যান্ড ওয়েলিং

উত্তর:


48

এটিকে পুনরুত্পাদনযোগ্য করে তোলার বিষয়ে, সর্বোত্তম উপায় হ'ল কাগজ সহ প্রজননযোগ্য গবেষণা (অর্থাত্ কোড এবং ডেটা) সরবরাহ করা। এটিকে আপনার ওয়েবসাইটে বা হোস্টিং সাইটে (গিথুবের মতো) উপলব্ধ করুন।

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

তবে আপনি যদি আর ব্যবহার করেন তবে randomForestপ্যাকেজের কিছু কার্যকর ফাংশন রয়েছে:

data(mtcars)
mtcars.rf <- randomForest(mpg ~ ., data=mtcars, ntree=1000, keep.forest=FALSE,
                           importance=TRUE)
plot(mtcars.rf, log="y")
varImpPlot(mtcars.rf)

এবং

set.seed(1)
data(iris)
iris.rf <- randomForest(Species ~ ., iris, proximity=TRUE,
                        keep.forest=FALSE)
MDSplot(iris.rf, iris$Species)

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

getTree(randomForest(iris[,-5], iris[,5], ntree=10), 3, labelVar=TRUE)

উপর Strobl / Zeileis উপস্থাপনা "কেন এবং কিভাবে র্যান্ডম বন পরিবর্তনশীল গুরুত্ব পরিমাপ করে ব্যবহার করবেন (এবং কিভাবে আপনি উচিত না)" গাছ যা এই ভাবে উত্পাদিত হয়ে থাকতে হবে উদাহরণ রয়েছে। গাছের মডেলগুলির এই ব্লগ পোস্টে কার্ট গাছের প্লটগুলির কয়েকটি দুর্দান্ত উদাহরণ রয়েছে যা আপনি উদাহরণস্বরূপ ব্যবহার করতে পারেন।

@ সিএইচএল মন্তব্য হিসাবে, একটি একক গাছ এই প্রসঙ্গে বিশেষভাবে অর্থবহ নয়, এলোমেলো বন কী তা বোঝাতে এটি ব্যবহারের সংক্ষিপ্ততা, আমি এটিকে কোনও কাগজে অন্তর্ভুক্ত করব না।


4
প্লটগুলি সম্পর্কে ছোট এক্সটেনশন: plot.randomForestদেখায় যে কীভাবে ওওবি ত্রুটি এবং শ্রেণিবদ্ধ ওওবি ত্রুটি ক্রমবর্ধমান গাছের সাথে উদ্ভূত হয়েছে; আরএফ অবজেক্ট নৈকট্য পরিমাপের 2D প্রক্ষেপণে প্লট করা varImpPlotশীর্ষস্থানীয় বৈশিষ্ট্য এবং MDSplotসমস্ত বস্তুর জন্য অ্যাট্রিবিউট গুরুত্বের ব্যবস্থাগুলি দেখায় ।

MDSplot()ফাংশন উদ্ধৃত করার জন্য +1 । আমি অবশ্যই স্বীকার করতে হবে যে আমি প্রায়শই সেরা বৈশিষ্ট্যগুলি বাছাই না করে ব্যক্তিদের ক্লাস্টারগুলি (আরএফ নৈকট্য পরিমাপের উপর ভিত্তি করে) হাইলাইট করার উপায় হিসাবে ব্যবহার করি। চিকিত্সকরা প্রায়শই ভেরের ডটপ্লটের চেয়ে এ জাতীয় প্লটগুলি খুব সহজেই পড়েন। গুরুত্ব ...
chl

18
  1. শেন যেমন লিখেছেন; এটি পুনরুত্পাদনযোগ্য গবেষণা করুন এলোমেলো বীজ অন্তর্ভুক্ত করুন, কারণ আরএফ স্টোকাস্টাস্টিক।
  2. প্রথমত, আরএফ গঠন করে একক গাছের চক্রান্ত করা বাজে কথা; এটি একটি গোছানো শ্রেণিবদ্ধকারী, এটি কেবল সামগ্রিকভাবে উপলব্ধি করে। এমনকি পুরো বনভূমিটিকে চক্রান্ত করাও বোকামি - এটি একটি কালো-বাক্সের শ্রেণিবদ্ধ, সুতরাং এটি মূল প্রক্রিয়াটির প্রতিলিপি তৈরির পরিবর্তে এটির কাঠামোর সাথে ডেটা ব্যাখ্যা করার উদ্দেশ্যে নয়। পরিবর্তে শেনের কিছু প্লট তৈরি করুন।
  3. অনুশীলনে, ওওবি একটি খুব ভাল ত্রুটি প্রায় অনুমান; তবে এটি কোনও বহুল স্বীকৃত সত্য নয়, তাই প্রকাশের জন্য এটি নিশ্চিত করার জন্য একটি সিভিও তৈরি করা ভাল।

সুতরাং @ এমবিকিউ সিভি করার সময় প্রথমে সমস্ত নমুনা নির্বাচিত হয়ে এলোমেলো বন করা বৈধ; এটি একবারের সাথে দুবার করে এবং দ্বিতীয়ত শীর্ষ 10 ভেরিয়েবলগুলির সাথে (যা কোনও কাগজে উদ্ধৃত করা যেতে পারে) ব্যবহার করে। তারপরে কোনও ছাড়-ক্রস-বৈধকরণ (প্রতিটি চেষ্টা করে 10 শীর্ষ জিন নির্বাচন করে) এবং সেখান থেকে সিভি ত্রুটিটি উদ্ধৃত করবেন?
ড্যানিয়েলসব্রুয়ার

1
@ ড্যানিয়েলব্রুয়েয়ার আমি এটি অন্য কোনও উপায়ে করব (বৈশিষ্ট্য নির্বাচনের দিকে বেশি মনোযোগ দিচ্ছি), তবে এটি সঠিক; তবুও এটি আপনার জৈবিক সমস্যার জন্য সেরা চিহ্নিতকারী নির্বাচন করার চেয়ে আরএফ বৈশিষ্ট্য নির্বাচন বেঞ্চমার্কিংয়ের বিষয়টিতে বেশি।

2
প্রধান সমস্যাটি হ'ল দুটি মডেলের (মডেল = শেখার পদ্ধতি + বৈশিষ্ট্য নির্বাচন পদ্ধতি) তুলনা করা সত্যিই শক্ত, তবে সরলতার জন্য আপনি কেবল কিছু ধরে নিতে পারেন (যেমন আমি আরএফ ব্যবহার করব এবং শীর্ষ 10 টি বৈশিষ্ট্য নির্বাচন করব) এবং স্বীকার করে নিন যে আপনি জানেন এটি সাবঅস্টিমাল হতে পারে তবে আপনি যথাযথতার সাথে সন্তুষ্ট থাকাকালীন তাতে সম্মত হন। সেক্ষেত্রে আপনার একমাত্র সমস্যা হ'ল বৈশিষ্ট্য নির্বাচনের পক্ষপাতিত্ব অপসারণ করা। tbc।

2
সুতরাং, আমি একটি সহজ ব্যাগিং করব: আপনি 10 (বা আপনার কাছে ভাল কম্পিউটার থাকলে 30) অবজেক্টের এলোমেলোভাবে সাবমেল তৈরি করুন (আসুন প্রতিস্থাপনের সাথে এলোমেলো বাছাই করে বলি), প্রত্যেকের উপর আরএফ প্রশিক্ষণ দিন, এর গুরুত্ব পান এবং প্রত্যেকের একটি পদ ফিরে পান সমস্ত পুনরাবৃত্তির তুলনায় গড়ের গুণাবলী (সেরা গুণাবলী 1 নম্বর, দ্বিতীয় সেরা 2 এবং আরও কিছু পাওয়া যায়; এটির গড় করা যায় তাই 12 গুণ 1 ম এবং 18 গুণ দ্বিতীয় স্থানটি 1.6 এর র‌্যাঙ্কযুক্ত থাকে), অবশেষে সেরা র‌্যাঙ্ক সহ 10 টি নির্বাচন করুন এবং তাদের কল করুন আপনার চিহ্নিতকারী তারপরে আপনার চিহ্নিতকারীগুলি ব্যবহার করে আরএফের ত্রুটি অনুমানের জন্য একটি সিভি (এলইউ, 10-ভাঁজ বা পছন্দসই এলোমেলো নমুনা) ব্যবহার করুন। tbc।

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

13

প্রয়োজনীয় প্লটটি অর্থবহ হওয়ার বিষয়ে অন্যান্য উত্তরের বিষয়ে সতর্কতার কথা মনে রাখবেন। তবে আপনি যদি চিত্রকর / শিক্ষাগত উদ্দেশ্যে কোনও প্লট চান তবে নীচের আর এর স্নিপেটটি কার্যকর হতে পারে। প্রান্তের পাঠ্যের প্রয়োজন হলে "স্প্লিট পয়েন্ট" যুক্ত করা শক্ত নয়।

to.dendrogram <- function(dfrep,rownum=1,height.increment=0.1){

  if(dfrep[rownum,'status'] == -1){
    rval <- list()

    attr(rval,"members") <- 1
    attr(rval,"height") <- 0.0
    attr(rval,"label") <- dfrep[rownum,'prediction']
    attr(rval,"leaf") <- TRUE

  }else{##note the change "to.dendrogram" and not "to.dendogram"
    left <- to.dendrogram(dfrep,dfrep[rownum,'left daughter'],height.increment)
    right <- to.dendrogram(dfrep,dfrep[rownum,'right daughter'],height.increment)
    rval <- list(left,right)

    attr(rval,"members") <- attr(left,"members") + attr(right,"members")
    attr(rval,"height") <- max(attr(left,"height"),attr(right,"height")) + height.increment
    attr(rval,"leaf") <- FALSE
    attr(rval,"edgetext") <- dfrep[rownum,'split var']
    #To add Split Point in Dendrogram
    #attr(rval,"edgetext") <- paste(dfrep[rownum,'split var'],"\n<",round(dfrep[rownum,'split point'], digits = 2),"=>", sep = " ")
  }

  class(rval) <- "dendrogram"

  return(rval)
}

mod <- randomForest(Species ~ .,data=iris)
tree <- getTree(mod,1,labelVar=TRUE)

d <- to.dendrogram(tree)
str(d)
plot(d,center=TRUE,leaflab='none',edgePar=list(t.cex=1,p.col=NA,p.lty=0))

1
কোডটি খুব ভাল গাছের প্লট তৈরি করে। তবে মানগুলি প্রদর্শিত হচ্ছে না। সম্ভবত শেষ (প্লট) বিবৃতি দেওয়ার পরে একটি পাঠ্য () ফাংশন যুক্ত করা দরকার।
rnso
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.