সাধারণত আমরা সিদ্ধান্ত গাছের মতো বিযুক্ত শ্রেণিবদ্ধের জন্য কোনও আরওসি বক্ররেখা আঁকতে পারি না। আমি কি সঠিক? Dtree এর জন্য কোনও আরওসি বক্ররেখা আঁকানোর কোনও উপায় আছে কি?
সাধারণত আমরা সিদ্ধান্ত গাছের মতো বিযুক্ত শ্রেণিবদ্ধের জন্য কোনও আরওসি বক্ররেখা আঁকতে পারি না। আমি কি সঠিক? Dtree এর জন্য কোনও আরওসি বক্ররেখা আঁকানোর কোনও উপায় আছে কি?
উত্তর:
যদি আপনার শ্রেণিবদ্ধকারী স্কোর ছাড়াই কেবলমাত্র ফ্যাক্টর ফলাফল (কেবলমাত্র লেবেল) উত্পাদন করে তবে আপনি এখনও একটি আরওসি বক্ররেখা আঁকতে পারেন। তবে এই আরওসি বক্ররেখা কেবল একটি পয়েন্ট। আরওসি স্থান বিবেচনা করে, এই পয়েন্টগুলি হ'ল , যেখানে - মিথ্যা ধনাত্মক হার এবং - সত্য ধনাত্মক হার।
উইকিপিডিয়া পৃষ্ঠায় এটি কীভাবে গণনা করা হয় সে সম্পর্কে আরও দেখুন ।
আপনি আপনার বিন্দুতে থেকে একটি লাইন আঁকতে এবং সেখান থেকে একটি আরওসি বক্ররেখার মতো দেখতে এই বিন্দুটি প্রসারিত করতে পারেন । সুতরাং আপনি একটি বক্ররেখা আছে।
তবে কোনও সিদ্ধান্তের জন্য ট্রি একটি লেবেল আউটপুট থেকে একটি সংখ্যাসূচক আউটপুট পর্যন্ত প্রসারিত করা সহজ। নোট করুন যে আপনি যখন সিদ্ধান্তের গাছের সাথে পূর্বাভাস দেন তখন আপনি মূল নোড থেকে নীচের লিফ নোডে যান, যেখানে আপনি সংখ্যাগরিষ্ঠ শ্রেণীর সাথে পূর্বাভাস দেন। যদি সেই শ্রেণীর পরিবর্তে আপনি সেই লিফ নোডে ক্লাসের অনুপাত ফিরিয়ে দেন তবে আপনার প্রতিটি শ্রেণির জন্য একটি স্কোর থাকবে। মনে করুন যে আপনার দুটি শ্রেণি রয়েছে এবং , এবং আপনার লিফ নোডে আপনার with সহ 10 উদাহরণ এবং with সহ 5 উদাহরণ রয়েছে , আপনি স্কোরগুলির একটি ভেক্টর ফিরে আসতে পারেন :। এটি সত্যিই সঠিক স্কোরিং নিয়ম (এটি সম্ভাবনার পক্ষে সেরা অনুমানকারী নয়) নোট করে রাখুন এটি খেয়াল রাখুন, তবে আমি বিশ্বাস করি না কিছুই এর চেয়ে ভাল and
সিদ্ধান্তের গাছের জন্য, ক্লাসগুলি এখনও কিছুটা নিশ্চিততার সাথে পূর্বাভাস দেওয়া হয়। উত্তরটি ইতিমধ্যে @rapaio দিয়ে গেছে তবে আমি এটিতে কিছুটা প্রসারিত করব।
নিম্নলিখিত সিদ্ধান্ত গাছ কল্পনা (এটা এই একটি সামান্য বিট পরিবর্তিত সংস্করণ এক )
প্রতিটি নোডে কেবল সংখ্যাগরিষ্ঠ শ্রেণির লেবেলই থাকে না, অন্যরাও সেই পাতায় কী শেষ হয়েছিল তাই আমরা সেই পাতায় নিশ্চিততার ডিগ্রি নির্ধারণ করতে পারি যেখানে আমরা লেবেলের পূর্বাভাস দিয়েছি।
উদাহরণস্বরূপ, নিম্নলিখিত ডেটা বিবেচনা করুন
আমরা এটি চালাই, এবং আউটপুটকে স্কোরগুলি বরাদ্দ করি, প্রকৃত লেবেলগুলিতে নয়। এটির সাহায্যে আমরা এখানে প্রস্তাবিত মতো একটি আরওসি বক্ররেখা আঁকতে পারি
এটি আপনার প্রান্তিক অংশটি টিউনহোল্ড করার জন্য এটি ব্যবহার করার পক্ষে কিছুটা অর্থপূর্ণ নয় (যেহেতু অবশ্যই, সিদ্ধান্তের গাছের প্রান্তিকের মতো কিছু নেই), তবে এটি এখনও এটিউকে গণনা করতে ব্যবহার করা যেতে পারে, যা এই ক্ষেত্রে 0.92
আর কোড এখানে ব্যবহৃত:
outlook = c('rain', 'overcast', 'rain', 'sunny', 'rain',
'rain', 'sunny', 'overcast', 'overcast', 'overcast',
'sunny', 'sunny', 'rain', 'rain', 'overcast',
'sunny', 'overcast', 'overcast', 'sunny', 'sunny',
'sunny', 'overcast')
humidity = c(79, 74, 80, 60, 65, 79, 60, 74, 77, 80,
71, 70, 80, 65, 70, 56, 80, 70, 56, 70,
71, 77)
windy = c(T, T, F, T, F, T, T, T, T, F, T, F, F, F, T, T, F, T, T, F, T, T)
play = c(F, F, T, F, T, F, F, T, T, T, F, F, T, T, T, T, T, T, F, T, F, T)
game = data.frame(outlook, humidity, windy, play)
game$score = NA
attach(game)
game$score[outlook == 'sunny' & humidity <= 70] = 5/8
game$score[outlook == 'sunny' & humidity > 70] = 1 - 3/4
game$score[outlook == 'overcast'] = 4/5
game$score[outlook == 'rain' & windy == T] = 1 - 2/2
game$score[outlook == 'rain' & windy == F] = 3/3
detach(game)
game$predict = game$score >= 0.5
game$correct = game$predict == game$play
library(ROCR)
pred = prediction(game$score, game$play)
roc = performance(pred, measure="tpr", x.measure="fpr")
plot(roc, col="orange", lwd=2)
lines(x=c(0, 1), y=c(0, 1), col="red", lwd=2)
auc = performance(pred, 'auc')
slot(auc, 'y.values')