আর এলোমেলো বন গণনার সময়


49

আমি 10,000 টি সারি এবং 34 টি বৈশিষ্ট্য সহ আরে পার্টি প্যাকেজটি ব্যবহার করছি এবং কিছু ফ্যাক্টর বৈশিষ্ট্যে 300 এরও বেশি স্তর রয়েছে। কম্পিউটিং সময় খুব দীর্ঘ। (এটি এখনও 3 ঘন্টা সময় নিয়েছে এবং এটি এখনও শেষ হয়নি।)

আমি জানতে চাই কোন এলোমেলো বনের কম্পিউটিং সময়গুলিতে উপাদানগুলির একটি বড় প্রভাব রয়েছে। এটির কি অনেকগুলি স্তর রয়েছে? আরএফ কম্পিউটিং সময় উন্নত করার জন্য কোন অনুকূলিত পদ্ধতি আছে?

উত্তর:


65

সামগ্রিক জটিলতা ntree m્રી ( # অবজেক্ট ) লগ ( # অবজেক্ট ) এর মতো কিছু ; আপনি যদি নিজের গতি আরও দ্রুত করতে চান, আপনি নিম্নলিখিত চেষ্টা করতে পারেন:ntreemtry(# objects)log(# objects)

  1. এর randomForestপরিবর্তে party, বা, আরও ভাল, rangerবা Rborist(যদিও উভয় এখনও যুদ্ধ-পরীক্ষিত নয়) ব্যবহার করুন।
  2. সূত্র ব্যবহার করবেন না, randomForest(predictors,decision)পরিবর্তে কল করুন randomForest(decision~.,data=input)
  3. do.traceরিয়েল-টাইমে OOB ত্রুটি দেখতে যুক্তি ব্যবহার করুন ; এইভাবে আপনি সনাক্ত করতে পারেন যে আপনি কম করতে পারেন ntree
  4. কারণ সম্পর্কে; আরএফ (এবং সমস্ত গাছের পদ্ধতি) স্তরের সর্বোত্তম উপসেট সন্ধান করার চেষ্টা করে এভাবে সম্ভাবনাগুলি স্ক্যান করে ; এই পরিণতিটি বরং নিষ্পাপ এটি এই ফ্যাক্টরটি আপনাকে এত বেশি তথ্য দিতে পারে - উল্লেখ করার জন্য নয় যে র্যান্ডমফরেস্ট 32 টিরও বেশি স্তরের উপাদানগুলি খাবেন না। সম্ভবত আপনি এটিকে কেবল আদেশযুক্ত হিসাবে বিবেচনা করতে পারেন (এবং এইভাবে এটি আরএফের জন্য একটি সাধারণ, সংখ্যাসূচক ভেরিয়েবলের সমতুল্য) বা কিছু গ্রুপে এটি ক্লাস্টার করে এই একটি বৈশিষ্ট্যকে কয়েকটিতে বিভক্ত করতে পারে?2(# of levels-1)
  5. আপনার কম্পিউটারটি র‍্যামের বাইরে চলে গেছে কিনা এবং এটি অদলবদল স্থানটি ব্যবহার করছে কিনা তা পরীক্ষা করুন। যদি তাই হয় তবে একটি বড় কম্পিউটার কিনুন।
  6. অবশেষে, আপনি অবজেক্টগুলির কয়েকটি এলোমেলো উপসেট আহরণ করতে পারেন এবং এ সম্পর্কে কিছু প্রাথমিক পরীক্ষা-নিরীক্ষা করতে পারেন।

2
আপনাকে ধন্যবাদ, আমি আপনার উত্তর থেকে অনেক কিছু শিখেছি এবং আপনি যেমন বলেছিলেন তেমন একটি পরীক্ষাও করেছিলেন, দ্বিতীয় পরামর্শটি কেন কাজ করে?
চেঙ্গাও লিউ

4
@ চেঙ্গাওলিউ ফর্মুলাগুলি ছোট ছোট জটিল লাইনার মডেল ফ্রেমের জন্য ডিজাইন করা হয়েছিল এবং সেটটি অনুলিপি করা ব্যয়বহুল হয়ে ওঠার পরে এগুলি অক্ষম থাকে।

1
কেন র্যান্ডমফরেস্ট (ভবিষ্যদ্বাণীকারী, সিদ্ধান্ত) কলিং চলমান সময় হ্রাস করে?
জেনএসসিডিসি

mtry

1
র্যান্ডমফরেস্টে অ্যান্ডি ব্ল্যানকার্টজ সূত্রের ব্যাখ্যা পুরো ইনপুটটি অনুলিপি করে নিয়েছে বলে মনে হচ্ছে।

12

কারণ র্যান্ডমফরেস্ট হ'ল স্বাধীন গাড়ীর সংকলন যা বৈশিষ্ট্যগুলির র্যান্ডম উপসেট এবং প্রশিক্ষণ রেকর্ড করে এটি নিজেকে সমান্তরালে উন্নীত করে। combine()RandomForest প্যাকেজের মধ্যে ফাংশন একসঙ্গে স্বাধীনভাবে প্রশিক্ষিত বন সেলাই হবে। এখানে একটি খেলনা উদাহরণ। @ এমপিকিউ'র উত্তরে বলা হয়েছে যে আপনি সূত্র স্বরলিপিটি ব্যবহার করবেন না, তবে ভেরিয়েবলগুলির একটি ডেটাফ্রেম / ম্যাট্রিক্স এবং ফলাফলগুলির একটি ভেক্টর দিয়ে পাস করুন। আমি নির্লজ্জভাবে এগুলি ডক্স থেকে তুলে নিয়েছি।

library("doMC")
library("randomForest")
data(iris)

registerDoMC(4) #number of cores on the machine
darkAndScaryForest <- foreach(y=seq(10), .combine=combine ) %dopar% {
   set.seed(y) # not really needed
   rf <- randomForest(Species ~ ., iris, ntree=50, norm.votes=FALSE)
}

আমি একইভাবে নামযুক্ত .কম্বাইন প্যারামিটারে র্যান্ডমফোরেস্ট কম্বিনেশন ফাংশনটি পাস করেছি (যা লুপের আউটপুটে ফাংশন নিয়ন্ত্রণ করে The

সম্পাদনা:

পোস্টটি পড়ার পরে আমি বুঝতে পারি যে আমি 34+ ফ্যাক্টর ইস্যু সম্পর্কে কিছুই বলি না। একটি সম্পূর্ণ অ-চিন্তিত উত্তর হতে পারে বাইনারি ভেরিয়েবল হিসাবে তাদের উপস্থাপন করা। এটি প্রতিটি ফ্যাক্টর এমন একটি কলাম যা তার উপস্থিতি / অস্তিত্ব সম্পর্কে 0/1 -level ফ্যাক্টরটিকে এনকোড করা হয়। গুরুত্বহীন কারণগুলির উপর কিছু পরিবর্তনশীল নির্বাচন করে সেগুলি সরিয়ে আপনি আপনার স্থানকে খুব বেশি বড় হতে বাধা রাখতে পারেন।


@ জেডননিসন, সাইটে আপনাকে স্বাগতম। এটি দেখতে খুব সুন্দর একটি অবদানের মতো (যদিও আমি আরএফস সম্পর্কে খুব বেশি জানি না এবং সমান্তরাল কম্পিউটিং সম্পর্কে কিছুই জানি না)। একটি নোট, উত্তরগুলির ক্রম সময়ের সাথে সাথে ওঠানামা করতে পারে, সুতরাং "উপরের উত্তর" উল্লেখ না করে বরং 'উত্তরটি so @ তাই-তাই' দিয়ে দেওয়া ভাল।
গুং - মনিকা পুনরায়

দুঃখিত উত্তরের জন্য আপনার ব্লগ পড়তে late.I, মহান কাজ
Chenghao লিউ

3

আমি কয়েকটি লিঙ্ক প্রস্তাব করব:

1) একটি ফ্যাক্টর ভেরিয়েবলের স্তরের সংখ্যা সঙ্কুচিত করা হ'ল প্যাকেজটি stackoverflowব্যবহার করার সময় অনুরূপ সমস্যা মোকাবেলা করার বিষয়ে একটি প্রশ্নের লিঙ্ক randomForest। বিশেষত এটি কেবলমাত্র ঘন ঘন ঘটে যাওয়া স্তরগুলি ব্যবহার করে এবং অন্য সমস্ত, কম ঘন ঘন ঘটে যাওয়া স্তরগুলিকে একটি নতুন স্তর নির্ধারণ করে।

এর জন্য ধারণাটি এখান থেকে এসেছে: ২০০৯ কেডিডি কাপ স্লো চ্যালেঞ্জ । এই প্রতিযোগিতার ডেটাতে প্রচুর স্তর সহ প্রচুর উপাদান ছিল এবং এটি 2-কোর / 2 জিবি র‌্যাম ল্যাপটপে চালানোর জন্য 15,000 কলাম দ্বারা 50,000 সারি থেকে ডেটা প্যার করতে ব্যবহার করার কয়েকটি পদ্ধতি নিয়ে আলোচনা করে।

আমার শেষ পরামর্শটি হ'ল সিপিইউ অ্যামাজন ইসি 2 উদাহরণের সাথে সমান্তরালভাবে উপরের পরামর্শ মতো সমস্যাটি চালানোর দিকে নজর দেওয়া হবে।


নেই 2) । সম্পূর্ণ লিঙ্কে নির্ভর করার পরিবর্তে আপনার পৃষ্ঠার গুরুত্বপূর্ণ অংশটি সরবরাহ করা উচিত।
AL

আমি পছন্দ করি কীভাবে ইসি দৃষ্টান্তগুলি চালিত হয়। বাহ তারা সুন্দর। আমি মনে করি ভার্চুয়ালাইজড হার্ডওয়্যারটি আসল জিনিসের চেয়ে ভাল।
এনগ্রিস্টুডেন্ট - মনিকা

2

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

জিনিসগুলির গতি বাড়ানোর সর্বোত্তম উপায়টি হ'ল আমার মনে হয় কিছু স্তর একসাথে গলে ফেলা হবে যাতে প্রতিটি পরিবর্তনশীল 300 এর পরিবর্তে 3 থেকে 5 স্তরে নেমে যায় course অবশ্যই এটি গুরুত্বপূর্ণ হারানো ছাড়াই এটি করতে সক্ষম হওয়ার উপর নির্ভরশীল আপনার তথ্য তথ্য।

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


আপনাকে আবারও ধন্যবাদ, আমি আপনার সাথে পুরোপুরি একমত nd এবং আমি একটি নকল ডামি পদ্ধতিতে স্তরগুলির সংখ্যা হ্রাস করার চেষ্টা করি For উদাহরণস্বরূপ, আমি একটি প্রিডিক্টরকে 600 লেভেলের সাথে 4 প্রেডিক্টরের সাথে প্রতিস্থাপন করি (600 <5 ^ 4 হিসাবে) এই রূপান্তরের পরে, আমি র্যান্ডম ফরেস্ট অ্যালগরিদম চালাতে পারে ow তবে, আরএমএসই ফলাফলটি অদ্ভুত, আমি কীভাবে ফ্যাক্টর বৈশিষ্ট্যটির মাত্রা হ্রাস করব এবং 10-গুণ সিভি আরএমএসই এবং পরীক্ষার সেট আরএমএসই স্কোরের মধ্যে সম্পর্ক কী তা নিয়ে আরও দুটি প্রশ্ন খুলব?
চেঙ্গাও লিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.