এলোমেলো বনাঞ্চলে ভোট থেকে একটি "নিশ্চিত স্কোর" তৈরি করছেন?


36

আমি এমন একটি শ্রেণিবদ্ধ প্রশিক্ষণ দিতে চাই যা প্রায় 10,000 টি অবজেক্টের যুক্তিসঙ্গতভাবে বড় প্রশিক্ষণের সেটগুলির সাথে Type Aএবং Type Bবস্তুর মধ্যে পার্থক্য করবে , যার Type Aঅর্ধেক এবং অর্ধেক Type B। ডেটাসেটে 100 টি অবিচ্ছিন্ন বৈশিষ্ট্য রয়েছে যা কোষের শারীরিক বৈশিষ্ট্য (আকার, গড় ব্যাসার্ধ ইত্যাদি) বিশদ বিবরণ করে। জোড়াওয়ালা স্ক্যাটারপ্লট এবং ঘনত্ব প্লটের ডেটা ভিজ্যুয়ালাইজ করা আমাদেরকে বলে যে অনেকগুলি বৈশিষ্ট্যে ক্যান্সার এবং সাধারণ কোষগুলির বিতরণে উল্লেখযোগ্য ওভারল্যাপ রয়েছে।

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

আমরা চেষ্টা করতে এবং করতে চাই তার মধ্যে একটি হ'ল এক ধরণের "নিশ্চিত স্কোর" তৈরি করা যা আমাদের অবজেক্টগুলির শ্রেণিবিন্যাস সম্পর্কে কতটা আত্মবিশ্বাসী তা মাপবে। আমরা জানি যে আমাদের ক্লাসিফায়ার কখনো 100% নির্ভুল হবে, এবং এমনকি যদি ভবিষ্যৎবাণী মধ্যে উচ্চ নির্ভুলতা অর্জিত হয়, আমরা প্রশিক্ষিত প্রযুক্তিবিদ চান শনাক্ত করতে যা বস্তু সত্যিই হয় Type Aএবং Type B। সুতরাং Type Aবা এর আপোষহীন পূর্বাভাস প্রদানের পরিবর্তে Type Bআমরা প্রতিটি বস্তুর জন্য এমন একটি স্কোর উপস্থাপন করতে চাই যা কোনও বস্তু কীভাবে Aবা কীভাবে তা বর্ণনা করে B। উদাহরণস্বরূপ, যদি আমরা 0 থেকে 10 এর মধ্যে একটি স্কোর তৈরি করি তবে 0 এর স্কোর বলতে পারে যে কোনও বস্তুর সাথে খুব মিল রয়েছে Type A, যখন 10 এর স্কোর ইঙ্গিত করবে যে কোনও অবজেক্টটি খুব পছন্দ করে Type B

আমি ভাবছিলাম যে এ জাতীয় স্কোর তৈরি করতে আমি এলোমেলো বনের মধ্যে ভোটগুলি ব্যবহার করতে পারি। যেহেতু এলোমেলো বনাঞ্চলে শ্রেণিবিন্যাস উত্পাদিত গাছের বনাঞ্চলে সংখ্যাগরিষ্ঠ ভোটদানের মাধ্যমে করা হয়, তাই আমি ধরে নেব যে 100% গাছের Type Aদ্বারা ভোট দেওয়া বস্তুগুলি যে জিনিসগুলি ভোট দিয়েছে, তার চেয়ে আলাদা হবে, বলুন, 51% গাছ হতে Type A

বর্তমানে, আমি কোনও সামগ্রীর Type Aবা হিসাবে শ্রেণীবদ্ধ করার জন্য প্রাপ্ত ভোটের অনুপাতের জন্য একটি স্বেচ্ছাসেবী প্রান্তিক স্থাপনার চেষ্টা করেছি Type Bএবং প্রান্তিকরটি পাস না হলে এটি হিসাবে শ্রেণিবদ্ধ করা হবে Uncertain। উদাহরণস্বরূপ, যদি আমি এই শর্তটি চাপিয়ে দিই যে ৮০% বা তার বেশি গাছ অবশ্যই শ্রেণিবদ্ধকরণের সিদ্ধান্ত নেওয়ার বিষয়ে একমত হতে হবে তবে আমি দেখতে পাচ্ছি যে 99% শ্রেণির পূর্বাভাস সঠিক, তবে প্রায় 40% অবজেক্ট হিসাবে বিন্যাস করা হয়েছে Uncertain

তাহলে কি ভবিষ্যদ্বাণীগুলির সুনির্দিষ্টতা স্কোর করার জন্য ভোটদানের তথ্যের সদ্ব্যবহার করা বুদ্ধিমান হবে? নাকি আমি আমার চিন্তাভাবনা নিয়ে ভুল পথে যাচ্ছি?


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

@bgbg আমি একটি প্রশিক্ষণ / বৈধতা / পরীক্ষা স্কিম ব্যবহার করছি, 70/20/10 বিভক্তিতে। আমি 70% ডেটা সহ একটি মডেলকে প্রশিক্ষণ দিচ্ছি এবং 20% এর বৈধতা সেটের ফলাফলের ভিত্তিতে পরামিতিগুলি টিউন করছি। আমি এই দুটি সেটটিতে প্যারামিটারগুলি টিউন করার পরে, আমি 10% পরীক্ষার সেটটিতে মডেলটি মূল্যায়ন করি। যদিও ব্রেইম্যান দাবি করেছেন যে ওওবি ত্রুটি হারে নির্মিত একটি পৃথক পরীক্ষার সেটকে অপ্রয়োজনীয় করে তোলে, আমি তার দাবির বিষয়ে সতর্ক।
আইলম

উত্তর:


19

এটি নিখুঁতভাবে উপলব্ধি করে, এবং এলোমেলো বনের সমস্ত বাস্তবায়ন যা আমি নিয়ে কাজ করেছি (যেমন ম্যাটল্যাব এর) সম্ভবত এটি করার জন্য সম্ভাব্য আউটপুট সরবরাহ করে।

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

সম্পাদনা করুন: সবেমাত্র আর এ নজরে এসেছে, এবং পূর্বাভাস। রেন্ডমফোরস্ট আউটপুট সম্ভাব্যতাও করে।


1
ধন্যবাদ তোমার উত্তরের জন্য. আপনি ঠিক বলেছেন, আমি একটি স্ক্রিপ্ট তৈরি করেছি যা প্রতিটি বস্তুর প্রাপ্ত ভোটের অনুপাতের ফলাফল দেয়। আমি ভাবছি যদিও এই ভোটগুলি কতটা কার্যকর হবে? আপনার প্রস্তাবিত পরবর্তী পদক্ষেপগুলি কি আছে? আরএফ-র অতিরিক্ত রানের মাধ্যমে ভোটদানের অনুপাতের পরিবর্তনশীলতার দিকে আমার নজর দেওয়া উচিত? আমি বুঝতে পারি যে আরএফ এর কাছে স্টোকাস্টিক উপাদান রয়েছে। আমার এমন কোন ডায়াগনস্টিক আছে যা আমার দিকে নজর দেওয়া উচিত?
আইলম

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

@mbq দুঃখিত, আপনি এর দ্বারা কী বোঝাতে চেয়েছেন তা পরিষ্কার করে বলতে পারেন? আমি আপনার পরামর্শে আগ্রহী এবং আগামীকাল এটি অনুসরণ করব!
ialm

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

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

17

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

library(caret)
library(PerformanceAnalytics)
data(iris)

#Make a yes/no dataset
Dataset <- iris
Dataset$Class <- ifelse(Dataset$Species=='versicolor','Yes','No')
Dataset$Class  <- as.factor(Dataset$Class)
Dataset$Species<- NULL
chart.Correlation(Dataset[-5], col= Dataset$Class)

#Fit an RF model
model <- train(Class~.,Dataset,
                method='rf',TuneLength=3,
                trControl=trainControl(
                    method='cv',number=10,
                    classProbs = TRUE))
model$results

#Predict class probabilities (i.e. 'certainty' scores)
pred <- predict(model,iris,"prob")
head(pred)

ক্যারেট সম্পর্কে দুর্দান্ত জিনিসটি এটি বিভিন্ন ভবিষ্যদ্বাণীপূর্ণ মডেলের তুলনা করা খুব সহজ করে তোলে। উদাহরণস্বরূপ, যদি আপনি একটি SVM চেষ্টা করতে চান, আপনি টেক্সট প্রতিস্থাপন করতে পারেন method='rf'সঙ্গে method='svmLinear'বা method='svmRadial'. আপনি উপর ভিত্তি করে আপনার টিউনিং পরামিতি নির্বাচন করতে পারবেন AUC trainControl প্যারামিটার করার জন্য একটি লাইন যোগ করে বদলে সঠিকতা: summaryFunction=twoClassSummary

চূড়ান্তভাবে, পারফরম্যান্স অ্যানালিটিক্স প্যাকেজ থেকে সেখানে কিছুটা কোড রয়েছে chart.Correlation(Dataset[-5], col= Dataset$Class), যা মডেলটি তৈরি করার প্রয়োজন হয় না, তবে আপনার ডেটাসেটটির একটি দুর্দান্ত দৃশ্যধারণ সরবরাহ করে।


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

@ জোনাথন এটি শুনে খুশি! এটি একটি দুর্দান্ত প্যাকেজ। modelLookup()কী কী সম্ভব তার তালিকার জন্য কমান্ডটি ব্যবহার করে দেখুন ।
জাচ

probধরণ predictব্যবহার করে পাওয়া যায় randomForest(সহ বা মত অন্যান্য প্যাকেজ ব্যবহার না করে আপনার মডেল প্রশিক্ষণের caretবা PerformanceAnalytics)।
হ্যাক-আর

2

আর এ র্যান্ডমফোরস্ট প্যাকেজটি আপনার বিশ্লেষণ সম্পর্কে আরও বিশদে যাওয়ার জন্য একটি দুর্দান্ত শালীন প্যাকেজ। এটি আপনাকে ভোট সরবরাহ করে (হয় ভগ্নাংশ বা কাঁচা গণনা হিসাবে) এবং এটি টিউনিং এবং ক্রস বৈধকরণের জন্য সক্ষমতা নিয়ে নির্মিত এবং এমনকি আপনার বৈশিষ্ট্যগুলি সম্পর্কে আরও তথ্য দিতে পারে (যদি আপনি জানতে চান যে আপনার 100 এর মধ্যে কোনটি রয়েছে) বিশ্লেষণে সবচেয়ে গুরুত্বপূর্ণ)।

আপনি যদি ইতিমধ্যে সেই প্যাকেজটি ব্যবহার করে থাকেন তবে সম্ভবত আপনি এটিকে আরও ঘনিষ্ঠ রূপ দিতে চান এবং যদি আপনি না হন তবে সম্ভবত এটি পরীক্ষা করে দেখুন।

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